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

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(总)

阅读更多

OFBiz进阶--OFBiz标签之
                              [*Services.xml]-mililang介绍与分析(总)

 

==========================================================
内部使用到的标签功能分析 (由于内容过多, 将分章节展现, 这里提供列表)

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(总)
     Mililang总体介绍, 在OFBiz中的用法

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(一)
     Mililang方法根标签属性分析: <simple-method.@attributes>

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(二)
     Mililang标签:  <call-*> , 调用业务处理标签(Call Operations)

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(三)
     Mililang标签:   
          <if/check-*>, 判断操作(Conditional (If) Operations)

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(四)
     Mililang标签:  
          <*find|entity|related|store|remove*>, 实体操作(Entity Engine Operations)

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(五)
     Mililang标签:   
          <*object|class*> , 调用Java类及方法标签(Java Call Operations)
          <*field|map|list*>, 变量处理(Method Environment Operations)
          <calculate|calendar>, 服务特定操作(Service Specific Operations)

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(六)

     Mililang标签:   
          <*error*> , 控制和错误处理(Control and Error Handling Operations)
          <*request|session*> , 事件的具体操作(Event Specific Operations)
          <transaction-*>, 事务机制控制(Entity Engine Transaction Operations)


==========================================================
 

 

 

什么是 mililang 语言, 
     它是 [MililangMethod.xml]
     是 [simple-methods.xml]
     是 [MililangServices.xml]


个人见解
     mililang(simple-methods)是OFBiz架构中独有的一种XML标签规则, 
     它使用XML标签代替一般化的Java编码
     实现需求中的业务逻辑, 各种标签都是在OFBiz项目中常用的Java编码的实现.


它的亮点
     让更多不精通Java编码实现的开发人员可以快速上手, 极高的提高了项目开发的效率
     开发人员可以不需要太注重明确的编码实现, 专心实现需求的业务逻辑
     可以实现所见即所得的开发方式, 即不需要像Java编码一样重新编译并重新启动项目来使功能代码生效
     代码转为XML实现, 屏蔽了使用Java编码由于开发人员水平导致的代码优劣问题
     XML标签实现了Java编码的功能并增强了代码的容错能力, 致使一些Java编码出现的错误减少
     可以使用非常灵活的逻辑实现方式, 甚至使用 groovy 和 ${} 等灵活的编码功能


一般用途
     实现简单的 CRUD(增读改删) 数据库操作
     实现类似工具方法的服务, 如 权限检查, 登陆, 数据校验, 等等
     可以在不写一行Java代码的情况下, 实现项目的急速开发
     所有逻辑功能的实现, 甚至完全摒弃 Java 编码


使用方法 
     调用时使用的文件路径配置规则 (“component://<app-name>/script/MililangMethod.xml”)

     在 controller.xml 中 <event> 标签直接使用
          <event type="simple" invoke="createInvoiceItemPayrol” 
                    path="component://accounting/script/org/ofbiz/accounting/invoice/InvoiceEvents.xml”/>
          <!-- 请求处理标签内调用: type为mililang的 simple标记, invoke为mililang方法名
               path为mililang方法的文件路径 -->

     在 services.xml 中由服务调用
     <service name="removeContentApproval" engine="simple"
        location="component://content/script/org/ofbiz/content/compdoc/CompDocServices.xml"
        invoke="removeContentApproval"
        default-entity-name="ContentApproval" auth="true">
        <description>Remove ContentApproval</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
     <!-- 服务调用: name方法名, engine为 mililang的 simple 标记, location是mililang方法文件路径 -->

     在 /script/ScriptServices.xml 中由mililang方法调用
          注意: 当前文件中的 mililang 方法必须文件内唯一, 类似Java的类中 [方法+参数], 不能重复
          <call-simple-method method-name="createUser” 
                    xml-resource="component://party/script/org/ofbiz/party/user/UserEvents.xml”/>
          <!-- 标签介绍: 调用 mililang 方法; method-name方法名, xml-resource方法所在文件路径 -->

     在 Java/Groovy 中使用
          org.ofbiz.minilang.SimpleMapProcessor.runSimpleMapProcessor(
               "component://content/script/org/ofbiz/content/ContentManagementMapProcessors.xml”, 
               "contentAssocIn", content, contentAssoc, FastList.newInstance(), Locale.getDefault());
          方法介绍:
          runSimpleMapProcessor(String xmlResource, String name, Map<String, Object> inMap, 
                    Map<String, Object> results, List<Object> messages, Locale locale)
               xmlResource: mililang 方法文件路径(“component://<app-name>/script/MililangMethod.xml”)
               name: mililang方法名
               inMap: 传入参数 (如: GenericValue)
               results: 输出结果存放对象名
               messages: 执行方法产生的消息存放至此
               locale: 语言环境

     在 FTL 中使用
          <#assign exec_result = Static["javolution.util.FastMap"].newInstance() />
          <#assign msgList = Static["javolution.util.FastList"].newInstance() />
          <#assign tmpLocal = Static["java.util.Locale"].getDefault() />
          <#assign exampleMap = Static["org.ofbiz.minilang.SimpleMapProcessor"].runSimpleMapProcessor(
                  "component://content/script/org/ofbiz/content/ContentManagementMapProcessors.xml”,
                  "contentAssocIn", parameters, exec_result, msgList, tmpLocal) />

 

==================================关于本文===================================

 
        作者: mf1389004071
        上海_香飘飘
        博客: http://ofbizer.iteye.com/
        邮箱: mf1389004071@163.com
        有此标记, 均为原创, 禁止盗用, 转载请注明来源
        技术无上限, 能力有上限, 欢迎参与交流讨论和提出建议
        本文永久地址: http://ofbizer.iteye.com/blog/2037779
 
 

 

1
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics