OFBIZ2.0精简版本应用概论-3

来源:百度文库 编辑:神马文学网 时间:2024/04/28 19:56:50
OFBIZ2.0精简版本应用概论
http://www.rdxx.com 02年03月28日 11:18 互联网
OFBIZ拒绝这种混乱,一套EntityEngine机制轻松解决上述所有问题。
1、 涉及1张表(实体)的增、删、改、查,它提供一套处理机制(不到12个类,大约5千行代码),应用的规模是10000张表,它还是这套处理机制(不到12个类,大约5千行代码),而且这些处理机制由JAVA程序高手生成和维护,可以保证其合理性、可靠性和安全性。
2、 EntityEngine提供了一个构造复杂sql操纵语句的机制,你可以根据需要随时构造任意复杂的sql语句,完成你想要做的事情,这样你可以在开发过程中,随时修改你的数据库定义,OFBIZ在系统启动时会自动加载并检测数据库中的不一致性和参考完整性。
3、 实体引擎大大简化了涉及关系型数据库的管理和维护,但这还只是一小块好处,大的好处是你在实现一个复杂需求的应用时,实体引擎用为数不多的几个类解决了你所有的问题,实现任意复杂的数据库存取业务和商业逻辑,而且与需求的复杂度和数量无关。
4、 好处太多了,在使用的过程中,会进一步的体会到。
1.5 锦上添花的服务引擎
服务框架(ServicesFramework)是OFBiz2.0 新增加的内容。服务(Services)被定义成一些相对独立的逻辑处理单元(服务具有业务逻辑处理的原子性),能够被灵活的组合成不同的形式去实现不同的商业逻辑需求。服务有多种类型的实现形式:工作流(Workflow),(规则) Rules,Java程序(Java), 简单对象访问控制协议(SOAP), 轻量级Java程序脚本语言解释器(BeanShell)等等。 如果一个服务被定义成"java"类型,意味着实现该服务的机制可能就是Java类的一个static方法, 而且,OFBIZ提供的服务框架不限于使用在一个基于Web的应用程序系统中。服务需要输入一个Map形式的参数,服务处理完毕后,返回的也是一个Map形式的结果集。这个思路是非常好的,因为Map类型的数据格式很容易被序列化(serialized,序列化成字节流),并且通过HTTP(或SOAP)的协议进行存储和传输。在OFBIZ里,服务被定义XML文件里,定义后的服务被分派给一个特定的 服务引擎(Service Engine) 。 服务引擎 具体负责以合适的方式进行服务的定义、管理和调用。 因为服务不一定被绑定在某基于Web的应用程序运行环境中,所以服务处理的结果也就不一定会和某erquest请求的响应reponse联系在一起,这样就允许服务可以在预先设置好的和时间点上定时触发(因为它不需要一个Http Request请求),一般是通过系统提供的 工作日程管理器(Job Scheduler) 运行环境触发(用定时器来控制对服务的调用)。
服务还可以互相调用调用,即一个服务被设置去调用任何其它的服务。这样,我们可以用更小粒度的已经定义好的服务组合成一个服务链,来完成一个比较大的任务,而且这种组合是任意的,从已经定义好的服务本身来讲,是很容易复用的。使用不同的应用程序系统中的服务,可以通过创建一个"全局服务定义文件"只被定义一次(因为服务本身是实现了特定的商业逻辑,它和具体应用的关系应该是松耦合的),当然,服务也可以通过一些限制,被指定为特定的应用程序所用。
在一个基于Web的应用系统中,服务可以被用来实现基于Web的事件(web events),利用服务实现事件处理,可以在服务框架内最大可能的复用相对固定的一些业务逻辑。而且,服务还可以被定义成对可输出的(exportable),意思是它们可以被系统外部的东西(可能是一个应用系统或其它)远程访问。 目前系统实现了一个基于简单对象访问控制协议(SOAP)的事件处理器,该事件处理器,就允许外部应用通过SOAP协议对运行(或定义)在其上的服务进行远程访问 。在将来,会有更多的远程调用形式被加到服务框架里
1.6 双管齐下
实体引擎和服务引擎各有利弊,在实际应用中,可以把服务引擎和实体引擎结合起来使用,实体引擎主要用于处理实体(Entities)对象的增、删、改、查,服务引擎主要用于处理商务逻辑,这种商务逻辑的定义范围,不大会遇到上面所说的要求一次查询返回一个结果集这样的服务定义(这完全可以用实体引擎来处理)。9 7312 345674 8:
上一篇:使用Java读取Excel文件内容
下一篇:WebDbForms(续二)