ofbiz工作流源代码学习(4)--WfProcess接口

类别:软件工程 点击:0 评论:0 推荐:
  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()被用来获取当前的流程结果数据,当流程的状态方式改变时,它发送状态改变事件给请求者,通知请求者状态的变化。

 

 

 

本文地址:http://com.8s8s.com/it/it37111.htm