1. 业务开发
1.1. 前端开发
1.1.1. 绑定流程业务
在业务表单中使用<ms-flow>组件
<ms-flow>组件参数说明
| 组件参数 | 是否必填 | 说明 | 默认值 |
|---|---|---|---|
| dataId | 是 | 当前业务数据id | 无 |
| formData | 是 | 当前业务数据 | 无 |
| category | 否 | 查询业务流程数据类型 | 无 |
下面以栏目表单为例
...
<!-- 头部添加组件引入 -->
<#include "flow/components/ms-flow.ftl"/>
...
...
<!-- 组件使用 -->
<ms-flow v-if="!form.id || form.leaf" :form-data="form" :data-id="form.id" :category="'栏目'"></ms-flow>
...
<!-- vue js -->
var categoryForm = Vue.defineComponent({
components:{
...
// 注册工作流组件
MsFlow
...
},
...
})
1.1.2. 展示流程图数据
下面以文章列表为例
<ms-flow-chart>组件参数说明
| 组件参数 | 是否必填 | 说明 | 默认值 |
|---|---|---|---|
| insId | 是 | 流程实例ID | 无 |
前端代码
...
<!-- 头部添加组件引入 -->
<#include "flow/components/ms-flow-chart.ftl"/>
...
<!--操作列展示-->
<template v-if="scope.row.flowInstanceId">
<@shiro.hasPermission name="cms:content:log">
<ms-flow-chart v-if="hasPermission('cms:content:log')" :ins-id="scope.row.flowInstanceId"></ms-flow-chart>
</@shiro.hasPermission>
</template>
...
<!-- 组件使用 -->
<ms-flow-chart v-model:flow-chart="flowChart" :ins-id="insId"></ms-flow-chart>
...
<!-- vue js -->
var categoryForm = Vue.defineComponent({
components:{
...
// 注册流程图组件
MsFlowChart
...
}
})
[!tip] 默认以弹窗形式展示流程图。若需自定义展示方式,可修改
ms-flow-chart组件进行定制化开发。
1.1.3. 提交组件
通用提交组件参数说明
| 组件参数 | 是否必填 | 说明 | 默认值 |
|---|---|---|---|
| dataId | 是 | 当前业务数据id | 无 |
| flowCode | 是 | 流程编码 | 无 |
| list | 否 | 提交后执行方法 | 无 |
...
<!-- 头部添加组件引入 -->
<#include "flow/components/ms-flow-submit.ftl"/>
...
<!--操作列展示-->
<ms-flow-submit v-if="scope.row.progressStatus == 0 || scope.row.progressStatus == 4" @list="list" :data-id="scope.row.id" flow-code="common_role_flow"></ms-flow-submit>
<!-- vue js -->
var categoryForm = Vue.defineComponent({
components:{
...
// 注册流程图组件
MsFlowSubmit
...
}
})
后端代码
在对应实体类继承BaseFlowEntity
public class ContentEntity extends BaseFlowEntity implements Serializable {
1.2. 后端开发
这里有两种情况
1.2.1. 第一种
通过父业务控制具体业务流程,如文章审核,需要区分不同栏目走不同流程的业务参考以下步骤
添加流程字段
这是父业务表单需要增加的字段
ALTER TABLE YOUR_TABLE
ADD COLUMN FLOW_CODE VARCHAR(255) DEFAULT '' COMMENT '流程编码';
这是具体业务表单需要增加的字段
ALTER TABLE YOUR_TABLE
ADD COLUMN PROGRESS_STATUS varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '流程状态' AFTER DEL,
ADD COLUMN INSTANCE_ID varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '流程实例id' AFTER NEXT_IDS,
ADD COLUMN NODE_CODE varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '节点编码' AFTER INSTANCE_ID,
ADD COLUMN NODE_NAME varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '待提交' COMMENT '流程节点名称' AFTER NODE_CODE,
ADD COLUMN NODE_TYPE int NULL DEFAULT NULL COMMENT '节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)' AFTER NODE_NAME;
业务代码
以下依旧以栏目文章审批为例
提交业务
public void submit(String dataId, String handleName) {
ContentEntity content = contentBiz.getById(dataId);
// 设置流程编码
FlowParams flowParams = FlowParams.build().flowCode(this.getFlowCodeByCategoryId(content.getCategoryId()));
// 提交审核
flowBiz.submit(flowParams,dataId);
}
在 flowParams 中,flowCode 编码是必需的,系统将根据此编码查询相应的业务数据。开发者需要在业务代码中组织好相关业务数据,最后通过调用 flowBiz.submit() 方法来完成审核提交操作。
其他业务如撤回、审批和终止业务代码参考ContentFlowService类以及IFlowBiz类
1.2.2. 第二种
没有很复杂的业务,整个业务可能就一个审批流程
添加流程字段
在业务表需要增加以下字段
ALTER TABLE YOUR_TABLE
ADD COLUMN PROGRESS_STATUS varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '流程状态' AFTER DEL,
ADD COLUMN INSTANCE_ID varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '流程实例id' AFTER NEXT_IDS,
ADD COLUMN NODE_CODE varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '节点编码' AFTER INSTANCE_ID,
ADD COLUMN NODE_NAME varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '待提交' COMMENT '流程节点名称' AFTER NODE_CODE,
ADD COLUMN NODE_TYPE int NULL DEFAULT NULL COMMENT '节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)' AFTER NODE_NAME;
业务代码
提交业务
public ResultData submit(...) {
... 编写业务逻辑...
// 设置流程编码
FlowParams flowParams = FlowParams.build().flowCode("固定流程编码");
// 提交审核
flowBiz.submit(flowParams,dataId);
}
其他业务如撤回、审批和终止业务代码参考FlowAction类