Activiti工作流入门筑基圆满
- 【Activiti工作流入门筑基圆满】第十一步:关联业务表
//关联业务表 @Test public void actionwith(){ //1、获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService(); // 3、启动流程的过程中,添加businesskey //第二个参数:businessKey,业务表的id,就是1001 ProcessInstance instance = runtimeService. startProcessInstanceByKey("holiday", "1001"); //4、输出 System.out.println("businessKey=="+instance.getBusinessKey()); }
运行截图:
文章图片
- 第十二步:使用uel表达式创建负责人
(一)重新创建bpmn文件
png图片和bpmn文件见上面的步骤 ```Java 流程部署 //1、创建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取RepositoryServcie RepositoryService repositoryService = processEngine.getRepositoryService(); //3、使用service进行流程的部署,定义一个流程的名字,把bpmn和png部署到数据中 Deployment deploy = repositoryService.createDeployment() .name("出差申请流程-uel") .addClasspathResource("bpmn/myEvection.bpmn20.xml") .addClasspathResource("bpmn/Evection.png") .deploy(); //4、输出部署信息 System.out.println("流程部署id="+deploy.getId()); System.out.println("流程部署名字="+deploy.getName()); ```
启动实例:
?```Java
//获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取RunTimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
//设定assignee的值,用来替换uel表达式
Map assigneeMap = new HashMap();
assigneeMap.put("assignee0","张三");
assigneeMap.put("assignee1","李经理");
assigneeMap.put("assignee2","王总经理");
assigneeMap.put("assignee3","赵财务");
//启动流程实例
runtimeService.startProcessInstanceByKey("myEvection",assigneeMap);
?```
数据库表信息更改:
文章图片
文章图片
- 第十三步:候选人实例
创建bpmn文件
参考上面步骤,在bpmn文件中的部门经理审核加上一句话,添加候选人
代码步骤:
/** * 创建候选人实例 * 第一步部署定义 */ @Test public void testCandate(){ //1、创建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取RepositoryServcie RepositoryService repositoryService = processEngine.getRepositoryService(); //3、使用service进行流程的部署,定义一个流程的名字,把bpmn和png部署到数据中 Deployment deploy = repositoryService.createDeployment() .name("出差申请流程-Candidate") .addClasspathResource("bpmn/testCandate.bpmn20.xml") .addClasspathResource("bpmn/testCandate.png") .deploy(); }/** * 第二步流程部署实例 */ @Test public void StartTestCandate(){ //获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); runtimeService.startProcessInstanceByKey("candidateUsers"); } /** * 完成提交申请 */ @Test public void EndTest(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取操作任务的服务 TaskService TaskService taskService = processEngine.getTaskService(); //获取jerry 对应的任务 Task task = taskService.createTaskQuery() .processDefinitionKey("candidateUsers") .taskAssignee("橘子1") .singleResult(); //完成提交申请的任务 taskService.complete(task.getId()); System.out.println("流程实例id=" + task.getProcessInstanceId()); System.out.println("任务Id=" + task.getId()); System.out.println("任务负责人=" + task.getAssignee()); System.out.println("任务名称=" + task.getName()); } //查询任务 @Test public void other(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService TaskService taskService = processEngine.getTaskService(); //查询组任务 List
taskList = taskService.createTaskQuery() .processDefinitionKey("candidateUsers") .taskCandidateUser("wangwu") //根据候选人查询任务 .list(); for (Task task : taskList) { System.out.println("========================"); System.out.println("流程实例ID="+task.getProcessInstanceId()); System.out.println("任务id="+task.getId()); System.out.println("任务负责人="+task.getAssignee()); }}
运行完数据库表:
- ACT_RU_TASK结果(当前负责人为空):
文章图片
- ACT_HI_ACTINST结果(部门经理审批负责人为空):
文章图片
- ACT_HI_TASKINST结果 (部门经理审批负责人为空):
文章图片
找到候选人拾取任务
/** * wangwu拾取任务 */ @Test public void finshTest(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService TaskService taskService = processEngine.getTaskService(); //当前任务的id String taskId = "5002"; //任务候选人 String candidateUsers = "wangwu"; //查询任务 Task task = taskService.createTaskQuery() .taskId(taskId) .taskCandidateUser(candidateUsers) .singleResult(); if(task != null){ //拾取任务 taskService.claim(taskId,candidateUsers); System.out.println("taskid-"+taskId+"-用户-"+candidateUsers+"-拾取任务完成"); } }
- ACT_RU_TASK结果图(回归正常流程):
文章图片
- ACT_HI_ACTINST结果(回归正常流程):
文章图片
- ACT_HI_TASKINST结果 (回归正常流程):
文章图片
更改负责人:将wangwu改成lisi,简而言之就是ASSIGNEE字段
/** * 更改负责人为lisi */ @Test public void updata(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService TaskService taskService = processEngine.getTaskService(); //当前任务的id String taskId = "5002"; //任务负责人 String assignee = "wangwu"; //根据key 和负责人来查询任务 Task task = taskService.createTaskQuery() .taskId(taskId) .taskAssignee(assignee) .singleResult(); if(task != null){ //归还任务 ,就是把负责人 设置为空 taskService.setAssignee(taskId,null); taskService.setAssignee(taskId,"lisi"); System.out.println("taskid-"+taskId+"-归还任务完成"); }}
终于圆满了,踏入修真界
- ACT_RU_TASK结果(当前负责人为空):
推荐阅读
- leetcode|算法入门之字符串(Python)【初级算法——字符串】【蓝桥杯练习】【力扣练习】
- 笔记|CSDN笔记入门——markdown语法详解
- Re:《Unity|Re:《Unity Shader入门精要》13.3全局雾效--如何从深度纹理重构世界坐标
- MySQL|MySQL数据库:入门必备基础更新了哦~~~
- Java|SpringBoot入门项目-基于JPA的App日记后台系统之数据库的创建与JPA的CRUD(二)
- Web3D 从入门到跑路 · 3D 初体验
- 云原生入门第六章(持续交付)
- Activiti工作流入门筑基下篇-养性
- Activiti工作流入门筑基上篇-修身
- Element|Element-UI快速入门