`
shuidrinking
  • 浏览: 1738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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的大脑和灵魂”。
     
分享到:
评论
30 楼 rihoonet 2007-12-19  
如果工作流不和人拉上关系,怎么算得上是工作流呢,难道在任意环节回朔的时候,不要有人的干预?
29 楼 lsy 2007-12-19  
工作流大多数情况会和人拉上关系,就形成了人工干预(Human WorkFlow),不过完整型并不单单依赖这个吧。也有很多是仅仅和外围系统打交道的案例。我想一个能够成功实现工作流的lifecycle,能在任意环节回朔的工作流,就是一个健全的workflow.
28 楼 rihoonet 2007-12-19  
lsy 写道
rihoonet 写道
其实,软件能把工作流和数据流搞定,再加上一些权限方面的控制,做到对用户来说软件灵活,对开发人员来说能不通过编码,就能实现一些用户需求,就是最好不过的了。


如果说要做到不编码,或者少编码就能把工作流和数据流搞定的话,我认为BPEL是最能说明问题的,至于权限那还是要其他东西做些工作。

如果工作流没有和组织机构结合起来,那算不得上一个完整的工作流,至少在很多方面会受到限制。举个例子,A请假,要A的上级审批,A的上级,就是组织机构里的东东。A的上级看到的数据,可能与A不同(可能有些字段A的上级看不到,有些字段不能被修改),这就是权限的问题。所以,工作流必须要和组织机构(当然,组织机构包括了权限)无缝的结合在一起。而数据流,则是组织系统各个模块的,这样才能形成一个系统。
27 楼 lsy 2007-12-19  
rihoonet 写道
其实,软件能把工作流和数据流搞定,再加上一些权限方面的控制,做到对用户来说软件灵活,对开发人员来说能不通过编码,就能实现一些用户需求,就是最好不过的了。


如果说要做到不编码,或者少编码就能把工作流和数据流搞定的话,我认为BPEL是最能说明问题的,至于权限那还是要其他东西做些工作。
26 楼 shuidrinking 2007-12-19  
rihoonet 写道
其实,软件能把工作流和数据流搞定,再加上一些权限方面的控制,做到对用户来说软件灵活,对开发人员来说能不通过编码,就能实现一些用户需求,就是最好不过的了。


一语道破天机!
25 楼 rihoonet 2007-12-19  
其实,软件能把工作流和数据流搞定,再加上一些权限方面的控制,做到对用户来说软件灵活,对开发人员来说能不通过编码,就能实现一些用户需求,就是最好不过的了。
24 楼 zrweng 2007-12-19  
rihoonet 写道
SOA不就是一个概念,没有什么实质性的东西。


类似J2EE,也只是一个规范而已,所以才有IBM、Oracle等不同厂家的不同实现。

SOA目前大多采用实现了SCA(容器)/SDO/ESB等规范的技术框架去实现.不同的厂家对规范理解或视觉的不同
当然会有差异性,SOA的实质应用已经有很多厂家在紧锣密鼓的进行中。
23 楼 rihoonet 2007-12-19  
SOA不就是一个概念,没有什么实质性的东西。
22 楼 lsy 2007-12-19  
我觉得组装和重构是核心,SCA在Domain做了这些事情,而楼主在工作流中做这些事情吗?SOA既然是方法论,标准也是人订的,那么实现的方式就有很多了,仁者见仁,智者见智。呵呵
21 楼 诺铁 2007-12-19  
硬编码调用也可以,所以只是有一个“流程”的概念,不见得是工作流,等流程复杂且多到一定程度自然会逼迫你去使用workflow,bpel或jbpm这样的流程引擎。
20 楼 rEloaD_cn 2007-12-19  
shuidrinking 写道
惊鸿逝水 写道
KAO,缺少了工作流,SOA就是空话?
工作流可以看作是SCA里的一个Component,可以被任意Component组装成Composite,对外暴露业务流程服务,放在可独立部署的单元Contribute.难道没有工作流,我SOA就不能assembly服务?


嘿嘿,没有WF,SOA能assembly服务,但是,这些服务怎么跑的动呢?


只要能暴露出服务接口,查询出服务,我认为这就算是一个比较简易的符合SOA思想的框架了。

至于对于这些以有服务如何串起来跑,这确实不是SOA真正所要关心的问题。再说了,就算我要assembly服务,也不一定要用WorkFlow,硬编码调用不可以吗?
19 楼 rEloaD_cn 2007-12-19  
SOA没有了WorkFlow就是空话?楼主有点太夸张了,我想这样的讨论真的没有太多的意义。
至于我说SOA它本身是概念,可能有点描述不准确,我想表达的意思是,SOA本身并没有提供任何实质性的技术标准,它只是提出了一种解决问题的方法,至于SCA等框架,都是在为落实SOA而制定的。
当然了,楼主也可以用WorkFlow作为核心来定制一套面向服务框架。
18 楼 timerri 2007-12-18  
ls | more

按SOA的观点看,ls 和 more是两个服务。 | 决定了流程,其实也是一个服务。

很典型的SOA应用,哪里来的不可承受之重呢?

17 楼 惊鸿逝水 2007-12-18  
shuidrinking 写道
惊鸿逝水 写道
KAO,缺少了工作流,SOA就是空话?
工作流可以看作是SCA里的一个Component,可以被任意Component组装成Composite,对外暴露业务流程服务,放在可独立部署的单元Contribute.难道没有工作流,我SOA就不能assembly服务?


嘿嘿,没有WF,SOA能assembly服务,但是,这些服务怎么跑的动呢?


呵呵,非得是工作流才能跑服务啊?

普通的CURD就不能暴露为Service?服务的Reference就不能从其他系统提供?

16 楼 shuidrinking 2007-12-18  
惊鸿逝水 写道
KAO,缺少了工作流,SOA就是空话?
工作流可以看作是SCA里的一个Component,可以被任意Component组装成Composite,对外暴露业务流程服务,放在可独立部署的单元Contribute.难道没有工作流,我SOA就不能assembly服务?


嘿嘿,没有WF,SOA能assembly服务,但是,这些服务怎么跑的动呢?
15 楼 leadyu 2007-12-18  
ESB和业务服务的重用与流程的重组才是SOA的核心。ESB正是服务管理与流程重组的关键组件,不光光是转换转换数据。


不要把BPM和WorkFlow打到一起,概念有点类似,实际根本不是亲戚
14 楼 诺铁 2007-12-18  
至于说“中小系统的不能承受之重”,我觉得主要是目前真懂这些的人才比较贵,工具也不成熟,导致性价比不高,这点将来会改善的。
13 楼 诺铁 2007-12-18  
shuidrinking 写道
rEloaD_cn 写道
工作流机制是SOA的灵魂? 不觉得 ESB是SOA灵魂倒有可能
  火车,铁轨,调度中心,你觉得哪个是灵魂呢?该不会是铁轨吧
<br/>
很赞同楼主的比喻。<br/>
quote是怎么了?怎么引用显示不正确?
12 楼 诺铁 2007-12-18  
引用
引用
工作流机制是SOA的灵魂? 不觉得 ESB是SOA灵魂倒有可能
  火车,铁轨,调度中心,你觉得哪个是灵魂呢?该不会是铁轨吧
<br/>
很赞同楼主的比喻。
11 楼 惊鸿逝水 2007-12-18  
KAO,缺少了工作流,SOA就是空话?
工作流可以看作是SCA里的一个Component,可以被任意Component组装成Composite,对外暴露业务流程服务,放在可独立部署的单元Contribute.难道没有工作流,我SOA就不能assembly服务?

相关推荐

    执行SOA——SOA实践指南

    **执行SOA——SOA实践指南** 在信息技术领域,Service-Oriented Architecture(SOA,...通过阅读"执行SOA——SOA实践指南",IT专业人员能够获取宝贵的SOA设计和实施经验,为构建灵活、可扩展的企业级系统提供指导。

    SOA实践指南-分布式系统设计的艺术.pdf

    领先行业的公司中全面推广SOA的第一手经验,解释了SOA如何简化大型应用的创建和 维护。不管你的项目是包含一套巨大的、基于Web Services的组件集,还是需要将老 系统和更现代化的业务流程连接起来,《SOA实践指南...

    SOA解决方案——BEA的SOA解决方案,绝对经典!

    **SOA(Service-Oriented ...通过《SOA解决方案——BEA的SOA解决方案》这份PPT,读者可以系统地学习到BEA的SOA实施策略和技术,这对于理解SOA的理论框架,以及在实际工作中构建和维护SOA系统都是非常有价值的。

    SOA治理——框架和最佳实践

    通过使用成熟度模型构建SOA路线图,如Oracle的五级SOA成熟度模型:第五级SOA,企业可以开启SOA之旅,并通过每一步的成功积累来管理SOA转型过程,最终实现期望中的SOA效益,如服务重用、改进集成、互操作性和业务敏捷...

    SOA探秘——BEA

    BEA(Business Enterprise Architecture,商业企业架构)在SOA领域中扮演着关键角色,特别是在早期,BEA公司是SOA解决方案的主要提供商之一。 SOA的核心概念: 1. **服务**:SOA中的核心单元是服务,它可以是任何...

    大规模SOA系统治理中的架构支持-程立

    ### 大规模SOA系统治理中的架构支持 #### 历史回顾与演进 - **创世纪第一天:** - 在SOA旅程的开端,组织认识到SOA的重要性,并开始学习SOA的基本概念和技术。 - 组织内部达成一致意见,决定采用SOA作为其业务和...

    Oracle SOA 套件——Oracle BPEL 流程管理器

    Oracle BPEL 流程管理器是Oracle SOA 套件中的核心组件之一,专注于业务流程管理。它支持100%符合标准的方法来整合系统和服务到端到端的流程中。通过BPEL(Business Process Execution Language),企业可以定义复杂...

    大规模SOA系统中的分布式事务处事

    在大规模的SOA(Service-Oriented Architecture,面向服务架构)系统中,分布式事务处理是一项至关重要的技术。这种架构通常涉及多个独立的服务协同工作,每个服务都可能有自己的数据存储,因此,确保这些服务之间的...

    从IP网到SOA网络—— 网络是整合的必由之路

    总之,从IP网络到SOA网络的转变,不仅仅是技术层面的进步,更是一个从单一功能向全面整合、从封闭孤立向开放共享转变的过程。这种转变为企业提供了更高效、更灵活的IT基础设施,以适应快速变化的市场环境和不断提升...

    基于 SOA 的教务管理系统的研究与实现

    总结来说,【基于 SOA 的教务管理系统】是通过采用SOA的松散耦合、粗粒度服务和标准化接口等原则,利用Web Service和J2EE技术,构建了一个可复用、高效率的教务管理解决方案,解决了传统系统中信息孤岛和重复开发的...

    SOA开放标准大观园——架构的导航

    - **OMG的Unified Modeling Language (UML)**:定义了元模型和符号系统,用于在工具中表示模型元素,并在自动化环境中交换信息,支持SOA组件的设计和文档化。 ### 综合视角与实践意义 《SOA开放标准大观园——架构...

    校友录系统:Web服务调用和SOA架构+部署docker容器——亲测可用

    校友录系统:Web服务调用和SOA架构+部署docker容器——亲测可用

    实施IT系统的SOA转型 创造竞争优势——上海移动信息系统部总经理专访

    【IT SOA 转型】面向服务的架构(Service-Oriented Architecture,简称SOA)是一种设计方法,用于构建灵活、可复用和可扩展的IT系统。它强调将复杂的系统分解为一系列独立的服务,这些服务可以独立开发、部署和升级...

    SOA异构系统交互指南

    **SOA(Service-Oriented Architecture)异构系统交互指南** 在现代企业级应用环境中,系统集成成为了一个关键挑战。由于历史原因,许多组织都拥有由不同技术、平台和编程语言构建的异构系统。SOA(面向服务的架构...

    模式:SOA基础——业务流程管理场景

    Patterns: SOA Foundation - Business Process Management Scenario Contents Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi ...

    流动的城市——SOA策略、方法及实施案例

    ### 流动的城市——SOA策略、方法及实施案例 #### SOA与城市规划管理的类比 在探讨SOA(面向服务的架构)时,将其与城市规划管理进行类比,不仅是一种形象的比喻,更是揭示了两者之间深层次的联系。城市规划管理...

    SOA 信息系统企业架构

    在企业信息化建设中,SOA 被广泛应用于构建灵活、高效的信息系统架构,以支持业务流程的快速变化和集成需求。 #### 二、SOA 在企业信息系统中的应用 ##### (一)IaaS (Information as a Service) 架构 Forrester...

    某公司soa管理子系统实例

    在这个实例中,我们看到的是一个基于SSH框架的小型SOA管理系统,它包含了学生模块和财务模块,展示了如何在实际项目中应用SOA理念。 1. **SSH框架的运用** SSH是Spring、Struts和Hibernate三个开源框架的组合,...

Global site tag (gtag.js) - Google Analytics