ofbiz工作流源代码学习(3)--WfProcessMgr接口

类别:软件工程 点击:0 评论:0 推荐:
WfProcessMgr接口

工作流管理器(WfProcessMgr)代表了一个特定流程的模板,它用来创建工作流流程的实例。逻辑上讲,它是工作流的创建工厂和定位器,它能提供一些元信息给外界访问,如流程所需的环境,流程产生的结果等等。

知识点一:WfProcessMgr的所有属性都是只读的,当WfProcessMgr被安装时,它的属性就被设定好,以后将不能再进行改动;这与其他对象和接口的属性不一样。

工作流管理器的名字用name表示,在一个业务域中,name唯一地标示了一个工作流管理器。

category属性用来对工作流管理器进行分类,它在工作流管理器初始化时被设置并且不能被修改。

Version属性表示工作流管理器的版本。

description属性表示工作流管理器的描述性内容。

代码示例如下:

    public String name() throws WfException {

        return processDef.getString("name");

}

public String category() throws WfException {

        return processDef.getString("category");

    }

    public String version() throws WfException {

        return processDef.getString("version");

    }

    public String description() throws WfException {

        return processDef.getString("description");

    }

知识点二:工作流管理器用来产生零到多个流程,并与他们关联。

代码说明如下:

public int howManyProcess() throws WfException {

        return processList.size();   //流程的个数

}

public List getSequenceProcess(int maxNumber) throws WfException {

        if (maxNumber > 0)  

            return new ArrayList(processList.subList(0, maxNumber - 1));

        return processList;   //以sequence方式返回process的List

}

public Iterator getIteratorProcess() throws WfException {

        return processList.iterator();

}

public boolean isMemberOfProcess(WfProcess member) throws WfException {

        return processList.contains(member);  //流程列表中是否包括某个流程

}

知识点三:工作流管理器有两种状态:enabled和disabled。Enabled表示在当前状态可以产生新的流程;disabled表示在当前状态不能产生新的流程。

public List processMgrStateType() throws WfException {

        String[] list = {"enabled", "disabled"};  //String数组

        return Arrays.asList(list);

}

public void setProcessMgrState(String newState) throws WfException, TransitionNotAllowed {           

        if (!newState.equals("enabled") || !newState.equals("disabled"))

            throw new TransitionNotAllowed();  //只能有两种状态

        this.state = newState;

 }

知识点四:工作流管理器产生流程时,先产生流程实例,然后将流程实例与requester关联起来。流程实例产生时的状态为not_running.not_started

public WfProcess createProcess(WfRequester requester) throws WfException, NotEnabled,

            InvalidRequester, RequesterRequired {           

        if (state.equals("disabled"))

            throw new NotEnabled();  //工作流管理器当前的状态不容许产生新流程

 

        if (requester == null)

            throw new RequesterRequired(); //必须指定requester

 

        // test if the requestor is OK: how?

        WfProcess process = WfFactory.getWfProcess(processDef, this); //用流程定义产生流程

 

        try {

            process.setRequester(requester);  //设置requester

        } catch (CannotChangeRequester ccr) {

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

        }

        processList.add(process);   //加入到队列中

        Debug.logVerbose("[WfProcessMgr.createProcess] : Process created.", module);

        return process;

 }

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