|
@@ -0,0 +1,104 @@
|
|
|
|
+package cn.gyee.act;
|
|
|
|
+
|
|
|
|
+import cn.gyee.act.utils.SecurityUtil;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.activiti.api.process.model.ProcessDefinition;
|
|
|
|
+import org.activiti.api.process.model.ProcessInstance;
|
|
|
|
+import org.activiti.api.process.model.builders.ProcessPayloadBuilder;
|
|
|
|
+import org.activiti.api.process.runtime.ProcessRuntime;
|
|
|
|
+import org.activiti.api.runtime.shared.query.Page;
|
|
|
|
+import org.activiti.api.runtime.shared.query.Pageable;
|
|
|
|
+import org.activiti.api.task.model.Task;
|
|
|
|
+import org.activiti.api.task.model.builders.TaskPayloadBuilder;
|
|
|
|
+import org.activiti.api.task.runtime.TaskRuntime;
|
|
|
|
+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.ContextConfiguration;
|
|
|
|
+import org.springframework.test.context.junit4.SpringRunner;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ *@ClassName ActivitiTest
|
|
|
|
+ *@Description TODO
|
|
|
|
+ *@Author 谢生杰
|
|
|
|
+ *@Date 2021/1/3 21:22
|
|
|
|
+ *@Version 1.0
|
|
|
|
+ **/
|
|
|
|
+@Slf4j
|
|
|
|
+@RunWith(SpringRunner.class)
|
|
|
|
+@SpringBootTest
|
|
|
|
+public class ActivitiTest {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ProcessRuntime processRuntime; // 实现流程定义相关操作
|
|
|
|
+ @Autowired
|
|
|
|
+ private TaskRuntime taskRuntime; //任务相关操作的类
|
|
|
|
+ @Autowired
|
|
|
|
+ private SecurityUtil securityUtil; // springSecurity相关的工具类
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 查看流程定义信息 流程部署在activiti7与springboot整合后,会自动部署,前提是必须将bpmn文件放到resource/processes目录下
|
|
|
|
+ @Test
|
|
|
|
+ public void queryProcessDefined(){
|
|
|
|
+ // springsecurity的相关认证
|
|
|
|
+ securityUtil.logInAs("rose");
|
|
|
|
+ // 分页查询出流程定义信息
|
|
|
|
+ Page<ProcessDefinition> processDefinitionPage = processRuntime.processDefinitions(Pageable.of(0, 10));
|
|
|
|
+ System.out.println("可用的流程定义个数:"+processDefinitionPage.getTotalItems());
|
|
|
|
+ // 得到当前部署的每一个流程定义的信息processDefinitionPage.getContent()
|
|
|
|
+ for (Object pd : processDefinitionPage.getContent()) {
|
|
|
|
+ System.out.println("流程定义:"+pd);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 启动流程
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void startProcess(){
|
|
|
|
+// 设置登录用户
|
|
|
|
+ securityUtil.logInAs("system");
|
|
|
|
+ ProcessInstance processInstance = processRuntime.
|
|
|
|
+ start(ProcessPayloadBuilder.
|
|
|
|
+ start().
|
|
|
|
+ withProcessDefinitionKey("myDemo").
|
|
|
|
+ build());
|
|
|
|
+ log.info("流程实例的内容,{}",processInstance);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 执行任务
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void doTask(){
|
|
|
|
+// 设置登录用户
|
|
|
|
+ securityUtil.logInAs("rose");
|
|
|
|
+// 查询任务
|
|
|
|
+ Page<Task> taskPage = taskRuntime.tasks(Pageable.of(0, 10));
|
|
|
|
+ if(taskPage != null && taskPage.getTotalItems()>0){
|
|
|
|
+ for (Task task : taskPage.getContent()) {
|
|
|
|
+ // 拾取任务
|
|
|
|
+ taskRuntime.claim(TaskPayloadBuilder.
|
|
|
|
+ claim().
|
|
|
|
+ withTaskId(task.getId()).
|
|
|
|
+ build());
|
|
|
|
+ log.info("任务内容,{}",task);
|
|
|
|
+ // 完成任务
|
|
|
|
+ taskRuntime.complete(TaskPayloadBuilder.
|
|
|
|
+ complete().
|
|
|
|
+ withTaskId(task.getId()).
|
|
|
|
+ build());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 任务完成后再次查询
|
|
|
|
+ taskPage = taskRuntime.tasks(Pageable.of(0, 10));
|
|
|
|
+ // 判断是否有任务
|
|
|
|
+ if(taskPage.getTotalItems()>0){
|
|
|
|
+ for (Task task : taskPage.getContent()) {
|
|
|
|
+ System.out.println("任务完成后的下一任务:"+task);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+}
|