路由表单工作流

路由表单工作流,需要在生成器中进行部分配置,然后生成与每个流程相关的前后端业务代码。这里需要重点说明的是,路由表单工作流的流程,在生成器中只能进行部分配置,与流程任务审批人、候选人和候选组等相关的配置,必须在生成后工程的流程编辑器中继续配置,因为用户、部门、岗位和角色等数据属于业务数据,在生成器的流程图中无法指定。最后需要说明的是,流程图中流程任务的二次配置,对生成的代码没有任何影响。

创建流程

在创建「路由表单工作流」之前,我们需要先创建该流程所需的「数据源」,以便在后续的流程配置中使用。该配置将生成与当前流程相关的后台代码 (Controller/Service/ServiceImpl/Dao/Mapper/Model/Vo/Dto)。

  • 为已经导入的服务表配置「工作流能力」。

  • 为业务表设置记录流程状态的同步字段。下图中的「流程状态字段」是粗粒度的记录,主要记录流程自身的处理状态,如:保存草稿、已提交、已完成和已终止等。而「流程审批状态字段」则记录当前流程中最新审批任务的操作状态,如:同意、拒绝、驳回、自由跳等。相对而言会更加精确。

  • 为上一步导入的服务表创建数据源。下图所示的数据源 TestFlowSubmit,就是基于上一步导入到该服务的数据表 zz_test_flow_submit。

在应用管理中创建流程,该流程需要使用上一步创建的数据源,同时流程所用的「路由表单」也是在这里创建。

流程基础信息配置

  • 流程名称,中文显示名称。
  • 流程标识,等同于流程定义标识 (英文),必须全工程唯一,创建后不能修改。
  • 流程数据源,为流程提供后台接口代码,可使用前面配置的支持「工作流能力」的数据源。
  • 工单编码规则,工单表 (zz_flow_work_order) 工单编码字段 (work_order_code) 的计算规则。
  • 流程数据同步,在流程「正常审批」完成后,可将流程中使用的业务表数据,同步业务发布表中,从而实现「审批中」和「审批通过后」数据的物理隔离。

级联删除业务数据,在删除流程实例时,是否级联删除当前实例关联的业务主表数据,以及与主表关联的从表数据。具体细节可参考 流程实例章节的级联删除业务数据小节。

流程变量配置

  • 下图红框圈住的是两个内置流程变量,不能修改。
  • 绑定字段,在目前所支持的版本中,流程变量必须与「表字段」绑定。数据源主表和所有关联表字段均可选择。
  • 变量名称,变量的中文显示名。
  • 变量标识,流程内该值必须唯一 (英文)。流程启动后,会作为流程变量名,在流程实例中传递。
  • 下图所示变量 totalAmount,会在后面的流程图中使用,比如在条件判断的表达式中。

流程审批状态配置

在前面的步骤中,我们介绍了如何在生成器中配置「流程状态字段」和「流程审批状态字段」。这里我们介绍一下如何在生成器的流程编辑器中使用他们。

  • 流程状态数据,会自动同步到流程工单表 (zz_flow_work_order) 的 flow_status 和 latest_approval_status 两个固定字段中。
  • 「流程状态字段』。流程模块,会根据配置自动完成数据同步,因此无需再进行额外的配置了。
  • 「流程审批状态字段」。通常情况下,我们会为每个流程任务的「操作按钮」配置一个流程更新状态值。当按钮触发后,对应的状态标识值会同步更新到业务表的指定字段中。因此,我们可以根据业务的实际需求,为流程任务的执行状态,设置不同的「状态标识值」,以便在业务代码中可以根据不同的审批状态进行查询。至于如何与操作按钮绑定,我们会在下面的步骤中给出详细的说明。这里所述的配置,在生成后工程的流程编辑器中也可以进行编辑。

流程表单配置

仅下图红框圈住的两类表单可以绑定到工作流。流程表单的详细配置可参考操作指南 PC 端工作流表单 和 移动端工作流表单 配置示例章节。

不同类别的流程路由表单应用场景不同,生成的代码也不同,具体差别见如下表格。

