OFBiz进阶--OFBiz标签之
[*Services.xml]-mililang介绍与分析(二)
标签 <call-*> , 调用业务处理标签(Call Operations)
标签规则: [simple-methods.xsd] 新版本还有 [simple-methods-v2.xsd]
<call-map-processor xml-resource="xpp/com/note/SimpleForNoteMain.xml" error-list-name="error_list" processor-name="validateNoteMainMap" in-map-name="parameters" out-map-name="context"> <!-- 调用来自一个既存Map的一个简单map处理器,创建一个新的Map或者如果名称out-map已经存在,添加到一个既存的Map。 --> <!-- error-list-name错误消息列表对象名,如果给定的名称不存在,将创建一个新的List。 --> <!-- 注意: 在同一个上下文中存在的所有List和Map必须拥有唯一的名称。 --> <!-- call-map-processor调用校验Simple方法: --> <!-- xml-resource调用的Simple方法文件所在位置(类似java类路径); --> <!-- processor-name要执行的Simple方法名称; --> <!-- in-map-name传入对象名; out-map-name返回对象名(如果不存在则创建。如果已经存在则覆盖内容。); --> <!-- 通过在 call-map-processor 标签下放入一个simple-map-processor标签可以 --> <!-- 使用一个内联的 simple-map-processor。如果一个外部和一个内联的map-processor两者都被指定了, --> <!-- 外部的将先调用,允许内联的去覆盖它的行为。 --> <simple-map-processor name="validateNoteMainMap"> <!-- 简单的map数据处理 --> <make-in-string field="createdDate"> <!-- 通过字符串变量构建 map<key,value> 值 --> <in-field field="createdMonth"/> <!-- 传入变量 --> <constant>/</constant> <!-- 简单连接符 --> <in-field field="createdYear"/> <property resource="" property=""/> <!-- resource资源名称(general/blog/NoteUiLabels); property属性key; --> </make-in-string> <!-- 从一个日期变量中获取 日期 和 年份, 并放入返回的map中(以/分割); 如(09/2012), 示例如下 --> <make-in-string field="expireDate"> <in-field field="expMonth"/> <constant>/</constant> <in-field field="expYear"/> </make-in-string> <process field="noteId"> <copy replace="true" set-if-null="true" to-field=""/> <!-- 复制 process.@field 变量: replace若结果Map中已存在是否覆盖; --> <!-- set-if-null若值为空是否设置; to-field=复制给结果Map.@to-field变量; --> <copy to-field="currentPasswordVerify"/> </process> <!-- 设置变量到结果Map, 从上下文Map中copy给结果Map; --> <!-- 注意: 若一个变量在这里没有出现, 则在返回的map中将不存在该变量; 即返回的map中的变量都要在此出现并传递 --> <process field="noteName"><copy/><not-empty><fail-property resource="NoteUiLabels" property="NoteMainCreateProcessor_NoteName_isMissing"/></not-empty></process> <!-- 变量的空验证: 若验证为空, 则调用 resource(国际化配置文件名称) 的配置中 --> <!-- property(配置的key值) 指定的配置, 返回本地化错误信息 --> <process field="productId"><copy/> <compare operator="less" value="" format="" type="String"> <!-- 比较: operator条件, value比较值, format格式化的格式字符串, type数据类型 --> <fail-message message=""/> </compare> <!-- 将当期变量和value比较, 若结果为true, 则复制给结果Map, 否则返回错误消息 --> <compare-field operator="less" field="" format="" type="String"> <!-- 比较变量: operator比较操作符; field被比较的变量; format格式化的格式字符串; type数据类型; --> <fail-message message=""/> </compare-field> <!-- 当前变量与指定的field变量比较, 若结果为true, 则复制给结果Map, 否则返回错误消息 --> <compare-field operator="equals" field="PASSWORD"> <fail-property resource="PartyUiLabels" property="PartyPasswordMatchError"/> </compare-field> <convert type="PlainString" format="" to-field="" replace="true" set-if-null="true"> <!-- 变量数据转换: type数据类型; format格式化的格式字符串; to-field格式化完传递给此变量; --> <!-- replace若[to-field]变量存在值,是否覆盖; set-if-null转换结果为null,是否赋值给[to-field]; --> <fail-message message=""/> </convert> <convert to-field="createdDate" replace="true" set-if-null="false" type="Timestamp"> <fail-property resource="ContentUiLabels" property="ContentCreateDateInvalidFormat"/> </convert> <regexp expr=""> <fail-message message=""/> </regexp> <!-- 将当前变量与 expr 正则表达式比较; 若结果为false, 则返回错误消息 如: <regexp value="[a-zA-Z]{2,20}"/> --> <validate-method method="isDateAfterToday" class="org.ofbiz.base.util.UtilValidate"> <!-- 调用校验方法, 验证数据; 这里可以写自己的校验静态方法, 这里的验证方法是: org.ofbiz.base.util.UtilValidate 类的 isDateAfterToday(); --> <fail-property resource="NoteUiLabels" property="NoteMainCreateProcessor_createdDate_isNoteAfterToday"/> </validate-method> </process> </simple-map-processor> </call-map-processor> <set-service-fields service-name="updateCreditCard" map="creditCard" to-map="uccMap" error-list-name="error_list"/> <!-- 构建指定服务需要的参数到新Map中: service-name服务名; map待过滤的数据集; to-map服务需要的参数集; error-list-name错误消息列表变量; --> <call-service service-name="checkPermissionForCreateNoteMain" in-map-name="parameters" include-user-login="true" break-on-error="true"> <!-- 调用外部服务: service-name服务名称; in-map-name传入服务的map变量名(可选); include-user-login是否携带登录信息; break-on-error当执行出错时当前方法终止执行, 返回错误信息(false则继续执行); --> <!-- include-user-login默认地,将包含用户登录(true),因此如果当前简单方法有一个用户登录,将传送它们到服务。 --> <error-prefix property="" resource=""></error-prefix> <!-- 已废弃//错误消息前缀: resource资源名称(general/blog/NoteUiLabels); property属性key; --> <error-suffix property="" resource=""></error-suffix> <!-- 已废弃//错误消息后缀: resource资源名称(general/blog/NoteUiLabels); property属性key; --> <message-prefix property="" resource=""></message-prefix> <!-- 已废弃//消息前缀: resource资源名称(general/blog/NoteUiLabels); property属性key; --> <message-suffix property="" resource=""></message-suffix> <!-- 已废弃//消息后缀: resource资源名称(general/blog/NoteUiLabels); property属性key; --> <default-message property="" resource=""></default-message> <!-- 默认消息: resource资源名称(general/blog/NoteUiLabels); property属性key; --> <!-- <default-message resource="AccountingUiLabels" property="AccountingCreditCardCreatedSuccessfully"/> --> <result-to-field result-name="noteId" field="noteIdTmp"/> <!-- 从服务结果的Map中获取值给变量: 获取Map中 result-name 指定的key的值, 赋值给 field 指定的变量; result-name返回Map中指定的key的值; field返回值赋给此变量; --> <!-- 注意: 若field没设定, 则 field名 = result-name名, 设定了field, 则使用field指定的变量存储结果值 --> <result-to-field result-name="agreementId" field="agreementIdTo"/> <result-to-request result-name="permission" request-name=""/> <!-- 从服务结果的Map中获取值给request: 获取Map中 result-name 指定的key的值, 赋值给 request-name 指定的变量; result-name返回Map中指定的key的值; field返回值赋给此变量; --> <result-to-request result-name="paymentMethodId" request-name="paymentMethodId"/> <result-to-result result-name="" service-result-name=""/> <!-- 从服务结果的Map中获取值给结果Map: 获取Map中 result-name 指定的key的值, 赋值给 field 指定的变量; result-name返回Map中指定的key的值; field返回值赋给此变量; --> <result-to-result result-name="contentRevisionSeqId" service-result-name="rootContentRevisionSeqId"/> <result-to-session result-name="" session-name=""/> <!-- 从服务结果的Map中获取值给session: 获取Map中 result-name 指定的key的值, 赋值给 field 指定的变量; result-name返回Map中指定的key的值; field返回值赋给此变量; --> <result-to-session result-name="categories" session-name="categoriesField"/> <results-to-map map-name=""/> <!-- 将服务返回结果给 map-name 指定的变量 --> <results-to-map map-name="serviceResult"/> </call-service> <call-service-asynch service-name="checkPermissionForCreateNoteMain" in-map-name="parameters" include-user-login="true" /> <!-- 调用外部服务: 异步地调用一个服务并忽略结果,因此没有使用返回信息。但它们都有系统错误信息。 --> <!-- call-service-asynch example start --> <set-service-fields service-name="sendMailFromScreen" map="parameters" to-map="emailParams"/> <set field="emailParams.xslfoAttachScreenLocation" value="component://accounting/widget/AccountingPrintScreens.xml#InvoicePDF"/> <set field="emailParams.bodyParameters.invoiceId" from-field="parameters.invoiceId"/> <set field="emailParams.bodyParameters.userLogin" from-field="parameters.userLogin"/> <set field="emailParams.bodyParameters.other" from-field="parameters.other"/><!-- to to print in 'other currency' --> <call-service-asynch service-name="sendMailFromScreen" in-map-name="emailParams"/> <property-to-field resource="AccountingUiLabels" property="AccountingEmailScheduledToSend" field="successMessage"/> <!-- call-service-asynch example end --> <script location="" error-list-name="error_list"></script><!-- 执行script脚本(location指向具体路径); 接收返回的错误; --> <script location="component://bi/webapp/bi/WEB-INF/actions/reportbuilder/GetStarSchemas.groovy"/> <call-bsh error-list-name="error_list" resource=""> <!-- 使用脚本块(groovy支持): 脚本用到的一些变量在 <simple-method>.@attribute 已经定义好; error-list-name错误消息列表变量; resource资源标识(general/blog/NoteUiLabels); --> <![CDATA[ java.sql.Timestamp createdDate = context.createdDate; java.util.Calendar cal = java.util.Calendar.getInstance(); cal.setTimeInMillis(createdDate.getTime()); cal.add(java.util.Calendar.DAY_OF_YEAR, daysToShip.intValue()); return org.ofbiz.base.util.UtilMisc.toMap("createdDate",new java.sql.Timestamp(cal.getTimeInMillis())); ]]> <!-- 脚本执行内容的标签体 <![CDATA[ bsh ]]> --> </call-bsh> <check-errors/> <call-simple-method method-name="validateNoteMainMap" xml-resource=""/> <!-- 调用Simple方法的写法: method-name方法名称, --> <!-- 若 xml-resource 属性不设置, 则这里用到的方法, 必须是当前文件内的; --> <call-simple-method method-name="genericBasePermissionCheck" xml-resource="component://common/script/org/ofbiz/common/permission/CommonPermissionServices.xml"/>
==================================关于本文===================================
作者: mf1389004071
......上海_香飘飘
博客: http://ofbizer.iteye.com/
邮箱: mf1389004071@163.com
有此标记, 均为原创, 禁止盗用, 转载请注明来源
技术无上限, 能力有上限, 欢迎参与交流讨论和提出建议
本文永久地址: http://ofbizer.iteye.com/blog/2038441
相关推荐
- **ServiceECA**:用于定义服务执行时的事件条件与动作,在 **secas*.xml** 文件中定义。 - **ServiceGroup**:一组相关服务的集合,在 **groups*.xml** 文件中定义。 3. **Service Implementation(服务实现)*...
本文档旨在详细介绍OFBIZ中的实体引擎配置,首先概述实体引擎的基本概念,然后深入探讨`entityengine.xml`文件中各个元素的具体用法。 #### 二、实体引擎概述 在OFBIZ中,实体引擎负责处理数据库操作,如查询、...
</ofbiz-component> ``` 这里的`name`属性指定了组件的唯一标识,`resource-loader`定义了资源加载器,用于组件的初始化和加载。 **2. 创建Web应用程序配置** 接着,你需要定义Web应用程序的相关配置,包括Web...
<in-field field="estimatedStartMinute"><constant>:</constant></in-field> <in-field field="estimatedStartSecond"> </in-field> </make-in-string> ``` 这段代码会将各个字段拼接成一个完整的日期时间字符...
- **关闭OFBiz**:介绍安全停止服务的方法。 - **OFBiz首次巡览**: - **访问OFBiz**:说明如何通过浏览器访问OFBiz应用。 - **探索Web应用程序“ecommerce”**:介绍该模块的功能和使用场景。 - **购物体验**...
服务(service)是OFBiz中业务逻辑的基本单元,通过`<service>`元素定义,包括服务名称、实现类、输入输出参数等。 4. **webapp.xml**: 此文件配置了OFBiz的Web应用程序,包括页面调度、主题样式、国际化设置等。...
- **分配内存给 OFBiz**:介绍如何为 OFBiz 分配足够的内存。 - **启动 OFBiz 并验证启动过程**:详细说明启动 OFBiz 的步骤及如何确认启动成功。 - **查看实时日志**:说明如何在 OFBiz 运行时查看实时的日志...
当客户端请求`createForum` URL时,将通过`services.xml`配置文件中的`createForum`服务来处理该请求。 ##### 2. **servicedef/services.xml** - **文件位置与作用**: - **位置**:通常位于项目根目录下的`...
- **OFBiz** 是一款开源的企业级电子商务框架,支持多种业务场景,包括但不限于电子商务、供应链管理等。 - **主题(Themes)** 在 OFBiz 中指的是用于定制化用户界面外观的设计模板集合,主要包括 CSS 样式、图片、...
- **1.2.2 在Eclipse中启动Ofbiz** - 创建一个新的Ofbiz项目。 - 配置项目的运行环境。 - 启动Ofbiz服务器。 #### 二、框架结构 **2.1 Ofbiz概况** - Ofbiz是一个开源的企业级应用框架,支持ERP(企业资源计划...
- **实体组文件 (`entitygroup.xml`)**:这个文件也由 Ofbiz 预先提供,通常与 `entitymodel_xxx.xml` 存放在同一个目录下。 下面是一个简单的 `entitymodel_study.xml` 文件示例: ```xml <?xml version="1.0" ...
- **OFBiz**(Open For Business)是一款开源的企业级电子商务框架,主要用于构建和部署各种类型的业务应用,包括电子商务、供应链管理等。 - **目标读者**:初次接触OFBiz的技术人员或学生。 - **主要内容**:本...
在OFBiz框架中,数据模型是所有应用程序的核心组成部分之一,它定义了应用程序如何与数据库交互以及如何存储数据。本篇文档将详细解析“OFBiz数据模型”中的关键部分,尤其是预算(Budget)相关的实体定义及其属性,...
- **API与Web服务**:通过OFBiz提供的RESTful API与其他系统进行集成。 7. **社区与资源** - **官方文档**:Apache OFBiz官方文档是学习的主要参考资料,包括用户指南和开发者手册。 - **论坛与邮件列表**:参与...
- `<ofbiz-component>`元素定义了整个组件的配置。 - `<resource-loader>`用于指定资源加载器。 - `<webapp>`元素定义了Web应用程序的信息,包括名称、标题、服务器配置等。 #### 六、总结 通过本教程的学习,...
<font metrics-url="simhei.xml" kerning="yes" embed-url="simkai.ttf"> <font-triplet name="Simhai" style="normal" weight="normal"/> </font> ... </fonts> </renderer> </renderers> ``` 同时,需要...
这篇“Ofbiz初学者开发指南——第二部分”很可能是对Ofbiz更深入的介绍,特别是针对那些刚开始接触Ofbiz的开发者。在本文中,我们将探讨Ofbiz的一些核心概念,以及如何利用`component-load.xml`配置文件和`practice`...