臭名昭著aTrust隔离计划1.臭名昭著aTrust隔离计划2.VPN原理与aTrust隔离网络实践3.docker-easyconnect到底做了什么4.TUN(tunnel-隧道-虚拟网卡)模式
个人项目
personal(个人展示)GitHub Actions 自动部署个人展示项目
基于Quartz搭建的个人博客1.Quartz个人博客使用教程2.使用 rsync 增量部署 Quartz 博客3.使用 GitHub Actions 自动部署 Quartz 博客5.域名绑定6.CDN加速Obsidian、双向链接与知识图谱
旅行
行程攻略青岛三日游行程攻略
前端
NginxNginx配置与反向代理入门
Nodenpm与npx的区别
中华财险-公司项目
对外接口文档
基础数据码表对外接口(仅支持rpc调用)业务码表对外接口应用主数据对外接口
基础运营查询版本更新日志详情消息中心对外接口站内信对外接口站内信模板配置手册
权限中心权限中心对外接口文档(最新)权限中心对外接口文档前端ACL-CORE FACADE依赖版本
审计中心审计中心对外接口文档audit-center-facade版本
审批中心工作流迁审批流现状工作流迁审批流API能力替换方案老审批流接口文档审批中心接口文档审批中心业务回调FAQ
账号中心内部系统对接单点登录内部系统对接认证中心三方网页应用登录授权账号中心对外接口文档前端账号中心RPC接口文档账户变更对外广播消息文档账户中心对外接口HRMS外部员工变更广播消息文档HRMS外部员工对外接口
组织员工岗位🔥机构映射SDK接口文档员工岗位变更通知说明组织机构管营一体概念与用法组织员工对外广播消息文档组织员工岗位对外接口文档组织员工岗位对外接口文档前端组织员工岗位数据模型组织员工主数据业务场景案例organization-facade版本
hrms(大型人力资源外包管理系统)
项目架构说明HRMS Maven模块与依赖说明
项目说明0.流程中心模块0.组织模块说明1.业务线模块2.计划模块3.项目模块4.协议模块5.供应商模块6.合约域模块7.外包人员模块*核心:外包人员生命周期
项目运维外包人员项目编制差异排查与修复2.HRMS相关问题排查4.修改externalId(externalId和accountId不一致)
需求-系分
1.内部转外包0723外包人员关联历史内部账号系分新增外包人员关联历史账号内容(紧急0723上线)需求
2.工作岗位0820工作岗位0820需求工作岗位0820需求-系分
3.用工模式调整0917内部人员转外包用工系统需求2内部人员转外包用工系统需求-系分
sso(账号中心-单点登录)
项目架构说明aboss-sso项目架构入门AOP统一日志打印链路Maven多模块项目高级知识OAuth2.0
项目说明1.SSO-OAuth2.0与IDaaS登录流程2.外部账号创建流水号并发问题分析
AI
使用说明
第三方插件&技能简介Archify使用与安装指南Ponytail使用指南
CodexCodex CLI与IDE区别及使用指南Codex Hook单独配置与提交通知Codex MCP安装与使用指南Codex第三方插件安装与使用指南
Agent开发1.LLM、Token、上下文窗口与模型参数2.大模型 API、请求参数与响应结构3.Spring AI ChatClient4.Prompt、System Prompt、Prompt 模板6.结构化输出、JSON Schema7.SSE 流式响应8.会话 ID、聊天记录、Redis9.超时、重试、限流、降级10.完成可运行聊天接口
GitGit常用命令与Obsidian推送排查
Java
面试题Java基础与集合面试题
AtomicInteger原子计数与并发安全ConcurrentHashMap并发安全与计数Java线程、线程池与Future
python
基础Python基础语法
HTTPXHRMS员工详情接口调用(Python HTTPX)

https://cic_irc.yuque.com/tyl581/ggwv9w/ps05h854372kthwe

1. 业务接入姿势


1.1. 不使用运营支撑提供的审批页面以及审批组件能力

启动流程(start)

—> 业务保存好启动后的流程实例ID

—> 查询流程正在运行的任务(activity)

—>同意(agree),拒绝(reject), 转交(redirect),退回(back),撤销(withdraw)

—> 查询流程正在运行的任务(activity) ;

—>同意(agree),拒绝(reject), 转交(redirect),退回(back),撤销(withdraw)

—> 查询流程正在运行的任务(activity) ;

—> loop

***** 业务接入使用中,每进行一次任务的操作就进行一次 activity 接口的触发获取正在运行的任务,并不是依赖MQ 等回调通知进行后续任务的获取(会存在任务数据缺失情况)。*******

1.2. 使用运营支撑提供的审批页面以及审批组件能力
  1. 启动流程(start)。
  2. 监听MQ回调。
  3. 前端接入审批组件,如不使用默认跳转运营支撑默认的审批页面。

2. 运营支撑审批组件如何使用接入


运营支撑已经将审批的相关能力封装成 前端组件 供接入方系统使用,也就是说 接入方可以很轻量以及很方便的将 审批套件 嵌入到自己的 审批页面 中,无需再次进行开发对接,审批套件见下图,包含审批按钮 审批轨迹,审批的基本信息。