流程页面 流程关联编辑页面 流程多对多添加页面 流程工单列表页面
功能范围 流程任务页面 编辑一对多关联从表数据的二级页面 添加多对多关联从表数据的二级页面 流程工单管理页面
数据范围 编辑和显示主表和关联表数据 编辑和显示一对多从表数据 添加多对多关联从表列表数据 工单表和主表数据显示
用于流程录入页面 可以 不可以 不可以 不可以
  • 为流程任务添加表单,可绑定的表单必须是在前面流程「基础信息」配置中,与指定「流程数据源」关联的表单。

  • 需要将所有与流程任务节点关联的表单,都绑定到当前流程。

  • 如业务数据是从流程工单发起,这里必须绑定「PC 端流程工单列表」类型的表单,如支持移动端,还需绑定「移动端流程工单列表」类型的表单,具体见下图。

    流程图编辑

路由表单工作流,开始是在代码生成器的流程编辑器中进行配置的。由于用户和组织机构等业务数据,在生成器中无法获悉,因此生成器中的流程编辑器无法为流程配置与审批用户和审批组织机构相关的信息。此部分配置,需要在生成后工程的流程编辑器中继续配置。

  • 为指定的流程任务选择表单,同时选择该表单是否「允许编辑」。在目前的版本中,路由表单工作流没有支持精确到组件的读写控制,只是控制到表单级别。如果没有打开 「允许编辑」开关,表单内所有组件均为只读状态。
    以下几步对于流程录入任务的配置非常非常重要,如配置有误,流程发起时将无法加载录入表单页面。

  • 在下图中,我们选择的流程任务是开始节点之后的「录入任务」,通常而言,录入任务关联的表单都是「允许编辑」的。

  • 对于录入任务而言,如果是从流程工单列表页面发起流程,那么「录入任务」的审批人必须为「流程发起人」。在生成器的流程编辑器中,是无法配置流程审批人的,因此这一步配置要在生成后工程的流程编辑器中进行配置,具体见下图。

  • 对于有些流程,业务数据在业务表单中已经录入完毕,而流程的发起则是在业务列表页面,通过点击业务数据的「审批」按钮发起审批流程。对于此种业务场景,第一个流程任务所对应的就是审批表单,而非上面介绍的录入表单了。
  • 如下图所示,为指定的流程任务添加「操作按钮」,在与该审批任务关联的表单中,会显示这里添加的所有「操作按钮」。
  • 按钮类型,选择一种我们内置的按钮类型即可,类型不同,功能不同。对于内置的按钮类型,也会被当成任务变量处理,并在流程中传递。比如「同意」类型的按钮,会使用内置变量 operationType,变量值为 agree。
  • 按钮名称,按钮在表单页面上的显示名。
  • 更新工单状态,下拉框中的候选项,就是在前几步中配置的「流程状态标识值」。当该按钮被触发后,就会根据该值更新工单表的 latest_approval_status 字段。以便于工单业务数据的查询和后期统计分析。如果选择「不更新」选项,就不会更新该字段值。

  • 流程有任何修改,都要点击左上角的「保存流程」按钮。
  • 点击「预览」→「预览XML」,可以预览流程的标准 BPMN XML 文件。

流程图中的按钮

