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/
邮箱: [email protected]
有此标记, 均为原创, 禁止盗用, 转载请注明来源
技术无上限, 能力有上限, 欢迎参与交流讨论和提出建议
本文永久地址: http://ofbizer.iteye.com/blog/2038441