快速业务通道

Openbiz 实现 PHP的元数据编程

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
e = 

BizSystem::getObject("package.do.DataObjName")

          ->getActiveRecord()

          ->fieldName;

 

在元数据中通过Openbiz的SimpleExpression的语法范例

<Element ... 

   DefaultValue="{@package.do.DataObjName[fieldName].Value}"

/>

不仅描述数据映射,基于Openbiz元数据描述业务逻辑

如果你已经对这种元数据编程方式有兴趣了,请继续往下看。

出了数据对象与数据表之间的关联映射可以被元数据化,还有什么可以元数据化?

MVC的三层结构,UI也可以元数据化,VIew和Form这些UI级元素同样可以通过XML语言来描述装载与触发关系,例如

这个View应该装载哪几个Form?

这个编辑Form上的文本控件应该绑定到哪个数据对象的哪个字段上?

当按下这个按钮的时候,应当触发哪个类的哪个方法?

我们想象增删读改(CRUD)这些常用逻辑框架底层能实现,如果我的需求是当客户下完订单后,自动发邮件通知我,并且发短信通知配货部门。这样的相对复杂业务逻辑,如何元数据化实现?

数据对象触发器 和 可配置的插入式服务

这个邮件和短信的触发肯定不应该在UI层实现,因为我们要考虑不管订单从何处被生成,都应触发发送邮件这个逻辑。所以这个业务逻辑应该被耦合在数据对象上,即只要有订单被生成就应当触发该逻辑。

 

而发邮件和发短信些种常见的可重用性逻辑,可以被定义为pluginService,例如在发邮件的Service中,收件人,标题,内容应当是API的参数,而发邮件的帐户,SMTP服务器信息相对于业务整个系统来说通常变化不大,应作为元数据接口,而如何与服务器链接来发送邮件则是具体被重用的对象逻辑了。这种设计的精妙之处我们将在下一篇文章中具体给大家分析。

这样实现刚才说的逻辑,我只需要创建一个

OrderDO_Trigger.xml的元数据文件

<PluginServiceName="OrderDO_Trigger" Description="" Package="" Class="doTriggerService" BizObjectName="collab.order.do.OrderDO"

  <DOTriggerTriggerType="INSERT"  >

   <TriggerConditionExpression="" ExtraSearchRule="" />

   <TriggerActions>

      <TriggerActionAction="CallService" Immediate="Y" DelayMinutes="" RepeatMinutes="">

         <ActionArgumentName="Service" Value="service.lib.userEmailService" />

         <ActionArgumentName="Method" Value="sendEmail" />

         <ActionArgumentName="RecipientEmail" Value="{@profile:Email}" />        

         <ActionArgumentName="EmailTemplate" Value="OrderConfirmEmail" />        

      </TriggerAction>

   </TriggerActions>

  </DOTrigger> 

</PluginService>

当"INSERT" 事件发生的时候,调用发邮件服务,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号