`

ofbiz 之 service eca

 
阅读更多

ofbiz 之service eca
1. 定义文件位置
首先我们需要明白eca是什么?
在执行service 的过程中,可以把调用service 的过程分为几个步骤完成。
 开启事务
 用户登陆验证(auth)
 依照service定义对输入参数验证(in-validate)
 执行service invoke(invoke)
 依照service定义对执行结果进行输出验证(out-validate)
 提交事务(commit)
 返回最终结果(return)
在执行这每个步骤之前,我们定义一个设置来运行其他一些service,这类设置就是service eca .
service eca与service.xml 存放位置平级,都存放在对应模块的/servicedef/底下。
2. eca定义
2.1. 例子
<eca service="TestServiceOnSimple" event="return">
        <action service="TestServiceOnJava" mode="sync" result-to-context="true" result-to-result="true" result-map-name="TestServiceOnJavaEcaName"/>
</eca>
如上例就是一个简单的service eca 调用.含义为,当系统调用TestServiceOnSimple这个service 执行到将要返回结果之前调用
TestServiceOnJava这个service
如果有设置result-map-name的值,那么系统会将service TestServiceOnJava的结果以result-map-name的值为key放进的service TestServiceOnSimple的输入参数并覆盖原来。(即:context(TestServiceOnSimple).put(${result-map-name }, result(TestServiceOnJava));)
,并将service TestServiceOnJava的执行结果赋到service TestServiceOnSimple 的输入参数以及service TestServiceOnSimple 的输出结果(需要将service TestServiceOnJava的输出结果依据service TestServiceOnSimple的输出定义进行过滤)。

2.2. Eca
: service:触发eca调用的service 名称。
:event:触发eca调用的event 关键字,即service 调用执行的那几个步骤。这里调用eca 一那几个步骤之前,如event 的 值为commit ,那么则会在commit 之前调用eca.

2.3. Condition、Condition-service、condition-field
这几个都是对是否调用eca service 进行条件判断的命令。条件满足则调用eca,不满足则直接退出。
 Condition : 参数变量与固定值进行比较。
<condition operator="equals" field-name="workEffortId" map-name="ParaMap" value="12345"/>
详细请参考minilang 解析的 condition-expr,差不多。map-name如果有 设置 的话参数变量为ParaMap.workEffortId  。

 condition-field :参数变量与参数变量进行比较。
to-field-name 被比较参数变量名称,to-map-name 如果不为null ,则被 比较参数变量为${to-map-name}.${to-field-name}

 Condition-service
通过调用service 进行判断,如果返回结果状态码为error 则不满足条件,
其他情况条件满足. Java service 中返回结果状态码为error有两种情况
re.put("error", errorMsg);
return re;
或者
return ServiceUtil.returnError();

这三个condition 和 action 组合使用。


2.4. set
请参考 minilang 的set .
无论set 还是Condition、Condition-service、condition-field  所使用和操作的参数变量都是在eca 的输入参数context 中进行的。
那么eca 的输入参数context 从哪来 ?
假设A服务的eca action  B服务被调用,B 的参数来源会根据event 的类型决定其来源,如event为"commit "、"out-validate"、"global-commit-post-run"、"return",那么B的参数来源为A的context和A的result ,而其他event类型则参数只来源于A服务的context。

2.5. Action
Eca 触发service 定义。
result-map-name、result-to-context、result-to-result
2.1例子中解释过了。
:mode="sync":同步执行。mode="async"则为异步执行。

分享到:
评论

相关推荐

    ofbiz_springservice.zip

    基于spring封装的ofbiz所有服务,使用spring security进行安全验证,可以方便的发布为微服务,同时实现了一套直接使用ofbiz实体引擎操作ofbiz所有数据库表的spring应用框架设计

    ofbiz开发入门之CmsBackEnd实现的CRUD

    OFBiz采用Service Engine、Entity Engine、Component Engine和Web App Framework等核心组件,提供了一个灵活且可扩展的平台。在OFBiz中,CmsBackEnd是指内容管理系统(Content Management System)的后台部分,它...

    Ofbiz 数据库全模型

    Ofbiz,全称为The Open For Business Project,是一个开源的企业应用框架,主要由Apache软件基金会维护。这个项目旨在提供一套全面的、可扩展的企业级应用程序解决方案,涵盖了电子商务、供应链管理、客户关系管理等...

    OFBIZ10.04组件开发入门.doc

    服务是OFBIZ中实现业务逻辑的单元,定义在`service.xml`文件中。服务可以调用其他服务,实现业务流程的编排。 ### 12. 国际化资源 OFBIZ支持多语言,通过`.properties`文件提供国际化资源,如错误消息、提示信息等...

    ofbiz权限(全)

    这可以通过扩展ECA(Event Condition Action)规则来实现权限验证,如`exampleGenericPermission`(位于`examplecomponent`下)所示。 ##### 7、service编程级别 在编写服务逻辑时,有两种方式来实现权限验证: -...

    ofbiz安装与配置

    Ofbiz 安装与配置指南 Ofbiz 是一个基于 Java 的开源企业级电子商务平台,提供了强大的电子商务解决方案。为了帮助初学者快速上手 Ofbiz,我们将详细介绍 Ofbiz 的安装与配置过程。 环境搭建 在开始安装 Ofbiz ...

    ofbiz开发者入门教程

    此外,理解Ofbiz的事件驱动模型和基于服务组件架构(Service Component Architecture, SCA)的设计原则也至关重要。 总之,Ofbiz提供了一个全面的平台,让开发者能够高效地构建企业级应用。通过逐步学习和实践,你...

    ofbiz学习笔记(自学整理)

    Apache Ofbiz是一个开源的企业应用框架,它为构建复杂的业务应用程序提供了全面的功能,包括供应链管理、电子商务、财务会计、人力资源等。对于初学者来说,理解Ofbiz的基本架构和工作原理是至关重要的。 Ofbiz的...

    OFBIZ开发指南 英文2

    服务引擎是OFBIZ的核心组件之一,它允许开发者定义服务接口,实现业务逻辑,并通过XML请求和响应进行通信。服务可以通过本地或远程调用,提供了强大的跨模块交互能力。 工作流引擎则管理各种任务和流程,如审批流程...

    ofbiz数据结构设计

    《OFBiz数据结构设计详解》 OFBiz,全称为Open For Business Project,是一个开源的企业级应用框架,主要用于构建和管理电子商务、供应链管理、客户关系管理等业务系统。OFBiz的数据结构设计是其核心组成部分,它...

    ofbiz中文技术文档

    2. **架构概述**:Ofbiz基于Service Engine、Entity Engine、Event Engine、WorkEffort Engine等核心引擎,文档可能会解析这些组件的作用及其相互关系,帮助读者理解Ofbiz的设计理念。 3. **模块详解**:Ofbiz包含...

    ofbiz10.04表结构

    标题中的"ofbiz10.04表结构"指的是OFBiz 10.04版本的数据模型设计,这是企业级开源应用框架OFBiz的一个重要组成部分。OFBiz全称为Open For Business Project,它是一个用于构建企业应用程序的全面业务解决方案,涵盖...

    关于OFBIZ的资料

    在提供的OFBIZ_Demo压缩包中,用户可以找到OfBiz的演示版本,这是一套预配置的环境,展示了OfBiz在实际业务场景下的功能和操作。这个演示通常包括以下部分: 1. **安装与配置**:压缩包可能包含了安装指南和配置...

    Apache.OFBiz.Development

    2. 使用SVN:版本控制系统SVN(Subversion)是获取OFBiz源代码的途径之一。TortoiseSVN是SVN的一个客户端,用于通过图形界面来操作SVN仓库。 3. 安装Java开发工具包(JDK):JDK是开发Java应用的必要工具包,这里...

    ofbiz api开发文档

    《OFBiz API 开发文档详解》 在信息技术领域,OFBiz(Open For Business Project)是一个开源的企业级应用框架,主要用于构建复杂的电子商务系统。OFBiz 提供了一整套全面的业务组件,涵盖了从供应链管理到客户关系...

    Apache OFBiz Cookbook

    ### Apache OFBiz Cookbook 知识点解析 #### 一、Apache OFBiz 概述 - **定义**:Apache OFBiz(Open For Business)是一款开源的企业级应用框架,它集成了ERP(企业资源规划)、CRM(客户关系管理)以及E-...

    Ofbiz快速开发入门详解

    在《Ofbiz开发快速入门》中,你将了解到Ofbiz的核心概念,如实体模型(Entity)、服务(Service)和组件(Component)。实体模型是Ofbiz的基础,它定义了业务数据结构;服务则负责处理业务逻辑,是Ofbiz实现功能的...

    ofbiz一个完整例子

    &lt;service name="findCountries" engine="simple" location="component://myfirstdemo/script/org/ofbiz/demo/DemoServices.xml" invoke="findCountries"&gt; &lt;description&gt;Find Countries Service &lt;/service&gt; ``` ...

Global site tag (gtag.js) - Google Analytics