审批流使用说明书
1、 流程周期
1.1. 定义流程
定义一个流程bpmn文件。
1.2. 发布流程
发布一个流程即将bpmn文件发布到数据库中使用activiti默认的表存储。
1.3. 流程挂起、激活
发布的流程文件可以启动,也可以挂起操作,当挂起时流程将不会被使用启动成为为一个流程,当流程文件激活时才可以继续使用该流程
1.4. 流程启动
当发起一个流程时,会选定一个激活的流程bpmn文件进行启动,会自动生成一个独一的流程id,并且将会自动流转到第一个人员操作节点
1.5. 审核节点
每个审核节点完成时,可以对该条流程进行传参,我们默认为number,提前在流程流转线上设定好当number为0,1,2等时流转到哪个节点,
1.6. 流程流转
根据number值的不同进行选择流程流转的方向进行流程流转
1.7. 流程结束
使用流程监听类对流程结束进行监听,当流程结束时,根据审批参数的不同对业务表单的审核结果进行改变完成流程
2、 示例:以一个审批节点为例
2.1.定义流程
登录时空大数据管理中心,进入右上角系统管理中心,选择系统工具——》流程定义——》在线绘制流程
2.1.1. 点击流程开启组件
在右侧表单里可以修改编号和名称,即节点编号和名称,供后续流程操作使用
点击组件周围出现的名为AppendServiceTask新建一个人员审批节点
2.1.1.1 点击审批节点
1点击常规,修改以下项:
1.1“编号” 为 deptLeaderVerify
1.2“名称” 为 管理员审批
1.3“候选用户”
多个角色审批
“候选用户” 为 ${role1},${role104} 此处以逗号分割,代表拥有角色id为 1 和 104 的用户进行审批,
如果是一个角色审批则修改
“候选用户” 为 ${role1} 代表角色id为1的用户可以审批,这是通用接口的默认审批方式。
2.1.2. 添加排他网关
点击人员审批节点在周围出现组件中选择 追加网关进行增加一个排他网关
2.1.2.1 添加流程线路
排他网关标识只要其中一条线的条件满足就会流转到下一节点,这里用来引出通过和不通过两条线。
2.1.3. 添加结束事件
点击网关在周围出现的组件中选择 追加结束事件进行增加一个结束事件
2.1.3.1 审核通过
1、添加走这条线的流转判断条件
点击网关指向结束事件的线,在右侧选择常规、详情、条件类型选择表达式,表达式中填写 ${number == 0} 意思是当代码传的值number==0 的时候走这条线
2、添加结束事件监听器
因为走完这个审批节点流程就结束了,所以要同时添加结束事件监听器
如果流程走到这条线就会触发监听器
点击监听器,在执行监听 点击 “+”添加一个 take:Java 类
例如 com.geovis.activiti.workflow.linstener.ResourceEndStateListener
3在字段注入中点击“+”添加一个字段注入:
例如 名称为 state
类型为 String
值为 1
将state的值保存进该条审批记录,1代表审批通过,2代表审批不通过
如果审批通过==》审批者选择通过按钮==》前端传给后端的参数如下
1 |
|
字段 | 备注 |
---|---|
controlId | 默认为number 即流程流转到下一节点到哪个节点,是审批通过还是不通过的判定条件参数名称 |
controlSuggestion | 审批意见 |
controlValue | number的值,用来判断是否审批成功 例如0为通过 1为不通过 |
后端将前端传过来的number和值 0 保存在variables里传给bpmn工作流
1 |
|
bpmn中对number的值进行了判定 如果${number == 0},则走这条线,
走这条线就会注入一个参数 state 为1,在监听器读取state,如果state为1,则审批结果为通过,进行在业务表单中保留审批成功操作
监听器代码如下:
1 |
|
2.1.3.2 审核不通过
1、点击网关,点击周围的 使用顺序/消息流或者关联连接 指向结束组件
2、可以拖拽这条线让其不再与上面通过的线重合
3、点击这条线,在右侧窗口选择监听器,在执行监听 点击 “+”添加一个take:Java类
与上面通过的Java类是同一个 com.geovis.activiti.workflow.linstener.ResourceEndStateListener
4、在字段注入中点击“+”添加一个字段注入:
例如:
- 名称为: state
- 类型为: String
- 值为: 2
可以在代码中读取state的值来了解审批结果,例如设置审批值为number =1,也可以是不为0的其他值,则走这条线,该操作注入一个参数state为2,在监听器读取state,如果state为2,则审批结果为拒绝,进行在业务表单中保留审批失败操作。
2.1.4. 查看流程文件基本信息
点击空白区域,在右侧表单可以编写这个bpmn的基本信息
属性 | 值 | 注释 |
---|---|---|
编号 | 例如 resource_example | 是流程key ,部署bpmn文件后会保存到act_re_procdef表中的KEY_字段 |
名称 | 例如 示例流程表单 | 是流程名称,部署bpmn文件后会保存到act_re_procdef表中的NAME_字段 |
描述 | 例如 资源申请流程示例 | 是流程描述,部署bpmn文件后会保存到act_re_procdef表中的DESCRIPTION_字段 |
2.2. 发布流程
2.2.1 直接部署
上面画好的流程图,可以点击 部署 按钮直接部署到数据库,部署后会在流程列表中展示
2.2.2 选择文件部署
也可以再流程定义界面点击 部署流程 按钮,选择需要部署的流程文件进行部署,可以上传含有bpmn文件的zip文件进行部署,也可以直接部署bpmn文件
2.2.3 查看已经发布的流程
发布的流程可以在act_re_procdef 表中看到流程文件的信息,查看所有的已经发布的流程接口:
http://localhost:8089/processDefinition/list?pageNum=1&pageSize=10
2.2.4 查看流程
可以根据 DEPLOYMENT_ID_ 和RESOURCE_NAME_ 读取bpmn的xml文件,展示在前端页面上
http://localhost:8089/processDefinition/getDefinitionXML
get接口传参如下:
KEY | VALUE |
---|---|
deploymentId | 507ce6d4-d10f-11ec-8fbe-005056c00001 |
resourceName | resource_js.bpmn |
可以列出所有发布的流程信息
2.3. 流程挂起、激活
2.3.1 在发布流程展示界面点击挂起、激活可以改变流程的状态,接口如下:
http://localhost:8089/processDefinition/suspendOrActiveApply
post接口 传参如下:
1 |
|
字段 | 注释 |
---|---|
id | 流程部署后在act_re_procdef表中生成的id |
suspendState | 流程状态 1为正在使用 2为挂起 |
返回值
1 |
|
2.3.2 挂起和激活的含义
当挂起时流程将不会被使用启动成为为一个流程,当流程文件激活时才可以继续使用该流程
2.4. 流程启动
2.4.1 保存草稿
http://localhost:8089/common/addDraft
post接口 传参如下:
1 |
|
字段 | 注释 | 备注 |
---|---|---|
type | 申请类型:如数据共享、数据订阅,可以约定好英文和中文的映射关系,保存在数据字典中 | 在业务表单填写时保存进来 |
title | 标题 | 在业务表单填写时保存进来 |
reason | 存放业务表单所有数据的json 将整个业务表单转化为json存进去有利于后续操作 | 在业务表单填写时保存进来 |
state | 表单状态 默认为4 | 4 未执行(第一步流程表单数据暂存草稿,未启动时), |
0 进行中(流程启动后但是未全部执行完成时) | ||
1 已办结-审核通过(流程全部节点审核通过,到达结束节点) | ||
2 已办结-审核不通过(流程在任何节点审核不通过时) | ||
3 已删除 (在流程未流转完成时,由管理员或发起人删除的流程 | ||
callbackUrl | 回调地址,用来提示业务表单流程已经走完 | 流程结束回调的接口,告诉业务流程已经走完并且附带审批结果 |
cause | 申请原因 | 在业务表单填写时保存进来 |
userUnit | 申请者单位 | 在业务表单填写时保存进来 |
phone | 申请者联系电话 | 在业务表单填写时保存进来 |
urge | 是否催办 | 默认为 0 不催办 |
1催办 催办的会在审批者待办中优先展示 | ||
rekey | 流程key | 编辑草稿之前选择一个流程时从选择的信息中读取并保存进来 |
reid | 流程id 在act_re_procdef中为KEY_字段 | 编辑草稿之前选择一个流程时从选择的信息中读取并保存进来 |
createName | 流程发起人姓名 | 流程启动的时候后端读取登录用户自动保存 |
createBy | 流程发起人username | 流程启动的时候后端读取登录用户自动保存 |
返回值
1 |
|
2.4.2 查看本人创建草稿
http://localhost:8089/common/getDrafts
post接口 传参如下:
1 |
|
可以根据标题模糊查询或者其他字段精确查询.
可以查看本人创建的草稿,查询后结果例如:
1 |
|
2.4.3 编辑草稿根据id
http://localhost:8089/common/updateDrafts
post接口 传参如下:
1 |
|
返回值
1 |
|
可以在流程未启动之前根据草稿的id进行编辑草稿
2.4.4 删除草稿根据ids
http://localhost:8089/common/deleteDrafts
post接口 传参为一个数组,例如:
1 |
|
可以多个删除也可以单个删除自己创建的草稿,删除后数据库中将删除该条记录
返回值:
1 |
|
2.4.5 草稿开启流程
http://localhost:8089/common/startDraft
post接口 开启流程传的参数为4.2查看本人草稿中的草稿
1 |
|
返回值
1 |
|
根据草稿中的rekey和reId进行确定一个部署的流程进行开启流程
2.5. 审核节点
会根据bpmn文件中配置的${role1},${role104}来判断审批人名单进行流程开始,并且自动流转到第一个审核节点,每个审核节点完成时,可以对该条流程进行传参,我们默认为number,提前在流程流转线上设定好当number为0,1,2等时流转到哪个节点
2.5.1 待办列表查询(我的待办)
http://localhost:8089/task/list?pageNum=1&pageSize=10
可以根据流程创建人昵称、流程标题进行模糊查询,精确到某一天进行查询当天创建的流程
post接口 传参例如:
1 |
|
返回值:
1 |
|
可以根据申请者昵称、流程名称模糊查询,根据创建时间进行精确到某一天进行查询
2.5.2 审批
http://localhost:8089/task/formDataSave/51b903fe-f12b-11ec-b53d-005056c00001
post接口 传参如下:
1 |
|
字段 | 备注 |
---|---|
controlId | 默认为number 即流程流转到下一节点到哪个节点,是审批通过还是不通过的判定条件参数名称 |
controlSuggestion | 审批意见 |
controlValue | number的值,用来判断是否审批成功 例如0为通过 1为不通过 |
返回值
1 |
|
2.5.3 已办列表查询(查看我审批完的所有流程)
http://localhost:8089/workflow/resource/listAll?pageNum=1&pageSize=10
post接口 传参如下:
1 |
|
字段 | 备注 | 查询类型 |
---|---|---|
createName | 创建人昵称 | 模糊查询 |
title | 事件名称 | 模糊查询 |
createTime | 创建时间 | 精确到某一天 |
返回值
1 |
|
2.5.4 我提交的流程列表查询(查看我提交的流程列表)
http://localhost:8089/workflow/resource/listPersonal?pageNum=1&pageSize=10
post接口 传参如下
1 |
|
字段 | 备注 | 查询类型 |
---|---|---|
createName | 创建人昵称 | 模糊查询 |
title | 事件名称 | 模糊查询 |
createTime | 创建时间 | 精确到某一天 |
返回值
1 |
|
2.5.5 流程催办
http://localhost:8089/common/urge
post接口 传参如下
1 |
|
字段 | 备注 |
---|---|
id | 是在我提交的流程列表查询 中查询出的申请记录id |
urge | 1为催办,0为不催办 催办的会在5.1 待办列表查询中优先展示 |
返回值
1 |
|
2.5.6 流程删除
http://localhost:8089/workflow/resource/deleteByIds
post接口 传参为数组
1 |
|
参数为在 我提交的流程列表查询 中查询出的申请记录id,用户删除会撤回正在审批的记录,在数据库中会将状态state设置为3,这条申请记录不会在数据库中消失,但是管理员待办会查不到。
返回值
1 |
|
2.5.7 根据角色ID查询属于该角色的所有用户信息
2.5.7.1 获取审批人信息根据任务里的审批人组
http://localhost:8089/common/getExamine
post接口 传参如下
1 |
|
返回值
1 |
|
examine为任务里的审批人组
2.5.7.2 获取审批人信息通过用户id
http://localhost:8089/common/getExamineById
post接口 传参如下
1 |
|
id为用户id
返回值
1 |
|
2.5.8 已发布的流程根据执行工作流程ID查询所有执行节点信息
http://localhost:8089/common/getTasks
post接口 传参如下
1 |
|
instanceId 为 执行工作流程ID
返回值
1 |
|
2.5.9 根据流程ID和流程节点ID查询节点信息
http://localhost:8089/common/getTasksByFormKey
post接口 传参如下
1 |
|
字段 | 备注 |
---|---|
instanceId | 执行工作流程ID |
formKey | 流程节点id |
2.5.10 流程信息查询
http://localhost:8089/workflow/resource/list?pageNum=1&pageSize=9
post接口 传参如下:
1 |
|
字段 | 备注 |
---|---|
title | 事项名称 |
createName | 申请人昵称 |
state | 审核状态,这里是流程状态 |
4 未执行(第一步流程表单数据暂存草稿,未启动时) | |
0 进行中(流程启动后但是未全部执行完成时) | |
1 已办结-审核通过(流程全部节点审核通过,到达结束节点) | |
2 已办结-审核不通过(流程在任何节点审核不通过时) | |
3 已删除 (在流程未流转完成时,由管理员或发起人删除的流程 |
返回值
1 |
|
2.6. 流程流转
2.6.1 流程图概览
调接口下载并展示一张图 能看到流程所有节点等信息的图,和当前进行节点高亮。
2.6.1.1 获取流程部署id和name通过 正在运行 的流程instanceId
http://localhost:8089/processDefinition/getDefinitions/d7cc710e-f12b-11ec-b53d-005056c00001
get接口 返回结果:
1 |
|
2.6.1.2 获取流程图通过部署id和name
http://localhost:8089/processDefinition/getDefinitionXML
get接口 请求参数为form表单 传参为2.6.1查询出的结果
KEY | VALUE |
---|---|
deploymentId | 5934902f-ed56-11ec-9869-72bdf190b8a1 |
resourceName | resource_ty.bpmn |
返回值为流程bpmn的xml文件
2.6.1.3 流程图高亮
http://localhost:8089/activitiHistory/gethighLine
get请求 请求参数为form表单
传参为
1 |
|
KEY | VALUE |
---|---|
instanceId | 要查询的 流程id |
返回值
1 |
|
2.6.2 统计接口统计接口
根据流程分类过滤后按流程状态统计各状态的流程数量。
http://localhost:8089/common/getNumbersOfWorkflow
post请求 请求参数如下:
1 |
|
返回结果
1 |
|
字段 | 备注 |
---|---|
wait | 正在运行的流程 |
refuse | 被拒绝的流程 |
pass | 通过的流程 |
2.6.3 流程流转到哪个相邻的节点见2.5.2
http://localhost:8089/task/formDataSave/91bf0cfd-ed56-11ec-9ad7-005056c00001
post接口 传参如下
1 |
|
字段 | 备注 |
---|---|
controlId | 默认为number 即流程流转到下一节点到哪个节点,是审批通过还是不通过的判定条件参数名称 |
controlSuggestion | 审批意见 |
controlValue | number的值,用来判断是否审批成功 例如0为通过 1为不通过 |
2.7. 流程结束
流程结束详细原理请见2.1.3