`
shuidrinking
  • 浏览: 1737 次
  • 性别: 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的大脑和灵魂”。
     
分享到:
评论
50 楼 hongsoft 2008-12-09  
严重反对楼主这样的把SOA和工作流关联起来的行为。

从技术实现上看,我理解的SOA包括如下内容:
1)首先要有service的实现和封装。就是通过某个方式,用技术的方法把服务封装出来。(比较好的是 webservice+sca)
2)其次要有service的管理。可能是通过简单的表结构来做一个服务表,可能是用service registry来做一个注册中心,可能是ESB。
3)再其次要实现service的编排。这个可能是一个BPM产品来实现。

BPM产品和工作流的区别在哪里?这个涉及到SOA的本质。
请看http://hongsoft.iteye.com/blog/288992
(BA使用BPM工具,在一个集成的环境中来建模和部署可执行的业务流程)

楼主的工作流的技术和场景,严重违反了这个标准:
1)没有让BA参与进来
2)没有一个集成的环境
3)工具不能产生可执行的业务流程
49 楼 fjlyxx 2008-12-09  
明白一个概念,SOA的工作流程的目的是更高层次的协同工作(比如部门间,不同行业间)。不要被EOS和一些书本给影响了。如果SOA拿去开发一个紧密联系的流程那么和EOS有什么不同。工作流是一个具体的业务流程,SOA是的流程更多是个桥梁作用。A B C三个点A同时要B C和协同工作这个才是SOA的流程。B C对SOA来说都是服务,所以SOA流程内只有简单的一个控制逻辑。
ESB是一个调度中心 不是铁轨,ESB提供流程的内核服务。一个SOA平台没有可能做到具体化一个具体业务,它只能协调业务服务的工作。

太多打着SOA的旗号卖工作流的人了。SOA的目的就是协同工作和信息共享,不是业务处理。业务的处理是服务关心的。
48 楼 thesecondbull 2008-11-30  
看了一点,偶不懂啥是soa,但是面向服务应该和工作流扯不上啥关系吧,他们就不像一个层次上的事情,假设lz的那个假设是正确的,那如果系统里有workflow他就叫soa?笑话
47 楼 czx566 2008-10-03  
soa的业务流程更多的提法是:process
而楼主所提到的工作流是:workflow
这两个在单词语义上面就是有区别的。


至于process 在soa当中的地位问题
我举一个具体应用soa的案例:
在客户的需求中,需要将域中所有的系统所有的操作 实时归纳到一个统一的日志系统中。这样在这个soa应用中,我们仅仅需要将监听的系统所作的操作信息转存到日志数据库中。这个仅仅需要esb。而根本没有出现process,更没有workflow。



46 楼 jzcjy 2008-08-22  
仅仅从业务上看工作流和业务流程是对应的,从技术上来看SOA不仅仅是这点东西!
45 楼 rEloaD_cn 2007-12-28  
shuidrinking 写道
jasonhsu 写道
工作流本身和SOA没有什么直接的关系,工作流引擎可以实现为一个或若干个service,当然也可以实现为其它的依赖实现方式,仅此而已。

这是什么话呀,感觉你连工作流都不了解,谈什么SOA


从一开始大家就很含蓄的指出了你的错误,有问题大家一起讨论嘛
44 楼 zrweng 2007-12-24  
shuidrinking 写道
jasonhsu 写道
工作流本身和SOA没有什么直接的关系,工作流引擎可以实现为一个或若干个service,当然也可以实现为其它的依赖实现方式,仅此而已。

这是什么话呀,感觉你连工作流都不了解,谈什么SOA


真可笑,呵呵
43 楼 shuidrinking 2007-12-24  
jasonhsu 写道
工作流本身和SOA没有什么直接的关系,工作流引擎可以实现为一个或若干个service,当然也可以实现为其它的依赖实现方式,仅此而已。

这是什么话呀,感觉你连工作流都不了解,谈什么SOA
42 楼 lsy 2007-12-24  


引用
一路看来,现在有一个问题在我脑间回荡。 工作流和业务逻辑是一个什么关系? 工作流和SOA应该没有直接关系吧。 感觉现在大家讨论工作流就是应用一些工作流框架实现你自己定义的工作流业务逻辑。而SOA是站在系统构架角度上,完成各种服务之间的交互工作。

赞同jnn的观点哈
41 楼 Godlikeme 2007-12-23  
shuidrinking 写道
    最近开发了一套工作流系统,当然,相对比较简单,对于复杂的自动机没有实现。开发完之后对SOA有了更深入的理解。

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

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

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

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

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

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


                                                             写于在公司开发完一套工作流系统后。

lz,看完之后只能说没看到什么有价值的内容。
首先,所述内容是工作流相关,SOA无关,请修改标题,避免不必要的误会。
再者,工作流应用的核心不是工作流引擎本身,也不是DAO方式和系统开发规范统一、也不是界面友好的流程管理工具,而是系统中工作流与业务模型整合方式,这直接决定了系统中业务操作的处理模式和流程的可配置性,却被定格为边界程序。这个问题没有弄清楚其他岂不是空谈。


40 楼 jasonhsu 2007-12-22  
工作流本身和SOA没有什么直接的关系,工作流引擎可以实现为一个或若干个service,当然也可以实现为其它的依赖实现方式,仅此而已。SOA方式是一种系统架构间层次结构间进行依赖的一种方式。在当前技术条件下,中小系统完全可以很好地依据SOA原理进行构造,倒是按SOA方法构造大型系统却还一些问题点需要解决或验证。楼主可能了解一点工作流,但对SOA却基本没什么概念。
39 楼 jnn 2007-12-22  
一路看来,现在有一个问题在我脑间回荡。

工作流和业务逻辑是一个什么关系?

工作流和SOA应该没有直接关系吧。 感觉现在大家讨论工作流就是应用一些工作流框架实现你自己定义的工作流业务逻辑。而SOA是站在系统构架角度上,完成各种服务之间的交互工作。

38 楼 rEloaD_cn 2007-12-21  
blueoxygen 写道
工作流 工作流 有个流程
我一个企业有个财务系统 有个供应链管理系统
请问这两个是怎么个工作流?


呵呵,有意思,楼主请回答一下,看工作流怎么解决异构系统之间的整合。

不过可以看得出来,有的时候SOA的思想应用到EAI产品方面还是相当有效果的
37 楼 blueoxygen 2007-12-20  
工作流 工作流 有个流程
我一个企业有个财务系统 有个供应链管理系统
请问这两个是怎么个工作流?
36 楼 惊鸿逝水 2007-12-20  
很明显,楼主的工作流和SOA关系的描述根本就是生搬硬扯!
35 楼 jeff_yuchang 2007-12-20  
我个人不觉得SOA和工作流有什么关系,SOA主要是为了信息的整合.. 工作流可以是被包括在一个很具体的service里面,比如机构的一个工作流服务..拿JBI的规范来说的话, BPEL这样的也只能算是一个plug-in, 算是一个service..只不过是一个比较复杂的service.
我觉得SOA更关键的是ESB,特别是具有实现EIP router的ESB...

个人看法...;)
34 楼 shuidrinking 2007-12-20  
角色是工作流的一大要素,还要你说吗?
33 楼 timerri 2007-12-20  
硬编码的请假流程是不是工作流?
用脚本写的请假流程是不是工作流?
用工具拖拽出来的请假流程是不是工作流?
32 楼 rihoonet 2007-12-20  
请假流程、文档会审流程等都是工作流,你认为呢?
31 楼 shuidrinking 2007-12-20  
rihoonet 写道
lsy 写道
rihoonet 写道
其实,软件能把工作流和数据流搞定,再加上一些权限方面的控制,做到对用户来说软件灵活,对开发人员来说能不通过编码,就能实现一些用户需求,就是最好不过的了。


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

如果工作流没有和组织机构结合起来,那算不得上一个完整的工作流,至少在很多方面会受到限制。举个例子,A请假,要A的上级审批,A的上级,就是组织机构里的东东。A的上级看到的数据,可能与A不同(可能有些字段A的上级看不到,有些字段不能被修改),这就是权限的问题。所以,工作流必须要和组织机构(当然,组织机构包括了权限)无缝的结合在一起。而数据流,则是组织系统各个模块的,这样才能形成一个系统。


问个简单的问题:什么是工作流?

相关推荐

    执行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