该问题属于被高频提问的问题,因此我们用独立的小节进行介绍,以方便用户在文档中快速导航。对于流程图编辑中操作按钮,路由表单工作流和在线表单工作流没有任何差别,这里只是为了方便阅读,才会分别给出重复的内容。

  • 同意,默认同意操作。

  • 拒绝,默认拒绝操作。

  • 驳回,当前审批人,驳回待办任务到上一个任务节点。

  • 驳回到起点,当前审批人,驳回待办任务到流程的第一个用户任务节点,通常是录入节点。

  • 驳回到历史任务,当前审批人,驳回待办任务之前审批途径过的任务节点。不能驳回到并行网关内的任务。

  • 撤销,审批人在提交审批后,在尚未被下一个审批人审批之前,可以撤回之前的审批操作。

  • 转办,将当前任务转交给选择的用户或用户组处理,流程任务节点没有任何变化,只能更换了审批人或审批候选人组。

  • 会签,在流程图中为多实例任务。会签的指定人,需要在会签任务的上一级任务设置,用户点击会签按钮后,选择具体的审批人用户列表。在后面「实例讲解」小节,会给出专门的会签实例,并进行更为详细的说明。

  • 同意 (会签),仅用于会签任务,用户点击此按钮会使内置多实例变量 multiAgreeCount 的值加一。

  • 拒绝 (会签),仅用于会签任务,用户点击此按钮会使内置多实例变量 multiRefuseCount 的值加一。

  • 弃权 (会签),仅用于会签任务,用户点击此按钮会使内置多实例变量 multiAbstainCount 的值加一。

  • 加签,流程审批已经进入会签任务时,当前会签任务节点的上一级节点的审批人,发现需要新增会签人员时,可以通过「加签」的方式,添加新的会签人员。需要说明的是,如果会签任务已经结束,不能再进行加签了。

  • 减签,流程审批已经进入会签任务时,当前会签任务节点的上一级节点的审批人,发现需要移除某一会签人员时,可以通过「减签」的方式,移除现有的会签人员。需要说明的是,如果会签任务已经结束,不能再进行减签了。

  • 保存草稿,在流程审批数据录入节点,可以先不提交流程,而只是将当前填写的表单数据,保存到草稿中。需要额外说明的是,此操作已经启动了流程实例,流程发起人可以在「工单列表」中继续编辑草稿,并最终提交审批。
  • 终止,终止当前的流程实例。通过此方式终止的流程,工单表 flow_status 字段值为「正常结束」。
  • 自由跳,顾名思义,可以向前或向后跳转到任意用户任务。跳转过程中如果指定用户,那么该用户将为目标任务的审批人。

流程图中的变量配置

该问题属于被高频提问的问题,因此我们用独立的小节进行介绍,以方便用户在文档中快速导航。对于流程图编辑中变量设置,路由表单工作流和在线表单工作流没有任何差别,这里只是为了方便阅读,才会分别给出重复的内容。

  • 需要在上一个任务中配置流程变量。

在后续的任务或流程分支中使用。

流程图中配置审批人

对于路由表单工作流而言,在生成器中「无法配置」流程任务的审批人、候选人和候选组等相关信息,必须在生成后工程的流程编辑器中继续配置,因为用户、部门、岗位和角色等数据属于业务数据,在生成器的流程图中无法指定。具体配置会在当前文档的「在线表单工作流的流程图中配置审批人」小节中给出。

工单表单绑定菜单

在上面的流程中,我们创建了三个表单,只能为「工单管理页面」类型的表单绑定菜单。

业务表单发起流程

我们内部习惯于将此种流程发起方式,称之为「主表视角」流程。该流程的业务数据录入,与普通页面没有任何差别,只是在业务数据的列表中,会多出一个流程审批的按钮,按钮显示名可自定义,该按钮触发后即可启动流程,并将所在行数据视为「流程录入数据」。「主表视角」的流程有以下几点注意事项。

  • 通常流程中的第一个任务节点不是「数据录入节点」。
  • 同一条数据,无论是新增还是修改之后,都可以进行审批。即同一条业务数据可以进行多次审批。
  • 如果同一条数据的审批流程没有结束,不能再发起针对该数据的审批流程。只有当前一个审批流程结束后,才能针对该条数据发起新的审批流程。
    重点!在为业务表单配置「发起流程」操作之前,推荐先配置好「工作流」以及与其关联的「流程表单」,这里所述操作均需在「生成器」中完成。



生成后代码

在生成器中配置的每个「路由表单工作流」,都会生成一套独立的 Controller/Service/ServiceImpl/Dao/Mapper/Model/Vo/Dto 后台代码文件。

上图中 /startWithBusinessKey/${processDefinitionKey} 接口方法,会发起一个新的流程实例,其中路径参数 ${processDefinitionKey},就是在生成器中配置的 「流程标识」。

  • 在权限数据初始化文件 init-upms-data-script.sql 中,会生成与路由表单工作流相关的权限数据。

  • 在工作流数据初始化文件 flow-script.sql 中,会生成与路由表单工作流相关的初始化数据。

作者:BIQS  创建时间:2025-04-28 21:22
最后编辑:BIQS  更新时间:2025-04-28 22:29