软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
ofbiz工作流源代码学习(4)--WfProcess接口

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

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,terminatedaborted。当然了,大多方法都是通过实现WfExecutionObject接口来实现的。

Result()被用来获取当前的流程结果数据,当流程的状态方式改变时,它发送状态改变事件给请求者,通知请求者状态的变化。

 

 

 




相关文章

相关软件