`
hongsoft
  • 浏览: 302460 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ofbiz工作流源代码学习(1)---WfRequester接口

阅读更多

WfRequester接口与实现

WfRequester接口是一个和工作流流程的执行及结果有直接关系的接口,它代表了对要做的工作的请求。

 <!----><o:p></o:p>

知识点:WfRequester接口的performerWfProcess,一个WfRequester接口可以对应好几个WfProcess<o:p></o:p>

代码示例:

          protected Map performers = null;

          this.performers = new HashMap(); //构造procesrequesterMap

          performers.put(process, requester);// registerProcess( )requester注册process

下面的方法与performer有关:

    /**

*@see org.ofbiz.core.workflow.WfRequester#howManyPerformer()

*获取performersize

     */   

    public int howManyPerformer() throws WfException {

        return performers.size();

    }

 

    /**

     * @see org.ofbiz.core.workflow.WfRequester#getIteratorPerformer()

*获取performerIterator

*/

    public Iterator getIteratorPerformer() throws WfException {

        return performers.keySet().iterator();

    }

  

    /**

     * @see org.ofbiz.core.workflow.WfRequester#getSequencePerformer(int)

*获取List形式的performer

*/

    public List getSequencePerformer(int maxNumber) throws WfException {

        if (maxNumber > 0)

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

        return new ArrayList(performers.keySet());

    }

 <o:p></o:p>

 <o:p></o:p>

知识点:WfRequester接口常作为启动process的对象的接口<o:p></o:p>

作为流程的启动者它通常做三件事情:

1 setting up the context

2)       start the process

3)       get the status and results

 <o:p></o:p>

知识点:WfRequester接口和WfProcess的关联,一般有两种应用场合:<o:p></o:p>

1)  工作流过程的演化 :在这种场合下,WfActivity被精化为WfRequester,这样,它有一个执行者WfProcessWfProcess执行一个请求就是执行一个活动。

2)  WfRequesterWfProcess连接到其它应用。

 <o:p></o:p>

知识点:WfProcess一般用void receiveEvent(WfEventAudit event)方法来将工作流事件(event)通知给request<o:p></o:p>

在发生活动的完成,中断,中止等事件时,流程必须通知requester

代码示例:

       /**

        *@see org.ofbiz.core.workflow.WfRequester#receiveEvent()

        */

    public synchronized void receiveEvent(WfEventAudit event) throws WfException, InvalidPerformer {

        // Should the source of the audit come from the process? if so use this.

        WfProcess process = null;

 <o:p></o:p>

        try {

            process = (WfProcess) event.source();  //事件来源于process

        } catch (SourceNotAvailable sna) {

            throw new InvalidPerformer("Could not get the performer", sna);

        } catch (ClassCastException cce) {

            throw new InvalidPerformer("Not a valid process object", cce);

        }

        //如果事件源不是与requester关联的process,则抛出异常

        if (process == null)

            throw new InvalidPerformer("No performer specified");

        if (!performers.containsKey(process))

            throw new InvalidPerformer("Performer not assigned to this requester");

 <o:p></o:p>

        GenericRequester req = null;

        //如果事件源是与requester关联的process,则获取状态和结果

        if (performers.containsKey(process))

            req = (GenericRequester) performers.get(process);

        if (req != null)

            req.receiveResult(process.result());

    }

 <o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

分享到:
评论

相关推荐

    ofbiz--A Beginners Development Guide--Part 3

    OFBiz通常按照模块划分代码,每个模块有自己的服务组件、实体模型(Entity)、工作流(WorkEffort)和Web界面资源。源码的学习有助于理解OFBiz内部的工作流程,从而更好地进行开发。 对于初学者来说,熟悉OFBiz的...

    ofbiz--A Beginners Development Guide--Part 1

    组件是OFBiz中的基本组织单元,包含服务、实体模型、页面、工作流等。通过修改此文件,你可以控制哪些组件在特定环境中被加载,从而实现功能裁剪或扩展。 四、实践环节 在OFBiz学习过程中,实践尤为重要。`...

    ofbiz--A Beginners Development Guide--Part 2

    `component-load.xml`文件是加载这些组件的关键配置文件,它定义了组件的元数据,包括服务、实体模型、工作流和其他资源。 3. **component-load.xml解析** `component-load.xml`是Ofbiz系统启动时读取的配置文件之...

    CVE-2020-9496 ofbiz反序列化漏洞分析1

    然后,使用wget下载OFBiz的源代码,解压缩后,使用Gradle进行编译和运行。 POC id是CVE-2020-9496,info是Apache OFBiz XML-RPC Java Deserialization,author是dwisiswant0,severity是medium。该POC检测了OFBiz的...

    OFBiz Tutorial - A Beginners Development Guide的Practice案例源代码

    Ofbiz 官网上的OFBiz Tutorial - A Beginners Development ...同时有一部分操作和源代码没有在教程中说明或者只是简单一提带过,此份案例源代码在13版上完整实现了整个案例,可以帮助初学者避免学习官网教程时的疑惑。

    apache-ofbiz-16.11.05

    最新版OFBiz,apache-ofbiz-16.11.05,apache-ofbiz-16.11.05

    ofbiz源代码,库

    刚一近公司就让我用ofbiz做项目,ofbiz中文版+中文文档,liferay中文版+中文文档

    ofbiz安装与配置

    1. SVN 插件安装:我们需要在 Eclipse 中安装 SVN 插件,以便从 SVN 仓库中下载 Ofbiz 的源代码。我们可以在 Eclipse 的“Help”菜单中选择“Install New Software...”,然后输入 Subclipse 安装地址:...

    ofbiz学习文档

    ofbiz很好的学习资料,学习了很多,希望对你也能有帮助!

    OFBiz-manual-zh.doc

    OFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.doc

    Ofbiz-16-全量数据库873张表.rar

    这个压缩包文件"Ofbiz-16-全量数据库873张表.rar"包含了Apache Ofbiz 16版本的全量数据库结构,包括873个数据表的SQL脚本。这些脚本用于创建和初始化数据库,对于理解和开发基于Ofbiz的应用程序至关重要。 1. **...

    OFBiz-alipay 配置文档

    **OFBiz-alipay 配置文档** OFBiz(Open For Business Project)是一个开源的企业级应用框架,用于构建和管理电子商务网站、供应链管理、CRM、ERP等业务系统。它提供了全面的业务组件和服务,使得开发者可以快速...

    OFBiz-API-Docs

    OFBiz API 文档,英文html版。使用官方资源中的ant命令自动生成,无任何修改。有兴趣的朋友可以自己生成,ant命令是:docs-all,该命令生成帮助文档时会获取操作系统语言设置,要生成英文文档请先将操作系统语言改为...

    Apache OFBiz Development The Beginner's Tutorial

    - **流程中的更多细节**:深入探讨 OFBiz 中工作流的其他方面。 - **运行中的引擎可进行的更改**:讲解在系统运行状态下可进行的某些修改。 - **快速重置工作区域**:提供快速恢复初始状态的方法。 - **跳过某些...

    ofbiz学习笔记(自学整理)

    Ofbiz的核心概念包括组件、服务、实体、工作流和事件。组件是Ofbiz中的基本组织单元,它们封装了特定的业务功能。比如,“产品”组件处理与产品相关的所有事务,而“订单”组件则负责订单管理。服务是Ofbiz中执行...

    ofbiz资料大全

    OFBiz-技术文档.rar OFBiz API中文版.rar Apache OFBiz Cookbook Sep 2010.rar Opentaps widget使用说明.rar OFBiz.Development.2008.rar Groovy中文教程.rar freemarker中文手册.rar ofbiz10.04表结构.rar ...

    ofbiz 英文pdf

    - **第一章:OFBiz入门**(Chapter1:Getting Started with OFBiz) - **获取OFBiz代码**:通过SVN下载OFBiz项目。 - **下载并安装SVN**:详细介绍如何安装Subversion客户端。 - **使用TortoiseSVN**:推荐使用...

    Ofbiz-minilang标签示例

    以下是一些Ofbiz-Minilang的关键标签示例及其详细解释: 1. **验证**: - `login-required`: 这个标签确保用户已经登录才能执行后续操作。如果用户未登录,它将跳转到登录页面。 - `use-transaction`: 开启一个新...

Global site tag (gtag.js) - Google Analytics