`
mf1389004071
  • 浏览: 74049 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
1ab096d2-14d4-3a83-b102-8097ee3bdc66
OFBiz进阶-OFC
浏览量:51907
社区版块
存档分类
最新评论

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(二)[服务<call-*>]

阅读更多

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

 
 
   

0
1
分享到:
评论

相关推荐

    OFBiz Framework Quick Reference Book

    - **ServiceECA**:用于定义服务执行时的事件条件与动作,在 **secas*.xml** 文件中定义。 - **ServiceGroup**:一组相关服务的集合,在 **groups*.xml** 文件中定义。 3. **Service Implementation(服务实现)*...

    ofbiz综合文档

    本文档旨在详细介绍OFBIZ中的实体引擎配置,首先概述实体引擎的基本概念,然后深入探讨`entityengine.xml`文件中各个元素的具体用法。 #### 二、实体引擎概述 在OFBIZ中,实体引擎负责处理数据库操作,如查询、...

    OFBiz教程-初学者开发指南

    &lt;/ofbiz-component&gt; ``` 这里的`name`属性指定了组件的唯一标识,`resource-loader`定义了资源加载器,用于组件的初始化和加载。 **2. 创建Web应用程序配置** 接着,你需要定义Web应用程序的相关配置,包括Web...

    ofbiz迷你语言.doc

    &lt;in-field field="estimatedStartMinute"&gt;&lt;constant&gt;:&lt;/constant&gt;&lt;/in-field&gt; &lt;in-field field="estimatedStartSecond"&gt; &lt;/in-field&gt; &lt;/make-in-string&gt; ``` 这段代码会将各个字段拼接成一个完整的日期时间字符...

    ofbiz 英文pdf

    - **关闭OFBiz**:介绍安全停止服务的方法。 - **OFBiz首次巡览**: - **访问OFBiz**:说明如何通过浏览器访问OFBiz应用。 - **探索Web应用程序“ecommerce”**:介绍该模块的功能和使用场景。 - **购物体验**...

    ofbiz重要的xml文件详解

    服务(service)是OFBiz中业务逻辑的基本单元,通过`&lt;service&gt;`元素定义,包括服务名称、实现类、输入输出参数等。 4. **webapp.xml**: 此文件配置了OFBiz的Web应用程序,包括页面调度、主题样式、国际化设置等。...

    Apache OFBiz Development The Beginner's Tutorial

    - **分配内存给 OFBiz**:介绍如何为 OFBiz 分配足够的内存。 - **启动 OFBiz 并验证启动过程**:详细说明启动 OFBiz 的步骤及如何确认启动成功。 - **查看实时日志**:说明如何在 OFBiz 运行时查看实时的日志...

    ofbiz框架简单讲解

    当客户端请求`createForum` URL时,将通过`services.xml`配置文件中的`createForum`服务来处理该请求。 ##### 2. **servicedef/services.xml** - **文件位置与作用**: - **位置**:通常位于项目根目录下的`...

    OFBiz 主题修改文档

    - **OFBiz** 是一款开源的企业级电子商务框架,支持多种业务场景,包括但不限于电子商务、供应链管理等。 - **主题(Themes)** 在 OFBiz 中指的是用于定制化用户界面外观的设计模板集合,主要包括 CSS 样式、图片、...

    ofbiz入门文档

    - **1.2.2 在Eclipse中启动Ofbiz** - 创建一个新的Ofbiz项目。 - 配置项目的运行环境。 - 启动Ofbiz服务器。 #### 二、框架结构 **2.1 Ofbiz概况** - Ofbiz是一个开源的企业级应用框架,支持ERP(企业资源计划...

    Ofbiz 入门教程

    - **实体组文件 (`entitygroup.xml`)**:这个文件也由 Ofbiz 预先提供,通常与 `entitymodel_xxx.xml` 存放在同一个目录下。 下面是一个简单的 `entitymodel_study.xml` 文件示例: ```xml &lt;?xml version="1.0" ...

    ofbiz-entry-zh-cn.doc

    - **OFBiz**(Open For Business)是一款开源的企业级电子商务框架,主要用于构建和部署各种类型的业务应用,包括电子商务、供应链管理等。 - **目标读者**:初次接触OFBiz的技术人员或学生。 - **主要内容**:本...

    OFBiz数据模型

    在OFBiz框架中,数据模型是所有应用程序的核心组成部分之一,它定义了应用程序如何与数据库交互以及如何存储数据。本篇文档将详细解析“OFBiz数据模型”中的关键部分,尤其是预算(Budget)相关的实体定义及其属性,...

    OFBiz开发快速入门

    - **API与Web服务**:通过OFBiz提供的RESTful API与其他系统进行集成。 7. **社区与资源** - **官方文档**:Apache OFBiz官方文档是学习的主要参考资料,包括用户指南和开发者手册。 - **论坛与邮件列表**:参与...

    OFBiz教程_-_初学者的开发指南

    - `&lt;ofbiz-component&gt;`元素定义了整个组件的配置。 - `&lt;resource-loader&gt;`用于指定资源加载器。 - `&lt;webapp&gt;`元素定义了Web应用程序的信息,包括名称、标题、服务器配置等。 #### 六、总结 通过本教程的学习,...

    OFBIZ_FOP中文支持.pdf

    &lt;font metrics-url="simhei.xml" kerning="yes" embed-url="simkai.ttf"&gt; &lt;font-triplet name="Simhai" style="normal" weight="normal"/&gt; &lt;/font&gt; ... &lt;/fonts&gt; &lt;/renderer&gt; &lt;/renderers&gt; ``` 同时,需要...

    ofbiz--A Beginners Development Guide--Part 2

    这篇“Ofbiz初学者开发指南——第二部分”很可能是对Ofbiz更深入的介绍,特别是针对那些刚开始接触Ofbiz的开发者。在本文中,我们将探讨Ofbiz的一些核心概念,以及如何利用`component-load.xml`配置文件和`practice`...

Global site tag (gtag.js) - Google Analytics