主流流程引擎 flowable 啟動流程
阿新 • • 發佈:2021-12-31
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 } }