论坛首页 Java企业应用论坛

SOA——中小系统的不能承受之重

浏览 21684 次
精华帖 (0) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-17  
SOA
    最近开发了一套工作流系统,当然,相对比较简单,对于复杂的自动机没有实现。开发完之后对SOA有了更深入的理解。

    工作流机制是SOA的灵魂,下面咱就谈谈这个灵魂。

    完整的工作流系统包含三个部分:

    第一,工作流本身的数据模型以及控制流程实例流转的引擎;
    第二,与业务数据密切相关的工作流边界,负责关联业务数据和工作流;
    第三,工作流的流程管理子系统,最理想的是可视化编辑。

    目前,开源的工作流引擎有osworkflow,jbpm,shark等,这些工作流都符合工作流联盟的规范。但是要让他们符合你的需求比较难。最重要的原因是,你的系统里层级和架构设计,比如DAO的方式等规范,与他们对工作流本身数据模型管理的方式出入比较大。osworkflow里有几种可选的DAO方式,JDBC支持,hibernate支持,hibernate+spring也支持。但是整合方式未必和你的系统规范吻合。
    除了在数据模型操作上有出入外,在流程管理上也未必符合你的要求。流程管理的最高境界就是让客户按需求自己去配置业务流程。而从osworkflow等提供的方式来看,客户还必须得精通xml等技术,客户还不把我们这些人宰了?因此,用他们的东西,一定程度上可以解放工作量,灵活修改流程配置,但是要求是提前跟客户沟通好有哪些具体流程,万一流程有变,还得程序员自己去修改,做不到让客户来可视化的自己拖放流程。不过IBM的dominao等做的不错,流程设计还是挺牛的。
    如果工作流引擎有了,程序员要做的就是开发将业务和工作流关联起来的边界程序。别以为你有个工作流放那了,你就轻松了。引擎不知道业务数据要被如何计算,以及不知道你什么用例下才触发工作流。而且对于角色权限控制也不知道你是怎么规定的。边界程序就是要做这些事。
   
    有几个概念容易混淆:工作流,控制流,业务流。

    工作流是可以被取代的:在业务模型上多加几个控制状态的字段就可以了。
    使用工作流虽然很好,但是要付出代价的:开发成本高,程序运行成本高,维护成本也高。

    如果你的业务流程设计时可以用控制流,那就尽量用状态字段取代工作流吧,毕竟SOA不是用来杀鸡的刀


                                                             写于在公司开发完一套工作流系统后。
---------------------------------------------------------------------------------
    SOA的一个中心思想就是使得企业应用摆脱面向技术的解决方案的束缚,轻松应对企业商业服务变化、发展的需要
    工作流和业务流程实际上是一回事情。SOA中用工作流引擎做集成,和基于工作流的开发类不类似,关键看粒度。当然,开发工作流引擎和使用工作流引擎,那肯定是两回事情。
     可能有些人比较关注异构的问题,这个是webservice技术要解决的,如果你说这个技术就是soa,那就大错特错,还不如说cobar就是SOA呢。
     OO和JAVA以及是设计模式三者的关系你理解吗?
     SOA和webservice和工作流三者的关系也就好理解了哈。
     引用一句话说:“WebServices是SOA的基础资源;工作流用于调用WebServices,构成了SOA的大脑和灵魂”。
     
   发表时间:2007-12-17  
工作流机制是SOA的灵魂?
不觉得
ESB是SOA灵魂倒有可能
0 请登录后投票
   发表时间:2007-12-17  
rEloaD_cn 写道
工作流机制是SOA的灵魂?
不觉得
ESB是SOA灵魂倒有可能


火车,铁轨,调度中心,你觉得哪个是灵魂呢?该不会是铁轨吧
0 请登录后投票
   发表时间:2007-12-17  
你说得很对,我错了
0 请登录后投票
   发表时间:2007-12-17  
shuidrinking 写道
rEloaD_cn 写道
工作流机制是SOA的灵魂?
不觉得
ESB是SOA灵魂倒有可能


火车,铁轨,调度中心,你觉得哪个是灵魂呢?该不会是铁轨吧


赫赫,第一次听说SOA的灵魂是工作流
0 请登录后投票
   发表时间:2007-12-17  
哦,对了:

“火车,铁轨,调度中心,你觉得哪个是灵魂呢?该不会是铁轨吧”

你的言外之意是说ESB是铁轨吗?如果是的话,我斗胆纠正一下:ESB应该是调度中心。
0 请登录后投票
   发表时间:2007-12-17  
rEloaD_cn 写道
哦,对了:

“火车,铁轨,调度中心,你觉得哪个是灵魂呢?该不会是铁轨吧”

你的言外之意是说ESB是铁轨吗?如果是的话,我斗胆纠正一下:ESB应该是调度中心。


那工作流应该是什么呢?
能不能说ESB和WorkFlow是2选1的调度中心?在同一个SOA中能否同时存在ESB和WF呢?小弟不才,对ESB了解不多,望多指点。
0 请登录后投票
   发表时间:2007-12-17  
我觉得Service才是比较需要关心的吧,SOA个人认为只是一个概念层次的东西,只是一个框架,用来处理多个服务之间的通信。
0 请登录后投票
   发表时间:2007-12-18  
xiaoxiaodi5834 写道
我觉得Service才是比较需要关心的吧,SOA个人认为只是一个概念层次的东西,只是一个框架,用来处理多个服务之间的通信。


呵呵,看来你对这个东西的认识还是停留在概念层
0 请登录后投票
   发表时间:2007-12-18  
简单说,ESB是为服务提供者和服务消费者建立一个通道,当然它的功能不仅仅如此。
Workflow我认为只是一种服务,我们可以称之为“组装服务”。

目前来看只有SCA和JBI可以作为实现SOA构架的技术指导方案。但SCA中并没有ESB的概念,不过如果要去实现一个SCA容器的话,我想ESB肯定是少不了的。

另外,SOA的确只是个概念,或者说是方法论,和OOP一样。所以那些所谓的SOA技术标准,也都只是大公司的噱头而已。
所以说,其实讨论SOA的灵魂这个话题本身就没有太多的意义,或许我们可以关注一下SOA这种新的解决问题的思想,如何在我们的开发和生活中得以应用。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics