王朝网络
分享
 
 
 

osworkflow API 之 com.opensymphony.workflow

王朝java/jsp·作者佚名  2006-01-31
宽屏版  字体: |||超大  

学习应用osworkflow 理解应用osworkflow-2.7.0.jar是必须的。下面我就个人理解谈谈对osworkflow-2.7.0.jar的认识。由于个人目前学习主要侧重于轻量级J2EE。所以对EJB这部分认识不深也就不妄加评价了。而且每个包都是我自己所能理解或者自己认为比较能常用的类和接口进行初步说明。不足之处请见谅!另外此文也是搜索了大量了网络资源融合个人理解所写。所以会出现此文中的某一部分与网上的其他文章类似的情况。最终目的在于大家共同学习共同进步,如果你看了此文,对osworkflow有了新认识,请不要感激我,先感激现在的网络资源吧~~GOOD LUCK!

这个jar包主要包括如下几个大分类:

com.opensymphony.workflow

主要包括核心的工作流接口和类

先说最最核心的就是:

加*的为我认为需要重点把握理解的方法。

AbstractWorkflow(类):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

转换工作流状态。

最最常用的方法,核心的方法doAction(这个方法一定要看好,要不就等于没学这个类了。)

*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。

接口部分:

Register

RegisterRemote

Validator

Conditions

上面这几个定义了相应的基本方法,如register则定义了返回对象的方法registerVariable以及参数形式,Validator则定义了validate方法

FunctionProvider(接口):所有的function包括是pre和post都必须实现的接口,它其中有个execute方法。

Workflow(接口):AbstractWorkflow, BasicSOAPWorkflow, EJBWorkflow, OfbizSOAPWorkflow这些类都是实现了这个接口,所以在初始化一个workflow对象的时候,就可以用它来做Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));,这也算是个老祖宗接口了。呵呵^_^

JoinNodes(类):

只有一个方法,根据stepid返回step

public Step getStep(int stepId)

Exception部分:

包括各种exception:

FactoryException

InternalWorkflowException

InvalidActionException

InvalidEntryStateException

InvalidInputException

InvalidRoleException

InvalidWorkflowDescriptorException

QueryNotSupportedException

StoreException

WorkflowException

这里workflowExeception是继承自Exception类的,而其他则继承自WorkflowException类。如InvalidInputException则是在Validator校验时候,如果是java-based类型则抛出此异常。

未完待续……

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有