1.绘制流程图
开始—>>第一步工作–>>第二步工作–>>…–>>结束
1.1指定流程
assignee:负责人姓名
name:任务节点名称
id:任务节点id
2.部署流程定义–RepositoryService–Deployment
//创建ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取RepositoryService对象
RepositoryService repositoryService = processEngine.getRepositoryService();
//进行部署
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("bpmn/leave.bpmn")//根据bpmn文件
.addClasspathResource("bpmn/leave.png")//根据png文件
.name("请假流程")//根据name
.deploy();//部署
2.1 deployment能获取的值
//输出部署的一些信息
System.out.println("流程部署ID:"+deployment.getId());
System.out.println("流程部署名称:"+deployment.getName());
2.2 操作的表
- ACT_GE_PROPERTY 引擎属性表–update
- ACT_RE_PROCDEF 流程定义表–insert
- ACT_RE_DEPLOYMENT 流程部署表–insert
- ACT_GE_BYTEARRAY 二进制资源表–insert
3.启动流程–RuntimeService—RuntimeService
//创建ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取RuntimeService对象
RuntimeService runtimeService = processEngine.getRuntimeService();
//根据流程定义的key启动流程实例,这个key是在定义bpmn的时候设置的--一般是bpmn文件名
ProcessInstance instance = runtimeService.
startProcessInstanceByKey("leaveProcess");
3.1 instance获取相关信息
//获取流程实例的相关信息
System.out.println("流程实例ID::" + processInstance.getProcessInstanceId());
System.out.println("获取ID::" + processInstance.getId());
System.out.println("获取部署 ID" + processInstance.getDeploymentId());
System.out.println("对应的流程定义ID" + processInstance.getProcessDefinitionId());
3.2操作的表
- ACT_HI_TASKINST 历史任务表–insert
- ACT_HI_PROCINST 历史流程实例表–insert
- ACT_HI_ACTINST 历史活动信息表–insert
- ACT_HI_IDENTITYLINK 历史身份连接表–insert
- ACT_RU_EXECUTION 运行时执行实例表–insert
- ACT_RU_TASK 运行时任务表–insert
- ACT_RU_IDENTITYLINK 运行时身份连接表–insert
4.任务查询–TaskService
//任务负责人
String assignee = "李四";
//创建ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取TaskService
TaskService taskService = processEngine.getTaskService();
//获取任务集合
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("leaveProcess")//获取流程
.taskAssignee(assignee)//根据负责人获取任务节点
.list();
4.1 taskService获取信息
//遍历list
System.out.println("流程定义id = " + task.getProcessDefinitionId());
System.out.println("流程实例id = " + task.getProcessInstanceId());
System.out.println("任务id = " + task.getId());
System.out.println("任务名称 = " + task.getName());
4.2操作的表
- ACT_RU_TASK 运行时任务表
- ACT_RE_PROCDEF 流程定义表–select
5.任务处理–TaskService
对象方式同任务查询
获取任务对象后可以执行的操作
//遍历任务列表
for(Task task:taskList){
//结束当前任务节点,进入下一步任务,同时当前工作流任务负责人和任务id任务name都改变
taskService.complete(task.getId());
}
5.1操作的
- ACT_GE_PROPERTY 引擎属性表–update
- ACT_HI_TASKINST 历史任务表–insert
- ACT_HI_ACTINST 历史活动信息表–insert
- ACT_HI_IDENTITYLINK 历史身份连接表–insert
- ACT_RU_TASK 运行时任务表–insert
- ACT_RU_IDENTITYLINK 运行时身份连接表–insert
- ACT_RU_EXECUTION 运行时执行实例表–update
- ACT_HI_TASKINST 历史任务表–update
- ACT_HI_TASKINST 历史任务表–update
- ACT_RU_TASK 运行时任务表–delete
6.添加审批意见–TaskService
对象方式同任务查询
获取任务对象后可以执行的操作
//在任务执行之前任务添加批注信息--参数:任务id,工作流实例id,任务名称,审批意见
taskService.addComment(task.getId(),task.getProcessInstanceId(),task.getName()+"审批通过");
//完成当前任务节点
taskService.complete(task.getId());
6.1更新的表–同任务处理
7.查看历史审批–taskService
//获取taskService
//代码同上
//获取historyService
HistoryService historyService = processEngine.getHistoryService();
//获取历史审核信息
List<HistoricActivityInstance> list = historyService
.createHistoricActivityInstanceQuery()
.activityType("userTask")//只获取用户任务
.processInstanceId(processInstanceId)//工作流实例id
.taskAssignee(taskAssignee)//任务负责人
.finished()
.list();
7.1可以获取的信息
System.out.println("任务名称:"+instance.getActivityName());
System.out.println("任务开始时间:"+instance.getStartTime());
System.out.println("任务结束时间:"+instance.getEndTime());
System.out.println("任务耗时:"+instance.getDurationInMillis());
//获取审核批注信息--有则获取,没有则没有
List<Comment> taskComments = taskService.getTaskComments(instance.getTaskId());
if(taskComments.size()>0){
System.out.println("审批批注:"+taskComments.get(0).getFullMessage());
}