diff --git a/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/processon/demo1.bpmn b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/processon/demo1.bpmn new file mode 100644 index 000000000..f860f8979 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/processon/demo1.bpmn @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/processon/yishi.bpmn b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/processon/yishi.bpmn index 33cdd1a32..152a2efff 100644 --- a/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/processon/yishi.bpmn +++ b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/processon/yishi.bpmn @@ -1,43 +1,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/main/java/com/elink/esua/epdc/service/ActWorkflowCommonService.java b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/main/java/com/elink/esua/epdc/service/ActWorkflowCommonService.java new file mode 100644 index 000000000..2db005979 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/main/java/com/elink/esua/epdc/service/ActWorkflowCommonService.java @@ -0,0 +1,24 @@ +package com.elink.esua.epdc.service; + +/** + * activiti工作流 + * + * @author yujintao + * @email yujintao@elink-cn.com + * @date 2019/9/3 11:18 + */ +public interface ActWorkflowCommonService { + + /** + * 启动流程并绑定任务 + * + * @param processKey 流程ID + * @param businessKey 任务ID + * @param deptId 部门ID(通过部门ID,判断是否有权限审核任务) + * @return boolean + * @author yujintao + * @date 2019/9/3 13:58 + */ + boolean startProcess(String processKey, String businessKey, String deptId); + +} diff --git a/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/main/java/com/elink/esua/epdc/service/impl/ActWorkflowCommonServiceImpl.java b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/main/java/com/elink/esua/epdc/service/impl/ActWorkflowCommonServiceImpl.java new file mode 100644 index 000000000..8c1dee237 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/main/java/com/elink/esua/epdc/service/impl/ActWorkflowCommonServiceImpl.java @@ -0,0 +1,50 @@ +package com.elink.esua.epdc.service.impl; + +import com.elink.esua.epdc.service.ActWorkflowCommonService; +import com.google.common.collect.Maps; +import org.activiti.engine.HistoryService; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.runtime.ProcessInstance; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.context.ContextLoader; +import org.springframework.web.context.WebApplicationContext; + +import java.util.HashMap; +import java.util.Map; + + +/** + * @author yujintao + * @email yujintao@elink-cn.com + * @date 2019/9/3 11:19 + */ +@Service +public class ActWorkflowCommonServiceImpl implements ActWorkflowCommonService { + + @Autowired + private RepositoryService repositoryService; + + @Autowired + private RuntimeService runtimeService; + + @Autowired + private TaskService taskService; + + @Autowired + private HistoryService historyService; + + @Override + public boolean startProcess(String processKey, String businessKey, String deptId) { + Map map = Maps.newHashMap(); + map.put("deptId", deptId); + map.put("activityId", "_2"); + //使用正在执行对象表中的一个字段BUSINESS_KEY(Activiti提供的一个字段),让启动的流程(流程实例)关联业务 + runtimeService.startProcessInstanceByKey(processKey, businessKey, map); + return true; + } + + +} diff --git a/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/test/java/com/elink/esua/epdc/ActivitiTest.java b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/test/java/com/elink/esua/epdc/ActivitiTest.java new file mode 100644 index 000000000..5594c95e7 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-activiti/epdc-activiti-server/src/test/java/com/elink/esua/epdc/ActivitiTest.java @@ -0,0 +1,110 @@ +package com.elink.esua.epdc; + +import com.elink.esua.epdc.service.ActWorkflowCommonService; +import com.google.common.collect.Maps; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.activiti.engine.task.TaskQuery; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; +import java.util.Map; + +/** + * @author yujintao + * @email yujintao@elink-cn.com + * @date 2019/9/3 10:06 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class ActivitiTest { + + @Autowired + private ActWorkflowCommonService actWorkflowCommonService; + + @Autowired + private TaskService taskService; + + @Autowired + private RuntimeService runtimeService; + + @Test + public void test() { + String processId = "demoTask"; + // 启动一个任务流程 + actWorkflowCommonService.startProcess(processId, "testBusinessKey3", "testDeptId"); + } + + @Test + public void test2() { + String processId = "demoTask"; + String deptId = "testDeptId"; + this.queryTask(processId, deptId); + /* + 关联业务id:testBusinessKey + 流程实例id:5001 + 任务id:5006 + 任务标识:_4 + 任务负责人:testDeptId + 任务名称:初次审核 + 任务创建时间:Tue Sep 03 14:26:50 CST 2019 + */ + } + + @Test + public void test3() { + Map map = Maps.newHashMap(); + map.put("deptId", "testDeptId2"); + taskService.complete("5006", map); + } + + @Test + public void test4() { + String processId = "demoTask"; + String deptId = "testDeptId2"; + this.queryTask(processId, deptId); + /* + 关联业务id:testBusinessKey + 流程实例id:5001 + 任务id:7502 + 任务标识:_5 + 任务负责人:testDeptId2 + 任务名称:二次审核 + 任务创建时间:Tue Sep 03 14:49:29 CST 2019 + */ + } + + + private void queryTask(String processId, String deptId) { + //创建查询对象 + TaskQuery taskQuery = taskService.createTaskQuery().taskAssignee(deptId).processDefinitionKey(processId); + //获取查询列表 + List list = taskQuery.list(); + + for (Task task : list) { + //流程实例id + String processInstanceId = task.getProcessInstanceId(); + //根据流程实例id找到流程实例对象 + ProcessInstance processInstance = runtimeService + .createProcessInstanceQuery() + .processInstanceId(processInstanceId) + .singleResult(); + //从流程实例对象获取bussinesskey + String businessKey = processInstance.getBusinessKey(); + //根据businessKey查询业务系统,获取相关的业务信息 + System.out.println("关联业务id:" + businessKey); + System.out.println("流程实例id:" + task.getProcessInstanceId()); + System.out.println("任务id:" + task.getId()); + System.out.println("任务标识:" + task.getTaskDefinitionKey()); + System.out.println("任务负责人:" + task.getAssignee()); + System.out.println("任务名称:" + task.getName()); + System.out.println("任务创建时间:" + task.getCreateTime()); + } + } +}