第十一步:关联业务表
//关联业务表 @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后果(以后负责人为空):