testMermaid

103 阅读5分钟

工作流2对接指引

[toc]


相关文档


简要开发步骤

  1. 产品确认对接业务所需要的整体审批流程,及模板流转不同分支所需的变量,服务中心配置变量信息
  2. 业务端集成工作流 jar 包,自定义审批串,配置的回调接口编写和自测
  3. 完善配置事项类型,事项模板,事项规则
  4. 前端接入工作流相关菜单项和通用控件

开发步骤详细介绍

步骤一:确认对接业务类型配置

产品确认当前事项类型所需要的整体审批流程
  • 自行组织默认审批流程

    graph LR
    innerApprove([内部审批]) --> |内部审批完成后|domain3Approve[[自定义审批节点列表]]--> |自定义审批节点完成后|platFormApprove([平台审批])
    
  • 委托采购默认审批流程

    graph LR
    innerApprove([代理审批]) --> domainApprove[[自定义审批节点列表]] --> purchaseUnitApprove([采购人审批]) --> domain3Approve[[自定义审批节点列表]]--> platFormApprove([平台审批])
    
业务归属模块:
graph TB
交易控制台 --> 采购人系统
交易控制台 --> 供应商系统
交易控制台 --> 开标系统
交易控制台 --> 评标系统
交易控制台 --> 合同系统
交易控制台 --> 其余子系统
事项类型名称:
事项变量列表:

配置模板可以使用的变量

步骤二:

  1. 业务端确定审批事项类型 code 码(eg:招标公告—— tenderNotice),与产品确认该事项类型的整个审批流程

  2. 业务端集成 workflow2-client,自行组织审批串(实现 SaasApproveChain类,各阶段业务code一旦被赋值,默认创建当前阶段审批节点)

  3. 服务中心配置需接入的审批事项类型(确认当前事项需审批的阶段,现有支持阶段:内部审批,采购人审批,平台审批),及对应的配置信息

    • 基本信息关键字段说明

      • code码:确定后不可更改(中途变更涉及到业务记录、审批记录、消息提醒等历史记录的变更)
      • 归属模块:该事项类型所属的子系统。新创建的消息提醒,及审批所产生的待办、已办、我的发起记录(历史记录和新创建的记录)随归属模块变更
    • 变量设置

      用途说明:设置该事项类型的审批模板时,提供可使用的条件变量。用于提交审批后,可按照不同的业务参数,流转不同的分支进行审批。(需产品定义模板中可包含哪些条件参数)

      注意事项: 自定义变量工作流可提供的参数只有租户id 和企业id 两个参数,任意变量的唯一索引频繁变化的不适用于作为变量(旧的审批模板正在使用中,有正在进行中的审批实例。创建了新的模板,引用了新的变量,需要考虑已经提交的实例对应的变量唯一索引信息是否会随着变量的修改而被改动,改动后,)

    • 自定义角色设置

      用途说明:工作流2依照组织架构信息,初始化共用的几种角色信息。若业务端所需的角色信息与业务相关,需自行定义角色,发起审批时,可依照 自定义审批角色查询地址 进行查询。

    • 回调设置(自行测试调用是否成功)

      • 查询地址

        • 获取变量回调地址:配置的审批模板中的流转条件参数
        • 校验签名地址:前端提交审批时,查询业务端是否有自定义验证(可选项)
        • 自定义审批角色查询地址:提交审批时,查询业务端对应业务的自定义角色信息
      • 回调地址

        • 实例状态回调地址:实时通知业务系统,当前审批阶段所属实例状态1信息

        • 任务状态回调地址:实时通知业务系统,当前审批阶段所属实例所属任务状态2信息

  4. 业务端自行提供是否需要审批接口(查询自定义审批串中是否有审批节点需要审批)

  5. 提交审批操作可由前端通过 Http 发起,亦可由业务端通过 RPC 发起。在发起审批时,需依照当前业务在模板中设置的条件来实现按条件流转,因此提交审批需确定业务id,用于获取当前租户,事项类型下对应的参数信息,也就是提交审批前,业务已进行过保存操作。

  6. 当前业务涉及的业务状态需业务端自行记录,工作流2因网络问题可能造成消息重复推送问题,业务端对应的业务状态需进行 幂等处理3

任务消息回调:获取任务相关信息,做任务相关的操作。eg:推送oa待办

实例消息回调:获取实例相关信息,修改业务状态,调用busFlowService 中的publishEvent,推送 ApproveEvent 推送触发下一个审批节点。

问题汇总

  • 前端和后端的对接,接口调用时序问题
  • 点击提交审批按钮触发的两个操作,①业务端的保存 ②业务保存成功后的提交审批;实现跨度太长
    • 业务端状态转移问题,高级态不能向下转移
  • 查询是否需要审批,多个阶段审批的时候,业务端和工作流 RPC 调用次数问题,可能网络超时
  • 子系统对接工作流是否能直接出通用接口,涉及点:前端关于工作流的菜单项是否能出通用控件
    • 提交审批

      • 业务保存(业务自定义)
      • 工作流提交(业务id,事项类型,自定义审批人信息,模板id)
    • 待办,已办,抄送,我的发起列表,涉及工作流2的操作一致

      • 详情页不同(业务自定义)

配置事项类型

任务创建,加签,转审逻辑

任务类型

  • 普通任务
    • sourceTaskId:自己,sourceType:general,addSignType::no,effective:true
  • 加签任务
    • 前加签
    • 后加签
  • 转审任务
创建任务类型/状态sourceTaskIdsourceTypeaddSignTypeeffectivenewInstance
普通任务self.idgeneralnotruetrue(新对象审批中)
前加签previousTask.idaddSignprefalsetrue(旧对象已加签,新对象审批中)
后加签previousTask.sourceTask.idaddSignafterpreviousTask.sourceTask.effectivetrue(旧对象审批通过,新对象审批中)
转审previousTask.idtransfernopreviousTask.effectivetrue(旧对象已转审,新对象审批中)
完成任务/状态effective
普通任务
前加签
后加签
转审

normal -> normal -> normal-> end

normal ->preAdd1 -> preAdd2 -> preAdd3 ->

Footnotes

  1. 开始-start、结束-end、撤回-callback、驳回-reject

  2. 创建-create、结束-end

  3. 同一审批流程中,高级状态不能直接变更为低级状态