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"则为异步执行。

http://djtao1117-163-com.iteye.com/blog/1132578
用Multisim和AD2复刻经典:手把手教你搭建μA741三角波-方波发生器(附完整避坑指南) 本文详细介绍了如何使用Multisim和AD2搭建基于μA741运算放大器的三角波-方波发生器,包括电路原理、Multisim仿真流程、AD2硬件搭建及调试技巧。通过对比理论计算、仿真和实测数据,深入分析器件非理想特性的影响,并提供16个典型问题的解决方案,帮助读者掌握波形发生器的设计原理和工程调试经验。 阅读详情

相关推荐

Mem0 vs LangMem vs Letta:三大AI记忆框架实战对比(附代码示例)

本文深入对比了Mem0、LangMem和Letta三大AI记忆框架的核心特性与适用场景。Mem0提供开箱即用的记忆管理服务,适合快速集成;LangMem深度融入LangGraph生态,适合复杂工作流;Letta则采用虚拟内存系统,旨在突破上下文窗口限制。文章通过实战代码示例,为开发者选择适合其业务需求的AI记忆解决方案提供了清晰指南。

g9h0i1的博客 681

OFBiz中services调用机制

OFBiz业务方法里面,当执行一个service的时候,通常采用如下的方式:     LocalDispatcher dispatcher = dctx.getDispatcher();     Map result = dispatcher.runSync(getServiceName(), getContext()); LocalDispatcher是本地调度器,实现服务的同步异

Daniel的专栏 669

ParallelsDesktop 安装 CentOS-6.9-x86_64-minimal 教程

安装参考 tools没做 想安装的可以参考这个 mac 本机环境: 系统:macOS Catalina version 10.15.6 虚拟机软件:parallels Desktop 15 for Mac( Parallels Desktop-15.1.4(47270)) Centos镜像: CentOS-6.9-x86_64-minimal.iso https://mirrors.aliyun.com/centos-vault/6.8/isos/x86_64/ http://vault.centos.

爱吃鱼的小明的博客 955

ofbiz--service

配置controller.xml<request-map uri="getUser"> <description>获取用户信息</description> <event type="service" invoke="searchUser"/> <response name="success" type="request" value="json"><

zfng2008的专栏 598

Python爬虫实战:逆向工程与异步处理攻克Pinterest无限滚动瀑布流

我们将从零开始,逐步分析其数据接口,构建一个功能完整的爬虫,并深入探讨反爬虫策略的应对、性能优化以及数据存储等高级主题。: 在实际爬取中,你需要先访问一次Pinterest主页,获取初始的Cookie和CSRF Token,然后再发起API请求。: Python爬虫,Pinterest,无限滚动,瀑布流,异步IO,httpx,逆向工程,API接口,动态内容,反爬虫。你会很快发现一些关键的请求模式。:页面初始加载有限内容,随着用户滚动,新的图片块通过AJAX动态加载,实现“永无止境”的浏览。

2201_76125261的博客 552

LPDDR5 学习笔记01:功能概述

LPDDR5/LPDDR5X SDRAM设备采用8/16DQ通道架构,支持2Gb-32Gb容量。通过CK命令时钟和更快的WCK数据时钟协同工作,7个CA引脚传输控制信息,支持2:1或4:1的WCK:CK比例。设备提供BG/8B/16B三种存储模式选择,分别支持不同数据速率(最高8.533Gbps)和突发长度。采用0.5V VDDQ电源电压,实现高速双倍数据速率传输,并通过差分WCK时钟完成数据采样。读写采用突发访问机制,需先激活命令再执行读写操作。新型LPDDR5X仅支持BG和16B模式,优化了高速性能。

一只豌豆象的博客 2205

ofbiz 的 service eca调用方式解析

http://www.cnblogs.com/Ivan-j2ee/archive/2012/08/02/2620048.html ofbiz 的service eca 调用模式 1. 定义文件位置 首先我们需要明白eca是什么? 在执行service 的过程中,可以把调用service 的过程分为几个步骤完成。  开启事务  用户登陆验证(auth)  依照service定义对

我爱大海V5的专栏 729

《Python全栈系列教程》专栏介绍及文章汇总

《Python全栈系列教程》专栏介绍及文章汇总

孤寒者的博客 71万+

