activiti流程實例

ProcessInstance代表流程定義的執行實例。如范冰冰請了一天的假,她就必須發出一個流程實例的申請。一個流程實例包括了所有的運行節點。我們可以利用這個對象來了解當前流程實例的進度等信息。

package com.liuzm.activiti.day1;

import java.util.List;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.activiti.engine.task.Task;
import org.junit.Test;

//ProcessInstance(流程實例)    : 按照某規則,一次實際的執行
public class ProcessInstanceTest {
	// 獲取核心ProcessEngine類
	private ProcessEngine processEngine = ProcessEngines
			.getDefaultProcessEngine();

	// 1. 啓動流程
	@Test
	public void startProcess() throws Exception {
		// 獲取服務對象
		RuntimeService runtimeService = processEngine.getRuntimeService();
		// 通過ID啓動流程,可以指定啓動一個流程
		// runtimeService.startProcessInstanceById(processDefinitionId)
		// 通過key啓動流程,可以自動啓動最新版本的那一個規則
		String processDefinitionKey = "myProcess";
		ProcessInstance processInstance = runtimeService
				.startProcessInstanceByKey(processDefinitionKey);
		System.out.println(processInstance);
	}

	// 2. 查看任務(私有)
	@Test
	public void queryPersonalTask() throws Exception {
		// 獲取服務
		TaskService taskService = processEngine.getTaskService();
		//

		String assignee = "範爺";
		List<Task> list = taskService.createTaskQuery().taskAssignee(assignee)
				.list();
		System.out.println("=================【" + assignee
				+ "】的私有任務列表======================================");
		for (Task task : list) {
			System.out.println("id:" + task.getId() + ",name:" + task.getName()
					+ ",assignee:" + task.getAssignee() + ",createTime:"
					+ task.getCreateTime());
		}
	}

	// 共有任務查看
	@Test
	public void queryCommonTask() throws Exception {
		TaskService taskService = processEngine.getTaskService();
		// 查詢
		String candidateUser = "範爺助理";
		List<Task> list = taskService.createTaskQuery()
				.taskCandidateUser(candidateUser).list();
		System.out.println("=================【" + candidateUser
				+ "】的公有任務列表======================================");
		for (Task task : list) {
			System.out.println("id:" + task.getId() + ",name:" + task.getName()
					+ ",assignee:" + task.getAssignee() + ",createTime:"
					+ task.getCreateTime());
		}
	}

	// 3. 認領任務
	@Test
	public void claimTask() throws Exception {
		TaskService taskService = processEngine.getTaskService();
		//

		String taskId = "504";
		String userId = "範爺經紀人";
		taskService.claim(taskId, userId);
	}

	// 4. 辦理任務
	@Test
	public void completeTask() throws Exception {
		TaskService taskService = processEngine.getTaskService();
		// 辦理任務
		String taskId = "504";
		taskService.complete(taskId);
	}

	// 5. 查看流程的狀態
	@Test
	public void viewProcessState() throws Exception {
		// 獲取服務
		RuntimeService runtimeService = processEngine.getRuntimeService();
		// 獲得流程實例
		ProcessInstanceQuery query = runtimeService
				.createProcessInstanceQuery();
		// 添加查詢條件
		String processDefinitionId = "1701";
		query.processDefinitionId(processDefinitionId);
		// 查詢
		ProcessInstance singleResult = query.singleResult();
		// 顯示流程狀態
		if (singleResult != null) {
			System.out.println("當前流程在: " + singleResult.getActivityId());
		} else {
			System.out.println("流程已經結束!");
		}
	}

}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章