ofbiz工作流源代码学习(2)--WfExecutionObject接口

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

WfExecutionObject接口与实现

1.概述

WfExecutionObject接口是一个抽象基类接口,它定义了WfProcess和WfActivity公有的属性,状态和操作。WfExecutionObject的操作返回的状态与流程状态是不同的。WfExecutionObject提供了方法来获取当前的状态并完成从当前状态向另一状态的转变。但WfExecutionObject的状态是执行对象的状态,WfProcess的状态是流程的状态,他们之间并没有必然的关系。

2.属性及相应方法

2.1 name

name属性是工作流执行对象的描述性名字,name属性的获取和设置是通过GenericDelegator和workEffortId来完成的:

public String name() throws WfException {

return getRuntimeObject().getString("workEffortName");

}

public void setName(String newValue) throws WfException {

GenericValue dataObject = getRuntimeObject();

try {

dataObject.set("workEffortName", newValue);

dataObject.store();

} catch (GenericEntityException e) {

throw new WfException(e.getMessage(), e);

}

}

2.2 key

key是工作流执行对象的唯一标示符。一个特定的工作流管理器产生的流程集合中,每个流程都有一个唯一的key;一个流程包含的活动集合中,每个活动都有一个唯一的key。当工作流执行对象产生时,由工作流管理器为它分配一个特定的key。

Key不同于对象标示符,它是工作流执行对象生命周期中流程或活动的reference。它由activityId或processId来表示。

2.3 process_context

process_context是定义执行对象环境的流程相关数据,它由一系列的名字属性来描述。process_context由一系列的名值对来表达,process_context的获取和设置是通过runtimeDataId和GenericValue来实现的。

2.4 priority

priority的有效值在0到5之间,一个为highest,三个为normal,另外一个为其它情况。

2.5 last_state_time

表示上次状态改变的时间,如下:

public Timestamp lastStateTime() throws WfException {

GenericValue dataObject = getRuntimeObject();

if (dataObject == null || dataObject.get("lastStatusUpdate") == null)

throw new WfException("No runtime object or status has never been set.");

return dataObject.getTimestamp("lastStatusUpdate");

}

3.状态

总的状态分为open和closed。

Open分为open.running和open.not_running。

Open.not_running分为not_running.not_started和not_running.suspended。

Closed分为closed.completed,closed.terminated和closed.aborted。

从not_running.suspended到open.running应该用resume()方法。另外调用terminate()方法,abort()方法或complete()方法,suspend()方法可以到相应的状态。当然了,最通用的改变状态的方法是用changeState(int state)方法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航