Apache OFbiz service engine 源码解读

Apache OFbiz service engine 源码解读/剖析。Service engine是 OFbiz的服务引擎。

VinoYang的专栏 9605

245. 项目195:简易文字冒险游戏——《跟老吕学Python·新手》

如果您在学习本专栏教程时遇到任何问题,或有任何技术交流的意愿,欢迎在文章评论区留言,或通过优快云私信与老吕取得联系。老吕将及时回复您的留言,并与您共同探讨,以期为大家提供更为精准和有效的帮助。老吕珍视每一位读者的反馈和支持,期待与您共同学习、共同进步,共同创造美好的未来!我们的目标是不仅教会您Python语言,更是培养您解决问题的思维方式。请随意翻阅,按照自己的节奏学习,让这本专栏成为您编程旅程中的可靠伙伴。开发一个简易的文字冒险游戏,通过文本描述场景和事件,让玩家通过选择不同的选项来推动故事发展。

Python老吕的博客 713

【Claude Code的Harness Engineering实现】:06-记忆系统(Memory)

记忆系统是Claude Code实现跨会话持久化和上下文保持的核心组件。它分为短期记忆(当前会话的对话历史)和长期记忆(跨会话保留的结构化信息),通过多层级的文件系统实现灵活的记忆管理。

rengang66的博客 241

ofbiz 之service eca

ofbiz 之service eca 1. 定义文件位置 首先我们需要明白eca是什么? 在执行service 的过程中,可以把调用service 的过程分为几个步骤完成。  开启事务  用户登陆验证(auth)  依照service定义对输入参数验证(in-validate)  执行service invoke(invoke)  依照service定义对执行结果进行输出

灵魂Coder的专栏 697

深入剖析RDMA Netlink:Linux内核中高效通信的基石

RDMA Netlink:Linux内核中高效通信控制的核心机制 RDMA技术通过绕过内核实现高速数据传输,但其管理控制仍需内核参与。drivers/infiniband/core/netlink.c文件作为RDMA子系统的心脏,构建了用户空间与内核间的高效通信桥梁。该模块采用模块化客户端架构,通过全局数组管理不同类型的RDMA功能,如设备管理、连接服务和链路层操作。从最初的全局锁到细粒度读写锁的演进,展现了Linux内核追求高性能的持续优化。同时,通过条件编译支持新旧内核版本和网络命名空间,体现了稳定性与

数字人生 239

ofbiz 之 service eca

ofbiz 之service eca 1. 定义文件位置 首先我们需要明白eca是什么? 在执行service 的过程中,可以把调用service 的过程分为几个步骤完成。  开启事务  用户登陆验证(auth)  依照service定义对输入参数验证(in-validate)  执行service invoke(invoke)  依照service定义对执行结果进行输出验证(out-...

junmail的专栏 214

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ofbiz 的eca (eeca 和 seca)

ofbiz 触发器(包括实体触发器eeca和服务触发器seca)的创建及注册,包括示例

GOon_star的专栏 1532

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

开始的一些知识和概念

B/S架构 用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在在服务器端,因此,B/S结构的系统不需要安装客户端软件,它运行在客户端的浏览器

学无止境 643

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Apache OFBiz架构深度剖析:从实体引擎到服务框架的实现原理

Apache OFBiz是一个功能强大的开源企业级业务框架,它为构建企业级应用提供了一套完整的解决方案。在前100字的介绍中,我们将深入探讨Apache OFBiz的核心架构设计,特别是其实体引擎和服务框架的实现原理。这个企业级框架通过模块化的设计思想,为开发者提供了灵活的业务组件和强大的扩展能力,让企业应用开发变得更加高效和规范。 ## 🏗️ Apache OFBiz整体架构概览 Apac

gitblog_01040的博客 796

ofbiz的服务授权步骤

ofbiz的服务授权步骤- - 授权步骤: 1.在服务的xml文件里,标签里有一个授权属性,将该属性设置为"true"意味着该服务需要授权. 2.如果为真,那么ModelService对象(拥有该服务的所有信息)拥有auth变量就会设置为"true". 3.当ServiceDispatcher对象的ru...

jiasudu 189
上一篇: james邮件
下一篇: ofbiz之minilang解析
kevin0xFFFFFFFF
博客等级 码龄17年 3粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值