`
我改名了
  • 浏览: 87889 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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"则为异步执行。
分享到:
评论
1 楼 xuhuaxing 2012-01-11  
不错,

相关推荐

    ofbiz_springservice.zip

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

    Ofbiz之LOOKUP字段使用方法

    Ofbiz的Lookup字段,讲解ofbiz辅助输入,包括文本,选择框,日期,时间,主从文本框。后面还介绍一下自定义修改的Lookup

    OFBIZ快速入门OFBIZ快速入门

    OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门

    ofbiz权限(全)

    ofbiz权限非常介绍,ofbiz进阶之权限介绍!

    原创 Ofbiz 入门教程

    Ofbiz(http://www.ofbiz.org) 是 Open Source 的商务软件系统,充分利用了各优秀的的Open Source 项目, 像 Tomcat, Ant, BeanShell, Jboss 等,构建了一个...Ofbiz 宣称的优点之一是用 很少的 Code 完成复杂的处理。

    ofbiz资料大全

    里面是下载地址,如果逆向开发ofbiz,只要下载它就绝对没错了 Apache+OFBiz+开发初学者指南.rar OFBiz开发快速入门.rar OFBiz-技术文档.rar OFBiz API中文版.rar Apache OFBiz Cookbook Sep 2010.rar Opentaps ...

    ofbiz 教程_配置ofbiz

    ofbiz的获取与部署,主要用到了gradle 和 eclipse,注意:cmd部署时,需要一个较好的网络环境以下载gradle

    ofbiz学习笔记(自学整理)

    自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,适合初学者,可以下个看看

    ofbiz jar file2

    ofbiz jar file, some jars for ofbiz

    ofbiz开发框架建表语句 ofbiz_sql

    ofbiz sql 表结构

    OFBIZ集成Activiti流程

    OFBiz集成Spring和Activiti,详细设计说明书。ofbiz版本12.04

    ofbiz数据结构设计

    ofbiz数据结构

    Ofbiz之中文乱码处理(完整版)

    Ofbiz 与MYSQL配置的中文问题及 ecommerce相关设置 Lookup字段的乱码处理 Get方法中文乱码解决办法 日期的表示乱码处理

    浅谈OFBIZ.doc

    浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc

    apache-ofbiz-16.11.02源码+ofbiz菜鸟笔记+Apache+OFBiz+开发初学者指南

    apache-ofbiz-16.11.02.zip,ofbiz菜鸟笔记,Apache+OFBiz+开发初学者指南.chm

    OFBIZ开发指南 英文2

    OFBIZ开发指南 英文2OFBIZ开发指南 英文2OFBIZ开发指南 英文2

    Ofbiz源码阅读笔记 之 请求控制篇

    该笔记基于Ofbiz10.04.02解读,系个人阅读Ofbiz源码记录所得,格式不太雅观,可作为阅读Ofbiz源码时的手册,这是第一篇后续会继续阅读写作; 该篇主要讲解控制请求的流程,以及其中的难点、重点。

    关于OFBIZ的资料

    关于ofbiz的资料,很多,用ofbiz技术的朋友们赶快下载吧

    OFBiz 教程

    ofbiz 官网文档翻译 ,按照此文档里面的步骤,可以安全快速的编译自己的第一个小模块 "Hello World",一开始是很抵触的,但是学着学着发现其实框架道理是相似的,为了将代码解耦,每个框架都有自己的独特解耦之道和...

    OFBiz 主题修改文档

    OFBiz 主题修改文档

Global site tag (gtag.js) - Google Analytics