package org.fh.controller.act; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.fh.controller.base.BaseController; import org.flowable.common.engine.impl.identity.Authentication; import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInstance; /** * 說明:啟動流程用 * 作者:FH Admin * from:fhadmin.cn */ public class AcStartController extends BaseController { @Autowired private RuntimeService runtimeService; //與正在執行的流程實體和執行物件相關的Service(執行管理,包括啟動、推進、洗掉流程實體等操作) /**通過KEY啟動流程實體(不帶變數) * @param processInstanceKey //流程定義的KEY * @return 回傳流程實體ID */ protected String startProcessInstanceByKey(String processInstanceKey){ ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processInstanceKey); //用流程定義的KEY啟動,會自動選擇KEY相同的流程定義中最新版本的那個(KEY為模型中的流程唯一標識) return processInstance.getId(); //回傳流程實體ID } /**通過KEY啟動流程實體(帶變數) * @param processInstanceKey 流程定義的KEY * @param map 存流程變數 * @param USERNAME 流程發起人 * @return 回傳流程實體ID */ protected String startProcessInstanceByKeyHasVariables(String processInstanceKey,Map<String,Object> map, String USERNAME){ Authentication.setAuthenticatedUserId(USERNAME);//設定流程發起人 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processInstanceKey, map); //map存盤變數 用流程定義的KEY啟動,會自動選擇KEY相同的流程定義中最新版本的那個(KEY為模型中的流程唯一標識) Authentication.setAuthenticatedUserId(null);//這個方法最終使用一個ThreadLocal型別的變數進行存盤,也就是與當前的執行緒系結,所以流程實體啟動完畢之后,需要設定為null,防止多執行緒的時候出問題, return processInstance.getId(); //回傳流程實體ID } /**通過ID啟動流程實體 * @param processInstanceId //流程定義的ID * @return 回傳流程實體ID */ protected String startProcessInstanceById(String processInstanceId){ ProcessInstance processInstance = runtimeService.startProcessInstanceById(processInstanceId); //用流程定義的ID啟動 return processInstance.getId(); //回傳流程實體ID } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/378089.html
標籤:Java
上一篇:如何在專案中記錄日志資訊?
