springboot2?使用activiti6?idea插件的過程詳解
Activiti BPMN visualizer插件
import com.alibaba.fastjson.JSON; import com.schinta.util.DateTimeUtil; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.*; import org.activiti.engine.history.*; import org.activiti.engine.impl.identity.Authentication; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Comment; import org.activiti.engine.task.Task; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.util.CollectionUtils; import java.util.*; //spring boot2 集成activiti6 一系列異常文檔 https://www.jianshu.com/p/77fa5f932f4f @Slf4j @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class WebApplicationTests { @Autowired private ProcessEngine processEngine; private RepositoryService repositoryService; private RuntimeService runtimeService; private TaskService taskService; private HistoryService historyService; @Test public void deployProcess() { //部署模板 Deployment deploy = repositoryService.createDeployment() .addClasspathResource("processes/wh.bpmn20.xml") .deploy(); System.out.println(deploy.getId()); } public void start() { String instanceKey = "wh"; log.info("開啟請假流程..."); Map<String, Object> map = new HashMap<>(); //在wh.bpmn中,填寫請假單的任務(wù)辦理人為動(dòng)態(tài)傳入的userId,此處模擬一個(gè)id map.put("user1", 1); map.put("user2", 2); Authentication.setAuthenticatedUserId("1"); ProcessInstance instance = runtimeService.startProcessInstanceByKey(instanceKey, map); log.info("啟動(dòng)流程實(shí)例成功:{}", instance); log.info("流程實(shí)例ID:{}", instance.getId()); log.info("流程定義ID:{}", instance.getProcessDefinitionId()); public void taskQuery() { //查詢自己發(fā)起的全部的審批 //List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery().startedBy(userId).list(); //根據(jù)流程定義的key,負(fù)責(zé)人assignee來實(shí)現(xiàn) 當(dāng)前用戶的 待辦任務(wù)列表查詢 List<Task> list = taskService.createTaskQuery() .processDefinitionKey(instanceKey) .taskAssignee("2") .list(); if (list != null && list.size() > 0) { for (Task task : list) { System.out.println("任務(wù)ID:" + task.getId()); System.out.println("任務(wù)名稱:" + task.getName()); System.out.println("任務(wù)的創(chuàng)建時(shí)間:" + task.getCreateTime()); System.out.println("任務(wù)的辦理人:" + task.getAssignee()); System.out.println("流程實(shí)例ID:" + task.getProcessInstanceId()); System.out.println("執(zhí)行對象ID:" + task.getExecutionId()); System.out.println("流程定義ID:" + task.getProcessDefinitionId()); System.out.println("getOwner:" + task.getOwner()); System.out.println("getCategory:" + task.getCategory()); System.out.println("getDescription:" + task.getDescription()); System.out.println("getFormKey:" + task.getFormKey()); Map<String, Object> map = task.getProcessVariables(); for (Map.Entry<String, Object> m : map.entrySet()) { System.out.println("key:" + m.getKey() + " value:" + m.getValue()); } for (Map.Entry<String, Object> m : task.getTaskLocalVariables().entrySet()) { } } /** * 審批 */ public void employeeApply() { String instanceId = "130001"; // 執(zhí)行流程實(shí)例id Task task = taskService.createTaskQuery().processInstanceId(instanceId).singleResult(); //是否同意 0 同意, 1 駁回 map.put("status", "0"); taskService.addComment(task.getId(), instanceId, "測試評論34"); taskService.complete(task.getId(), map); log.info("流程推動(dòng)到下環(huán)節(jié)"); * 實(shí)例詳情 public void queryHistoryTask() { List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery() // 創(chuàng)建歷史活動(dòng)實(shí)例查詢 .processInstanceId(instanceId) // 執(zhí)行流程實(shí)例id .orderByTaskCreateTime() .asc() for (HistoricTaskInstance hai : list) { System.out.println("==================="); System.out.println("活動(dòng)ID:" + hai.getId()); System.out.println("流程實(shí)例ID:" + hai.getProcessInstanceId()); System.out.println("活動(dòng)名稱:" + hai.getName()); System.out.println("辦理人:" + hai.getAssignee()); System.out.println("開始時(shí)間:" + hai.getStartTime()); System.out.println("結(jié)束時(shí)間:" + hai.getEndTime()); List<Comment> comments = taskService.getTaskComments(hai.getId()); System.out.println("評論內(nèi)容:" + JSON.toJSONString(comments)); }
到此這篇關(guān)于springboot2 使用activiti6 idea插件的文章就介紹到這了,更多相關(guān)springboot2 activiti6 idea插件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java設(shè)計(jì)模式之創(chuàng)建者模式詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之創(chuàng)建者模式詳解,創(chuàng)建者模式,顧名思義,就是提供友好的創(chuàng)建對象的方式?,對象都是?new?出來的,但是在一些情況下,這種方式不是很友好,首先,它不夠直觀,需要的朋友可以參考下2023-08-08java?Comparable和Comparator的區(qū)別及作用面試精講
這篇文章主要為大家介紹了java?Comparable和Comparator的區(qū)別及作用面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Spring Boot集成MinIO對象存儲(chǔ)服務(wù)器操作步驟
通過Spring Boot集成MinIO,你可以在應(yīng)用中方便地進(jìn)行文件的存儲(chǔ)和管理,本文給大家分享Spring Boot集成MinIO對象存儲(chǔ)服務(wù)器詳細(xì)操作步驟,感興趣的朋友一起看看吧2024-01-01SpringMVC 攔截器不攔截靜態(tài)資源的三種處理方式方法
本篇文章主要介紹了SpringMVC 攔截器不攔截靜態(tài)資源的三種處理方式方法,詳細(xì)的介紹了三種方法,有興趣的可以了解一下。2017-01-01淺談Java變量賦值運(yùn)算符及相關(guān)實(shí)例
這篇文章主要介紹了Java賦值運(yùn)算符的一些知識(shí),需要的朋友可以參考下。2017-09-09Flutter ListView 上拉加載更多下拉刷新功能實(shí)現(xiàn)方法
這篇文章主要介紹了Flutter ListView 上拉加載更多下拉刷新功能實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07