Part3 activiti工作流引擎在项目中的使用
1.流程部署
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().addBytes(fileName, file.getBytes()).tenantId(orgId);
Deployment deploy = deploymentBuilder.deploy();
2.根据TenantId查询定义流程
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().processDefinitionTenantId(orgId)
.latestVersion().list();
3.对流程进行挂起和激活
//1.根据processKey查询流程定义
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processKey)
.processDefinitionTenantId(orgId).latestVersion().singleResult();
//2.判断是否为挂起状态
if (definition.isSuspended()) {
//2.1 如果是挂起状态:设置为激活
repositoryService.activateProcessDefinitionById(definition.getId());
} else {
//2.2 如果不是激活状态: 设置为挂起
repositoryService.suspendProcessDefinitionById(definition.getId());
}
4.业务数据表
1.proc_instance表
process_key,process_name,与流程关联,
process_state,当前流程进行状态
user_id,username,进行此流程和用户
proc_curr_node_user_id,proc_curr_node_user_name,审批用户组
proc_data,此流程的详细数据,数据库中存储json格式字符串,比如请假原因等等,返回前端使用JSON进行解析
org_id,org_name,标识当前用户所在组织
2.proc_task_instance表,业务流程的任务节点表
process_id,与流程关联
task_name,task_key.bpmn绘制节点时候定义的name和id.
handle_user_id,handle_user_name,审批用户信息
handle_opinion,审批评论
handle_type,审批状态, 2审批通过;3审批不通过;4撤销
3.proc_user_group.审批组信息
id,审批组标识,bpmn绘制节点时的勾选组.
param,入参,如果当前是申请人,入参就是user_id,如果是审批组,入参就是org_id,
isql:根据入参确定当前勾选组身份,使用sql语句得到用户信息
5.启动流程
1.构造业务数据
2.查询流程定义
3.开启流程
4.自动执行第一个任务节点流程,完成当前任务节点
5.获取下一个节点数据,填充业务数据中当前待审批人.
proc_instance表中插入数据
proc_task_instance表中插入数据
6.处理流程
1.查询业务流程对象(act中act_hi_procinst businesskey关联业务proc_instance表的id)
2.设置业务流程状态
3.根据不同的操作类型,完成不同的业务处理
4.更新业务流程对象,保存业务任务对象