第十一步:关联业务表
//关联业务表 @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<String,Object> assigneeMap = new HashMap();
assigneeMap.put("assignee0","张三");
assigneeMap.put("assignee1","李经理");
assigneeMap.put("assignee2","王总经理");
assigneeMap.put("assignee3","赵财务");
//启动流程实例
runtimeService.startProcessInstanceByKey("myEvection",assigneeMap);
```
数据库表信息更改:
第十三步:候选人实例
创建bpmn文件
参考上面步骤,在bpmn文件中的部门经理审核加上一句话,添加候选人<sequenceFlow id="sid-6d79513c-9c03-4877-b998-6e587f5c182d" sourceRef="testCandateStart" targetRef="_3"/> <userTask id="_4" name="部门经理审批" **activiti:candidateUsers="lisi,wangwu"**> <extensionElements> <activiti:formProperty id="Property 1"/> <activiti:formProperty id="Property 2"/> <activiti:formProperty id="Property 3"/> <activiti:formProperty id="Property 4"/> </extensionElements>
代码步骤:
/** * 创建候选人实例 * 第一步部署定义 */ @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<Task> 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结果(当前负责人为空):
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。