Activiti User Guide(Activiti用戶指南)-Chapter 10. History(歷史)
Posted on 2010-11-28 19:32 網路冷眼@BlogJava 閱讀(1852) 評論(0) 編輯 收藏 所屬分類: BPMChapter 10. History(歷史)
Table of Contents
History is the component that captures what happened during process execution and stores it permanently. In contrast to the runtime data, the history data will remain present in the DB also after process instances have completed.
歷史是在流程執行過程中抓取的事件以及把事件永久存儲的部件。與運行時數據相比較,歷史數據既將當前的數據也將流程已經完成的數據保留在數據庫中。
There are 3 history entities: HistoricProcessInstance
s containing information about current and past process instances, HistoricActivityInstance
s containing information about a single execution of an activity and HistoricDetail
containing various kinds of information related to either a historic process instances or an activity instance.
存在3種歷史實體:HistoricProcessInstance包含與當前和過去流程示例相關的信息;HistoricActivityInstance包含與一個活動的當個執行相關的信息;HistoricActivityInstance包含與歷史流程實例或者一個活動示例相關的不同的信息。
In the API, the HistoryService exposes this information by offering methods createHistoricProcessInstanceQuery
, createHistoricActivityInstanceQuery
and createHistoricDetailQuery
.
在API里,歷史服務(HistoryService)通過提供createHistoricProcessInstanceQuery
, createHistoricActivityInstanceQuery
and createHistoricDetailQuery
方法暴露這個信息。
Since the DB contains historic entities for past as well as ongoing instances, you might want to consider querying these tables in order to minimize access to the runtime process instance data and that way keeping the runtime execution performant.
因為DB包含過去的,正運行示例的歷史實體,所以為了最小化訪問運行流程實例的數據,你也許考慮查詢這些庫表。這種方式保留了運行期執行的效率。
Later on, this information will be exposed in Activiti Explorer and Activiti Probe. Also, it will be the information from which the reports will be generated.
最后,這個信息將會在 Activiti Explorer和 and Activiti Probe里面暴露。這將是報告將會產生信息的來源。
History configuration(歷史配置)
In the activiti.cfg.xml configuration file, you can configure the level of history archiving that needs to happen:
在activiti.cfg.xml配置文件,你能配置需要的歷史歸檔的級別:
<activiti-cfg> <history level="audit" /> ... </activiti-cfg>
Or if you're using the spring style of configuration:
或者如果你正使用Spring風格的配置方式:
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> <property name="historyLevel" value="audit" /> ... </bean>
Following history levels can be configured:
可以配置如下的歷史級別:
-
none
: skips all history archiving. This is the most performant for runtime process execution, but no historical information will be available.忽略所有的歷史歸檔。盡管對于運行期流程執行來說這是性能最高的,但是沒有歷史信息保留。
-
activity
: archives all process instances and activity instances. No details will be archived歸檔所有流程實例和活動實例。不歸檔細節。
-
audit
: This is the default. It archives all process instances, activity instances and all form properties that are submitted so that all user interaction through forms is traceable and can be audited.這是缺省級別。它歸檔所有流程實例,活動實例和提交的表單屬性。以至于通過表單的所有用戶交互都是可跟蹤并可以被審計。
-
full
: This is the highest level of history archiving and hence the slowest. This level stores all information as in theaudit
level plus all other possible details like process variable updates.這是歷史歸檔的最高級別。所以是最慢的。這個水平保存audit級別的所有信息加上像流程變量的所有其它可能的細節。
History for audit purposes(審計目的的歷史)
When configuring at least audit
level for configuration. Then all properties submitted through methods FormService.submitStartFormData(String processDefinitionId, Map<String, String> properties)
and FormService.submitTaskFormData(String taskId, Map<String, String> properties)
are recorded.
當配置configuring 至少為audit級別時,那么通過FormService.submitStartFormData(String processDefinitionId, Map<String, String> properties)
和 FormService.submitTaskFormData(String taskId, Map<String, String> properties)
方法提交的所有屬性將會被記錄。
[KNOWN LIMITATION] Currently the forms as worked out in Activiti Explorer do not yet use the submitStartFormData
and submitTaskFormData
. So the form properties are not yet archived when using the forms in Activity Explorer. @see ACT-294
[KNOWN LIMITATION] 當前在工作的表單 還沒有使用 submitStartFormData
和 submitTaskFormData
。所以當在使用表單時,表單屬性還未被歸檔。@參見 ACT-294
Form properties can be retrieved with the query API like this:
表單特性能夠像下面以查詢API方式檢索:
historyService .createHistoricDetailQuery() .onlyFormProperties() ... .list();
In that case only historic details of type HistoricFormProperty
are returned.
在那種情況下,只返回 HistoricFormProperty
類型的歷史細節。
If you've set the authenticated user before calling the submit methods with IdentityService.setAuthenticatedUserId(String)
then that authenticated user who submitted the form will be accessible in the history as well with HistoricProcessInstance.getStartFormUserId()
for start forms and HistoricActivityInstance.getAssignee()
for task forms.
如果在調用帶有IdentityService.setAuthenticatedUserId(String)
提交方法之前,你已經設置認證用戶,那么提交這個表單的那個認證用戶將會在歷史里可訪問。帶有HistoricProcessInstance.getStartFormUserId()
訪問啟動表單,帶有HistoricActivityInstance.getAssignee()
訪問任務表單。