學(xué)習(xí)應(yīng)用osworkflow 理解應(yīng)用osworkflow-2.7.0.jar是必須的。下面我就個(gè)人理解談?wù)剬?duì)osworkflow-2.7.0.jar的認(rèn)識(shí)。由于個(gè)人目前學(xué)習(xí)主要側(cè)重于輕量級(jí)J2EE。所以對(duì)EJB這部分認(rèn)識(shí)不深也就不妄加評(píng)價(jià)了。而且每個(gè)包都是我自己所能理解或者自己認(rèn)為比較能常用的類(lèi)和接口進(jìn)行初步說(shuō)明。不足之處請(qǐng)見(jiàn)諒!另外此文也是搜索了大量了網(wǎng)絡(luò)資源融合個(gè)人理解所寫(xiě)。所以會(huì)出現(xiàn)此文中的某一部分與網(wǎng)上的其他文章類(lèi)似的情況。最終目的在于大家共同學(xué)習(xí)共同進(jìn)步,如果你看了此文,對(duì)osworkflow有了新認(rèn)識(shí),請(qǐng)不要感激我,先感激現(xiàn)在的網(wǎng)絡(luò)資源吧~~GOOD LUCK!
這個(gè)jar包主要包括如下幾個(gè)大分類(lèi):
主要包括核心的工作流接口和類(lèi)
先說(shuō)最最核心的就是:
加*的為我認(rèn)為需要重點(diǎn)把握理解的方法。
AbstractWorkflow(類(lèi)):AbstractWorkflow類(lèi)是workflow接口的最基本的實(shí)現(xiàn)。
*1.public int[] getAvailableActions(long id, Map inputs)方法:
返回當(dāng)前可以執(zhí)行的Ation。
2. public void setConfiguration(Configuration configuration)方法:
設(shè)置工作流配置方法。
3.public Configuration getConfiguration()方法:
返回工作流配置方法,如果沒(méi)有獲得配置信息,初始化配置信息。
4.public List getCurrentSteps(long id):
獲得工作流當(dāng)前所在步驟。
5.public int getEntryState(long id):
獲得工作流的狀態(tài)。
6.public List getHistorySteps(long id)
獲得工作流的歷史步驟。
7. public Properties getPersistenceProperties()
獲得設(shè)置的持久化參數(shù)。
8.public PropertySet getPropertySet(long id)
得到工作流的PropertySet,調(diào)用store中的方法。
9.public List getSecurityPermissions(long id)
得到工作流當(dāng)前Step的permissions。
10.public WorkflowDescriptor getWorkflowDescriptor(String workflowName)
得到工作流的定義。
11.public String getWorkflowName(long id)
根據(jù)工作流實(shí)例返回工作流定義名。
12. public String[] getWorkflowNames()
返回系統(tǒng)中配置的所有工作流的名字。
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是不是可以執(zhí)行。
14.public boolean canModifyEntryState(long id, int newState)
判斷工作流是不是可以轉(zhuǎn)換到指定狀態(tài)。
15.public void changeEntryState(long id, int newState) throws WorkflowException
轉(zhuǎn)換工作流狀態(tài)。
最最常用的方法,核心的方法doAction(這個(gè)方法一定要看好,要不就等于沒(méi)學(xué)這個(gè)類(lèi)了。)
*16.public void doAction(long id, int actionId, Map inputs) throws WorkflowException
執(zhí)行Action。
17.public void executeTriggerFunction(long id, int triggerId) throws WorkflowException
調(diào)用工作流的Trigger Function
*18.public long initialize(String workflowName, int initialAction, Map inputs) throws InvalidRoleException, InvalidInputException, WorkflowException
初始化一個(gè)新的流程實(shí)例。返回流程實(shí)例id。
*19.public List query(WorkflowQuery query),public List query(WorkflowExpressionQuery query)
查詢(xún)流程實(shí)例。
20.public boolean removeWorkflowDescriptor(String workflowName) throws FactoryException
刪除已經(jīng)配置的工作流定義。
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)
返回可執(zhí)行的AutoActions。
24.protected List getAvailableAutoActionsForStep(WorkflowDescriptor wf, Step step, Map transientVars, PropertySet ps) throws WorkflowException
返回指定Step中可執(zhí)行的AutoActions。
25.protected WorkflowStore getPersistence() throws StoreException
返回配置的store。
26.protected void checkImplicitFinish(long id) throws WorkflowException
判斷工作流是不是還有可執(zhí)行的Action,如果沒(méi)有,完成此工作流實(shí)例。
27.protected void completeEntry(long id, Collection currentSteps) throws StoreException
結(jié)束工作流實(shí)例,就是把改變流程實(shí)例的狀態(tài)并把當(dāng)前的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
產(chǎn)生臨時(shí)變量transientVars,包含context,entry,store,descriptor,actionId,currentSteps,以及定義的register和用戶(hù)的輸入變量。
31.protected void verifyInputs(WorkflowEntry entry, List validators, Map transientVars, PropertySet ps) throws WorkflowException
驗(yàn)證用戶(hù)的輸入。
*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
判斷工作流是不是可以實(shí)例化。
35.private Step createNewCurrentStep(ResultDescriptor theResult, WorkflowEntry entry, WorkflowStore store, int actionId, Step currentStep, long[] previousIds, Map transientVars, PropertySet ps) throws WorkflowException
產(chǎn)生新的當(dāng)前Step。
36.private void executeFunction(FunctionDescriptor function, Map transientVars, PropertySet ps) throws WorkflowException
執(zhí)行Function。
37.private boolean transitionWorkflow(WorkflowEntry entry, List currentSteps, WorkflowStore store, WorkflowDescriptor wf, ActionDescriptor action, Map transientVars, Map inputs, PropertySet ps) throws WorkflowException
完成工作流的transation。
接口部分:
Register
RegisterRemote
Validator
Conditions
上面這幾個(gè)定義了相應(yīng)的基本方法,如register則定義了返回對(duì)象的方法registerVariable以及參數(shù)形式,Validator則定義了validate方法
FunctionProvider(接口):所有的function包括是pre和post都必須實(shí)現(xiàn)的接口,它其中有個(gè)execute方法。
Workflow(接口):AbstractWorkflow, BasicSOAPWorkflow, EJBWorkflow, OfbizSOAPWorkflow這些類(lèi)都是實(shí)現(xiàn)了這個(gè)接口,所以在初始化一個(gè)workflow對(duì)象的時(shí)候,就可以用它來(lái)做Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));,這也算是個(gè)老祖宗接口了。呵呵^_^
JoinNodes(類(lèi)):
只有一個(gè)方法,根據(jù)stepid返回step
public Step getStep(int stepId)
Exception部分:
包括各種exception:
FactoryException
InternalWorkflowException
InvalidActionException
InvalidEntryStateException
InvalidInputException
InvalidRoleException
InvalidWorkflowDescriptorException
QueryNotSupportedException
StoreException
WorkflowException
這里workflowExeception是繼承自Exception類(lèi)的,而其他則繼承自WorkflowException類(lèi)。如InvalidInputException則是在Validator校驗(yàn)時(shí)候,如果是java-based類(lèi)型則拋出此異常。
聯(lián)系客服