Activiti_抽取工具類
阿新 • • 發佈:2018-12-03
BaseBpmn.java
package base; import java.io.InputStream; import java.util.List; import java.util.Map; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.DeploymentBuilder; import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ExecutionQuery; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstanceQuery; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; public class BaseBpmn { // 獲取核心物件 服務大管家 protected ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine(); // 獲取執行的service服務 protected RuntimeService runtimeService = defaultProcessEngine.getRuntimeService(); // 獲取TaskService protected TaskService taskService = defaultProcessEngine.getTaskService(); /** * 部署檔案 * * @param resource * @param name */ public void deploy(String resource, String name) { // 獲取核心物件 服務大管家 // 獲取服務 RepositoryService repositoryService = defaultProcessEngine.getRepositoryService(); // 部署物件 DeploymentBuilder createDeployment = repositoryService.createDeployment(); // 上傳資源 InputStream inputStream = this.getClass().getResourceAsStream(resource + ".bpmn"); InputStream inputStream2 = this.getClass().getResourceAsStream(resource + ".png"); createDeployment.addInputStream(resource + ".bpmn", inputStream); createDeployment.addInputStream(resource + ".png", inputStream2); createDeployment.name(name); // 部署 createDeployment.deploy(); } /** * 啟動例項帶流程變數 */ public ProcessInstance start(String key, Map<String, Object> variables) { // 啟動 // 設定一下變數 ProcessInstance startProcessInstanceByKey = runtimeService.startProcessInstanceByKey(key, variables); return startProcessInstanceByKey; } /** * 啟動例項帶流程變數 */ public ProcessInstance start(String key) { // 啟動 // 設定一下變數 ProcessInstance startProcessInstanceByKey = runtimeService.startProcessInstanceByKey(key); return startProcessInstanceByKey; } /** * 完成任務 帶流程變數 方便流轉到下以個節點 */ public void compleTask(String taskId, Map<String, Object> variables) throws Exception { taskService.complete(taskId, variables); } /** * 完成任務 */ public void compleTask(String taskId) throws Exception { taskService.complete(taskId); } /** * 完成任務 例項id 和 人的名稱 */ public void compleTaskByPIdAndName(String pid, String name) throws Exception { // 獲取查詢物件 TaskQuery createTaskQuery = taskService.createTaskQuery(); // 獲取任務id Task task = createTaskQuery.processInstanceId(pid).taskAssignee(name).singleResult(); // 完成 taskService.complete(task.getId()); } /** * 完成任務 例項id 和 人的名稱 */ public void compleTaskByPIdAndName(String pid, String name, Map<String, Object> variables) throws Exception { // 獲取查詢物件 TaskQuery createTaskQuery = taskService.createTaskQuery(); // 獲取任務id Task task = createTaskQuery.processInstanceId(pid).taskAssignee(name).singleResult(); // 完成 taskService.complete(task.getId(), variables); } /** * 查詢某個人的任務列表 */ public List<Task> queryTaskList(String name) throws Exception { // 獲取查詢物件 TaskQuery createTaskQuery = taskService.createTaskQuery(); // 設定查詢條件 createTaskQuery.taskAssignee(name); // 查詢列表 List<Task> list = createTaskQuery.list(); return list; } /** * 查詢某個人的當前任務 */ public Task queryTaskByName(String pid, String name) throws Exception { // 獲取查詢物件 TaskQuery createTaskQuery = taskService.createTaskQuery(); // 設定查詢條件 createTaskQuery.taskAssignee(name); createTaskQuery.processInstanceId(pid); // Task task = createTaskQuery.singleResult(); return task; } /** * 查詢當前執行物件(當前活動節點) */ public Execution queryExcution(String pid, String actid) throws Exception { // 獲取查詢物件 ExecutionQuery createExecutionQuery = runtimeService.createExecutionQuery(); // 設定查詢條件 Execution execution = createExecutionQuery.processInstanceId(pid).activityId(actid).singleResult(); // 返回 return execution; } // 查詢流程是否結束 public void isEnd(String pid) { // 查詢物件 ProcessInstanceQuery createProcessInstanceQuery = runtimeService.createProcessInstanceQuery(); // 根據id ProcessInstance singleResult = createProcessInstanceQuery.processInstanceId(pid).singleResult(); // 如果singleResult找到說明流程還沒有結束 if (singleResult != null) { System.out.println("流程未結束或不存在"); } else { System.out.println("流程結束"); } } }