WfProcess接口
WfProcess是工作流请求的执行者,执行工作的所有工作流对象都实现了这个接口,这个接口容许工作被异步地完成,并同时被监视和控制状态。当WfProcess被产生时,它进入open.not_running.not_started状态,当它成功地完成处理时,它进入closed.completed状态。利用
WfExecutionObject提供的change_state()方法,我们可以改变WfProcess的其它状态。WfProcess是一种WfExecutionObject,如下代码所示:
public String executionObjectType() {
return "WfProcess"; //类型为WfProcess
}
流程的环境和结果
一般来讲,用WfProcessMgr工厂产生一个流程时,它的环境已经被设置好了。WfProcess环境包含如下三种信息:流程相关数据,要使用的资源,流程产生的结果。当流程启动后,流程环境能否进行修改,这要依赖不同的Wfm的实现而定。流程结果由流程环境演化而来,它也依赖于流程包含的活动,它还可能返回一个NULL值。代码示例如下:
public synchronized void receiveResults(WfActivity activity, Map results) throws WfException, InvalidData {
Map context = processContext();
context.putAll(results);
setSerializedData(context);
}
Process Requester
当流程被WfProcessMgr产生时,它被关联到一个WfRequester,这个WfRequester可能是一个活动或一个外部的客户。一个流程总会有一个请求者,OFBIZ容许为一个流程重新分配一个请求者。
通过调用请求者的receive_event()方法,流程可以将自己的状态改变等信息通知给请求者。
Process Steps
一个WfProcess有零到多个WfActivity, WfActivity代表了一个WfProcess中要执行的步骤。
WfActivity被分配给WfResource,或者被转变成请求者以便产生新的流程作为子流程。
代码示例如下:
public List getSequenceStep(int maxNumber) throws WfException {
if (maxNumber > 0)
return new ArrayList(activeSteps().subList(0, maxNumber - 1));
return activeSteps();
}
流程监控
start()方法可以启动流程,在它完成前,还可以被suspended,resumed,terminated和aborted。当然了,大多方法都是通过实现WfExecutionObject接口来实现的。
Result()被用来获取当前的流程结果数据,当流程的状态方式改变时,它发送状态改变事件给请求者,通知请求者状态的变化。