1.com.opensymphony.workflow.Workflow 工作流的用戶接口。
?????? 主要定義了用戶對工作流的操作方法和用戶獲得工作流信息的方法。如doAction(long id, int actionId, Map inputs)方法可以執行工作流的Action并產生transaction;用戶調用getAvailableActions(long id, Map inputs)可以獲得知道工作流實例中符合條件的可以執行的Action。
2.com.opensymphony.workflow.WorkflowContext 工作流的Context接口。
????? 只有兩個方法,其中getCaller()獲得調用者,setRollbackOnly()可以回滾Action造成的transaction。
????? setRollbackOnly()方法非常重要,可以在此方法中實現工作流數據與業務數據的事務處理。由于工作流引擎將流程數據與業務數據分離開管理,所以工作流數據與業務數據之間的事務處理往往比較困難,甚至有很多商業的工作流引擎都沒有解決這個問題,造成軟件上的漏洞。可惜在BasicWorkflowContext中并沒有實現回滾時的事務處理,但實現起來應該不會很困難,在以后會單獨考慮。
3.com.opensymphony.workflow.spi.WorkflowEntry 工作流實例的接口。
???? 定義了獲得工作流實例信息的方法。
4.com.opensymphony.workflow.config.Configuration 工作流配置接口。
????? 獲得osworkflw的配置信息和流程的定義信息, osworkflow中的例子就是使用此接口的默認實現。如果想讓osworkflw與自己的系統更好的整合,這個接口需要自己實現。
5.com.opensymphony.workflow.loader.AbstractWorkflowFactory 流程定義的解析器。
????? osworkflow中提供了此抽象類的3種實現,最常用的是XMLWorkflowFactory,可以對編寫的工作流定義xml文件進行解析。
6.com.opensymphony.workflow.spi.WorkflowStore 工作流存儲接口。
??????實現此接口可以實現用多種途徑保存工作流信息,jdbc,hibernate,ejb,memory.........
AbstractWorkflow類是workflow接口的最基本的實現。
1.public int[] getAvailableActions(long id, Map inputs)方法:
返回當前可以執行的Ation。
- 得到工作流流程實例。
- 得到工作流實例的定義。
- 得到工作流實例的PropertySet。
- 得到工作流的當前Step。
- 產生TransientVars。
- 得到Global Actions。
- 判斷可以執行的Global Action增加到可執行Action列表中。
- 獲得當前Steps中的可執行Action并添加到可執行Action列表中。
- 返回可執行Actions。
2. public void setConfiguration(Configuration configuration)方法:
設置工作流配置方法。
3.public Configuration getConfiguration()方法:
返回工作流配置方法,如果沒有獲得配置信息,初始化配置信息。
4.public List getCurrentSteps(long id):
獲得工作流當前所在步驟。
5.public int getEntryState(long id):
獲得工作流的狀態。
6.public List getHistorySteps(long id)
獲得工作流的歷史步驟。
7. public Properties getPersistenceProperties()
獲得設置的持久化參數。
8.public PropertySet getPropertySet(long id)
得到工作流的PropertySet,調用store中的方法。
9.public List getSecurityPermissions(long id)
得到工作流當前Step的permissions。
10.public WorkflowDescriptor getWorkflowDescriptor(String workflowName)
得到工作流的定義。
11.public String getWorkflowName(long id)
根據工作流實例返回工作流定義名。
12. public String[] getWorkflowNames()
返回系統中配置的所有工作流的名字。
13.public boolean canInitialize(String workflowName, int initialAction),public boolean canInitialize(String workflowName, int initialAction, Map inputs),private boolean canInitialize(String workflowName, int initialAction, Map transientVars, PropertySet ps) throws WorkflowException
判斷指定的工作流初始化Action是不是可以執行。
14.public boolean canModifyEntryState(long id, int newState)
判斷工作流是不是可以轉換到指定狀態。
- 不可以轉換到CREATED狀態。
- CREATED,SUSPENDED可以轉換到ACTIVATED狀態。
- ACTIVATED可以轉換到SUSPENDED狀態。
- CREATED,ACTIVATED,SUSPENDED?可以轉換到KILLED狀態。
15.public void changeEntryState(long id, int newState) throws WorkflowException
轉換工作流狀態。
16.public void doAction(long id, int actionId, Map inputs) throws WorkflowException
執行Action。
- 獲得工作流store,和流程實例entry。
- 判斷是不是活動的工作流,不是就返回。
- 獲得工作流的定義。
- 獲得工作流當前所再Steps。
- 獲得工作流PropertySet。
- 生成transientVars。
- 從GlobalActions中和當前Steps的普通Actions中判斷執行的Action是否試可執行的。
- 完成Action的Transition。
17.public void executeTriggerFunction(long id, int triggerId) throws WorkflowException
調用工作流的Trigger Function
18.public long initialize(String workflowName, int initialAction, Map inputs) throws InvalidRoleException, InvalidInputException, WorkflowException
初始化一個新的流程實例。返回流程實例id。
19.public List query(WorkflowQuery query),public List query(WorkflowExpressionQuery query)
查詢流程實例。
20.public boolean removeWorkflowDescriptor(String workflowName) throws FactoryException
刪除已經配置的工作流定義。
21.public boolean saveWorkflowDescriptor(String workflowName, WorkflowDescriptor descriptor, boolean replace) throws FactoryException
保存工作流定義。
22.protected List getAvailableActionsForStep(WorkflowDescriptor wf, Step step, Map transientVars, PropertySet ps) throws WorkflowException
獲得指定步驟的可用Actions。
23.protected int[] getAvailableAutoActions(long id, Map inputs)
返回可執行的AutoActions。
24.protected List getAvailableAutoActionsForStep(WorkflowDescriptor wf, Step step, Map transientVars, PropertySet ps) throws WorkflowException
返回指定Step中可執行的AutoActions。
25.protected WorkflowStore getPersistence() throws StoreException
返回配置的store。
26.protected void checkImplicitFinish(long id) throws WorkflowException
判斷工作流是不是還有可執行的Action,如果沒有,完成此工作流實例。
27.protected void completeEntry(long id, Collection currentSteps) throws StoreException
結束工作流實例,就是把改變流程實例的狀態并把當前的Steps都放入到歷史表中。?
28.protected boolean passesCondition(ConditionDescriptor conditionDesc, Map transientVars, PropertySet ps, int currentStepId) throws WorkflowException
29.protected boolean passesCondition(ConditionDescriptor conditionDesc, Map transientVars, PropertySet ps, int currentStepId) throws WorkflowException,protected boolean passesConditions(String conditionType, List conditions, Map transientVars, PropertySet ps, int currentStepId) throws WorkflowException
判斷條件是不是符合。
30.protected void populateTransientMap(WorkflowEntry entry, Map transientVars, List registers, Integer actionId, Collection currentSteps) throws WorkflowException
產生臨時變量transientVars,包含context,entry,store,descriptor,actionId,currentSteps,以及定義的register和用戶的輸入變量。
31.protected void verifyInputs(WorkflowEntry entry, List validators, Map transientVars, PropertySet ps) throws WorkflowException
驗證用戶的輸入。
32.private boolean isActionAvailable(ActionDescriptor action, Map transientVars, PropertySet ps, int stepId) throws WorkflowException
判斷Action是否可用。
33.private Step getCurrentStep(WorkflowDescriptor wfDesc, int actionId, List currentSteps, Map transientVars, PropertySet ps) throws WorkflowException
獲得Action所在Step。
34.private boolean canInitialize(String workflowName, int initialAction, Map transientVars, PropertySet ps) throws WorkflowException
判斷工作流是不是可以實例化。
35.private Step createNewCurrentStep(ResultDescriptor theResult, WorkflowEntry entry, WorkflowStore store, int actionId, Step currentStep, long[] previousIds, Map transientVars, PropertySet ps) throws WorkflowException
產生新的當前Step。
- 從resulte中獲得nextStep,如果為-1,nextStep為當前Step。
- 獲得定義中的owner,oldStatus,status。
- 完成當前Step,并且將當前Step保存到歷史庫中。
- 生成新的Step。
36.private void executeFunction(FunctionDescriptor function, Map transientVars, PropertySet ps) throws WorkflowException
執行Function。
37.private boolean transitionWorkflow(WorkflowEntry entry, List currentSteps, WorkflowStore store, WorkflowDescriptor wf, ActionDescriptor action, Map transientVars, Map inputs, PropertySet ps) throws WorkflowException
完成工作流的transation。
- 得到配置文件流,并解析。
- 獲得持久化信息,包括持久化類的路徑和持久化類初始化參數。
- 獲得工作流信息解析類路徑,并初始化。
4. public WorkflowStore getWorkflowStore() throws StoreException
獲得工作流初始化類。
轉自于ch(耐心)