1. 程式人生 > >Activiti檢視流程歷史記錄(六)

Activiti檢視流程歷史記錄(六)

1.畫流程圖。

2.部署流程。

3.啟動流程例項。

4.檢視流程任務(可無)。

5.辦理任務。

6.檢視流程歷史記錄。

流程引擎:

ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();

①查詢歷史流程例項列表

/**
	 * 查詢歷史流程例項列表
	 */
	@Test
	public void test5() {
		HistoricProcessInstanceQuery query = pe.getHistoryService()
				.createHistoricProcessInstanceQuery();
		List<HistoricProcessInstance> list = query.list();
		for (HistoricProcessInstance hi : list) {
			System.out.println(hi.getId());
		}
	}
②查詢歷史活動資料列表
/**
	 * 查詢歷史活動資料列表
	 */
	@Test
	public void test6() {
		HistoricActivityInstanceQuery query = pe.getHistoryService()
				.createHistoricActivityInstanceQuery();
		// 按照流程例項排序
		query.orderByProcessInstanceId().desc();
		query.orderByHistoricActivityInstanceEndTime().asc();
		List<HistoricActivityInstance> list = query.list();
		for (HistoricActivityInstance hi : list) {
			System.out.println(hi.getActivityId() + " " + hi.getActivityName()
					+ " " + hi.getActivityType());
		}
	}
③查詢歷史任務資料列表
/**
	 * 查詢歷史任務資料列表
	 */
	@Test
	public void test7() {
		HistoricTaskInstanceQuery query = pe.getHistoryService()
				.createHistoricTaskInstanceQuery();
		query.orderByProcessInstanceId().asc();
		query.orderByHistoricTaskInstanceEndTime().desc();
		List<HistoricTaskInstance> list = query.list();
		for (HistoricTaskInstance hi : list) {
			System.out.println(hi.getAssignee() + " " + hi.getName() + " "
					+ hi.getStartTime());
		}
	}

總結:

  由於資料庫中儲存著歷史資訊以及正在執行的流程例項資訊,在實際專案中對已完成任務的檢視頻率遠不及對代辦和可接任務的檢視,所以在activiti採用分開管理,把正在執行的交給RuntimeService管理,而歷史資料交給HistoryService來管理。