2.1. 接入:
  1. 审批流设计阶段配置自己业务的详情页,审批页 或者流程启动通过 businessProcessUrl 参数指定审批详情页面。
  2. 前端将接入审批组件接入到自己业务的审批页或者详情页中(涉及前端开发接入,比较简单)。
  3. 启动完成之后,通过个人中心-我的审批 进入个人审批中心进行审批操作。
  4. 点击操作会跳转到审批配置的业务详情页或审批页(没有配置则会跳转默认的审批详情页),组件会展示出来供业务操作(组件展示出来需要第2步前端对接完成)。
  5. 审批中心在跳转过程中,会自动将审批的业务关键id 信息 flowInstanceId jobId 附带到配置的页面 url 地址上。
2.2. 接入实践

3. 业务如何触发审批人规则为非人工的任务


使用固定账号为system 的账号进行审批 如下:

FlowAgreeDTO flowAgreeDTO = new FlowAgreeDTO();
//任务ID
flowAgreeDTO.setJobId("J1244114151241");
//账号固定为system 小写
flowAgreeDTO.setOperator("system");
//agree
flowInstanceRpcFacade.agree(flowAgreeDTO);

4. 审批人规则为 成员变量 ,业务如何使用


  1. 在流程启动的或者审批操作中,传入变量代码
FlowInstanceStartBO flowInstanceStartBO = new FlowInstanceStartBO();
flowInstanceStartBO.setCreator("1008611");
Map<String,Object> variable = new HashMap();
//审批人工号
List<String> accIds = new ArrayList()
accIds.add("10086110")
variable.put("变量代码",accIds);
flowInstanceStartBO.setVariable(variable);
flowInstanceRpcFacade.start(flowInstanceStartBO);

2 . 运行态传入

查看审批中心接口文档 成员变量指定人 API

5. 审批人规则为找人策略,业务如何使用接入


  1. 在流程启动的或者审批操作中,传入约定好的 变量key 信息
FlowInstanceStartBO flowInstanceStartBO = new FlowInstanceStartBO();
flowInstanceStartBO.setCreator("1008611");
Map<String,Object> variable = new HashMap();
//找人策略信息
DynamicsWorkGroupDTO strategyGroup = ProcessHelper.strategyGroup(Arrays.asList("机构编码,可以为空"), Arrays.asList("工作组标签,可以为空"));
variable.put( ProcessHelper.genProcessVariableKey("流程节点的id或者节点名字,二选一"),  strategyGroup);
flowInstanceStartBO.setVariable(variable);
flowInstanceRpcFacade.start(flowInstanceStartBO);

6. 审批中心幂等


  1. 在流程启动中,传入puid 业务唯一id (见审批中心接口文档 start),同一个puid 的流程只会启动一次,只会有一个流程实例id

puid 是业务的唯一编码,起到幂等的作用,也就是说同一个puid 无论启动多少次返回的都是第一次启动的流程实例,如果想要实现一个业务编码启动多次的效果,建议加上 PUID.customCode 随机字段。

FlowInstanceStartBO flowInstanceStartBO = new FlowInstanceStartBO();
//业务PUID
flowInstanceStartBO.setPuid(PUID.builder().appName("XXXXX自己的应用名字,自己的业务含义随便起").businessNum("R0314112133自己的业务编号哪怕是时间戳").build());
flowInstanceStartBO.setCreator("10131314231");
flowInstanceStartBO.setDigest("digest");
flowInstanceStartBO.setFlowCode("M01008131自己的流程编码");
flowInstanceStartBO.setVariable(new JSONObject());
flowInstanceStartBO.setFlowInstanceName("自己业务的流程名字");
flowInstanceFacade.start(flowInstanceStartBO);

2.在进行任务操作时候,传入业务操作的 幂等id (见审批中心接口文档 ),同一个 幂等id 操作下的结果都是一致的。

       FlowAgreeDTO flowAgreeDTO = new FlowAgreeDTO();
        flowAgreeDTO.setOperator("131241241");
        flowAgreeDTO.setJobId("JB20234141526765785674563423");
        flowAgreeDTO.setIdempotentId("1131自己的幂等id");
        flowAgreeDTO.setComment("comment");
        flowInstanceFacade.agree(flowAgreeDTO);

7. MQ 回调的 puid 如何拿取到 流程启动传入的业务编号


puid 是由 应用名字 + 业务编码 + 自定义编码 中间加上分隔符 ”_” 组成的,这三部分都是由调用方自定义传入进来的,可以通过分割_的方式获取到自己业务传进来的这三部分信息。

8. 关于变量范围


  1. 流程启动传入的变量统一为全局变量,全局变量作用于流程生命周期的开始到结束,在后续条件变量的都可以使用到。
  2. 同意 转交 退回 传入的变量为局部变量,局部变量只作用于一个执行范围, 如下,流程任务能否达到我的第三个审批或者我的第四个审批 是由我的第二个审批变量 以及全局变量决定的,我的第一个审批变量不会影响到三个审批以及我的第四个审批。
  3. 局部变量 > 全局变量,如果流程上的变量判断清晰且不混乱,建议使用全局变量