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