- 浏览: 384766 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
ouyida3:
sslaowan,新春快乐,祝你阖家安康狗年大吉:)
【转载】js定义对象 -
qinghechaoge:
感谢分享,受教了
DCloud下拉刷新上拉加载 -
zero鹏:
...
Spring中的AOP -
xuyiooo:
新浪微博很适合高并发,实时性很高的网站参考的
[zz]新浪微博技术架构分析 -
liuxiang00435057:
基于这种风格的权限怎么去控制呢,精确的每个方法
Spring3.0新特征-Restful support MVC
本文发表于《中国计算机用户》杂志2009年第1、4期
http://media.ccidnet.com/art/2655/20090106/1652443_1.html
http://media.ccidnet.com/art/2655/20090223/1686267_1.html
大型企业信息化中的BPM 和SOA 实战
万星 [1]
JPort Group
北京交通大学
1 概览
对于 BPM 和 SOA 的理解一直是非常困难的,我认为如果没有企业信息系统的丰富开发背景,以及对于软件工程历史的充分了解,想要从纷繁的概念中理清一条思路,进一步为己所用更是让人难以下手。 SOA 和 BPM 概念的提出都具有悠久的历史,在学术界的研究也在向语义 SOA 和语用 SOA 等方向发展(这也是我们另一个实验室正在探索的方向)。而厂商的驱动使得 SOA 和 BPM 逐渐落地,从早期的大量文献在解释 SOA ≠ Web Service ,到后来 ESB 的出现,以及最近的 SCA/SDO 规范的完善(特别是具体产品的落地),直至今年兴起的 BPM 和 SOA 热潮,我们可以看到 SOA 离我们的工业实践越来越近了,它不再是一个时髦的大词。工作流抑或业务流程的辨析同样也使用户为难,简单而言,业务流程∈工作流。业务流程管理,或 BPM ,强调的概念是企业应用集成( EAI )。而 Workflow 领域的研究则显得单纯一些。许多开发者都是从技术的角度来考虑 SOA ,因此相信 SOA 只是一种新的分布式架构或者是一种新的 EAI 方式。起初,我也兴奋的认为将 BPM 和 SOA 结合起来是伟大的想法(两种以 EAI 为目标的技术整合在一起),以流程的方式整合服务,这是比 ESB 的想法更加先进的主意。然而,随着研究和实践的深入,我越发觉得 SOA 和 BPM 结合带来的好处远不止于此。
1.1 我们做了什么?
我们 JPort 团队主要研究了 IBM 的 BPM 和 SOA 方法论,并结合了企业管理中的一些方法,又融合了软件开发领域几十年的模式和最佳实践,对于我国南方某大型港口企业的业务流程进行了优化,并基于优化的流程设计了 SOA 风格的 IT 系统。
我们的主要工作包括:
1 找到了从企业战略到业务操作具有完整映射的组件模型方法论—— IBM 创造的 CBM (组件化商业模型),设计业务组件模型;
2 引入了企业价值树模型从企业战略出发推导出业务流程的 KPI (关键绩效指标);
3 结合既有的业务流程优化模式, CBM 方法论,企业价值树模型,创建了一套业务流程重构方法论,包括业务流程 Bad Smell ,重构名录,以及评估测试模型体系;
4 利用用例对企业的既有业务流程和业务规则(包括国家法规和企业内部的规章制度以及其他更为细节的业务规则)进行了详尽的调研;
5 通过使用 IBM Websphere Business Modeler ( WBM )对那些画在纸上或 Visio ,甚至是 Rational Rose 中的现有业务流程模型( AS-IS Model )进行了重绘,并利用其按照我们提出的业务流程重构方法论进行业务流程优化,得到未来的业务流程模型( TO-BE Model )。在 WBM 中,我们可以为组件(在 WBM 中每个流程任务都是一个组件)的一些特别的事件属性赋值,并将那些由企业价值树模型推导出的 KPI 设置在相应的组件上;
6 利用 IBM 的 SOMA (面向服务建模和架构)方法论识别,规约和实现服务;
7 使用 IBM Websphere Integration Developer ( WID )来设计和开发 SOA 系统。其中除了包含一般服务,业务流程服务,人员任务服务,状态机服务和业务规则服务,还包括与第三方服务(无线通讯服务,消息服务以及金蝶财务系统, AIS 等)的交互,与远程 RCP ( Rich Client Platform )客户端的交互,以及遗留系统集成;
8 将系统部署在 IBM Websphere Process Server 和 IBM Websphere ESB 之上,并通过企业 Dashboard 监控之前在 WBM 中设置的 KPI ;
9 提供了一份完整的投资回报分析报告。
1.2 本文提供什么?
在针对该大型港口企业信息化项目中,我们遇到了一系列的问题,在理清了 SOA 和 BPM 、企业信息系统这几个大的主题纷繁复杂的知识结构,以及 IBM 在这些领域的众多概念之后,对关于这些主题的如下问题进行了重新的审视:
两个首先被提出来的大问题是:
1 从企业角度看 SOA 和 BPM , SOA 有何不同?
2 SOA 如何帮助企业进行业务流程管理?
大量的文献都在讲解什么是 SOA ,然而关于它究竟有何不同的讨论却难以具有说服力。本文试图结合理论和实践,规范与实现来说明实战中的 SOA 和 BPM 是如何相互作用帮助企业提升企业绩效,满足企业核心战略,以及实现 ROI (投资回报率)。
2 从企业角度看 SOA 和 BPM
2.1 SOA 有何不同?
正如前文所说,理解 SOA 一定要站在企业的高度,与其他方法学和技术相比, SOA 具有以下特点:
1 SOA 是一种架构模式(现在来看,其应该是一整套方法论),而非一个产品。
2 SOA 比过去的任何 IT 技术都要更关注企业,其中的服务应该是指业务服务,或者说企业服务,而非具体技术提供的服务,注意这是一个识别和设计服务时选取视角的问题。与领域建模中所提到的服务区分比较困难,因为对于这两个概念的理解因人而异。
3 SOA 比过去的任何 IT 技术更加强调抽象、关注点分离,也更加强调基于标准和规范,平台中立,技术无关,这与计算机科学的发展是密不可分的。
SOA 绝不仅仅意味着企业应用集成( EAI ),也绝不仅仅就是一种分布式架构,与 JEE , .Net ,以及更早的 CORBA (公用对象请求代理(调度)程序体系结构 Common Object Request Broker Architecture ) 等技术相提并论。
SOA 的革命性之处在于其把企业定义为提供服务的组织,服务提供的单元作为组件,就像 OO (面向对象)是革命性的一样(也不仅仅只是一个编程模型)。在从面向过程、结构化方法论向 OO 迈进过程中(其间还经历过很多的开发范型),我们需要改变过去以机器指令看待业务执行的思维,而应以对象来建模业务。而 SOA 中,则需要我们从更加宏观的企业关注点出发,其最高纲领当然就是企业战略了。
在 1.1 节中我所提到的那些方法论,相辅相成,浑然一体,完成了一个从企业战略逐步推向 IT 实现,又以 IT 实现帮助企业监控企业绩效,从而调整企业战略的过程。在环环相扣的 BPM 和 SOA 解决方案中,可以更好的体会, SOA 中的服务,是如何从企业的高度得来的。
2.2 Component Business Model
CBM 是 IBM 提出的以组件方式重新理解企业的方法论,在这个方法论中,包括三个主要步骤:洞察,架构和投资。其中最为重要的就是设计业务组件模型。
业务组件模型就是将企业中那些使用了相似的资源(人员,技术等)的类似活动聚合起来,其实这一概念和好处是非常容易理解的。快速理解这一概念的好方法是(我们就是这样做的),把企业的流程搜集起来,然后使用 Excel 将 每个流程作为一列,然后行表示业务活动,你可以将那些相同的活动(不同的流程总是会共享一些共同的流程活动,比如付款,计费,查询订单号)放在同一行,给 他们起一个名字,这个名字就是服务名,然后在将一些看上去属于同一类的活动用一个彩色的方块围起来,这就是一个业务组件了。企业的组织结构将帮助你设计业 务组件,然而对于大型企业进行分析,你就会发现其中存在很多冗余、重复甚至是莫名奇妙的组织单元或职能部门,因此需要注意的是,不要让糟糕的组织模型限制 了设计业务组件的思维。
CBM 将组件放在一个二维矩阵中,横轴是责任等级,纵轴是业务能力,交点是业务组件。责任等级与我们在信息管理专业课本上看到的那个信息系统分级是一致的, CBM 中定为 Direct (引导), Control (控制), Execute (执行),对应的信息系统分级实际上就是战略层,战术层和操作层。其中 Control 主要完成的是业务的监管,包括一些分析,报告等内容。
按照 IBM 的官方说法 7 :业务组件包含五个方面,分别是业务用途,活动,资源,治理模式和业务服务。如果你使用过 WBM ,那么看到活动,资源和业务服务一定会感到兴奋,如果这些直接转成 IT 设计,那么我们就完成了一次从业务直接映射到 IT 的过程!而其中的业务服务,就是我们在 SOA 中的服务的一部分(因为还包括其他两类来源的服务,见 2.3 节)。
2.3 Service-Oriented Modeling Architecture
IBM 的 SOMA 方法论主要就是用来识别、规约和实现服务的。识别服务主要有三种方式,第一种就是分解业务领域,其实这种方法可以借助 CBM 来完成,还记得前面所说的业务组件包含的业务服务吗?那个业务服务实际上就是这么推导出来的。第二种就是基于对既有系统的分析(这也是 SOMA 方法论中包含的一个活动),在已有的系统中(这些系统不久就变成遗留系统了),提供了哪些功能,完成了业务,这就是服务了,第一种方法叫自顶向下,第二种方法叫自底向上,而第三种方法当然就是从中间向两边了(没有创意的 IT 理论界)。这种方法就是从其他方面考虑一下,有没有落下的服务。
第二个步骤是制定服务规约,包括接口签名,数据对象,组件设计等。列举出的就是最重要的。其实这些设计的原则以及模式,大都可以来自于过去分布式系统的经验,而对于服务识别,我们亦可参考分析模式,我主要参考的是 Martin Fowler 的《分析模式》。在实际项目中,我主要需要研究计费模式。服务是通过接口暴露的,而由组件来提供相应的服务实现。这没什么特别的。而数据对象设计,这里的数据对象并非单指持久化对象,也非表现层数据对象或者数据传输对象( DTO ) 1 、值对象( VO ) 2 ,而是指贯穿于各层之间的数据对象。这些数据对象就是 Pure Data Object ,只有属性没有方法。
第三个步骤就是决策服务的实现。每种服务究竟该如何实现,是自己实现还是封装遗留系统提供的服务 / 第三方服务(映射已有 / 外部服务),自己实现是新建 Java 服务,还是流程服务(包括状态机),或是人员任务,抑或是业务规则。
从这套思想的步骤我们就可以看到,从来自于业务域(其来自于更高层的企业战略分析)识别出来的服务,到规约上的设计,以及最终的实现决策,充分的体现了, SOA 方法论中更加注重从企业出发和关注点分离这两个特点。换个角度,由于当前 IT 技术以及计算机科学的发展,才使得我们可以如此轻松的实现从业务到 IT 的映射。下面就来讲一下技术标准,以及它在现实世界中是什么样子的。同时,也可以体会一下思想,理论,技术与实现是如何很好的结合起来的。
2.4 SCA/SDO 规范与实现
就在我搁置对于 SOA 的研究有半年之久的时候,忽然打开互联网,发现 SOA 已经有标准了,那就是刚露头角的 SCA ( Service Component Architecture )和 SDO ( Service Data Object )。因此,在 SOA 有何不同的论述中,我尤其强调了 SOA 注重标准和规范这一事实。
SCA
SCA 是一个 SOA 的编程模型,就好比 JSP 是 Web 开发的一个编程模型一样, Web 是一种架构模式,而 SOA 亦然。 SCA 有很多部分组成,核心理念是 1 )将业务功能作为一系列的服务而提供, 2 )将这一系列的服务组装起来。 SCA 致力于创建服务组件,以及解决各服务组件间的多技术互访问题。 SCA 的核心工件是组件( Component )。 5
如果想要问 SCA 与其他诸如 JMS 、 CORBA 这样的编程模型有何不同,我觉得 IBM 的 Barcia 和 Brent 给了我们最好的答案: SCA 向您提供一个以与技术无关的方式定义接口、实现和引用的模型,从而使您能够将这些元素绑定到所选择的某一技术的特定实现。 3
OK ,当我们谈及组件或对象时,无非要涉及这么几个抽象关注点(如果你认同每个实组件或对象都要将接口与实现分离的话):其接口是什么,实现是什么,以及其依赖了什么(依赖的组件或对象当然又包含接口和实现)。 SCA 则把关注点分离发挥到了极致,接口,实现,以及引用都是可选的。如图 2.4-1 所示。
图 2.4-1 SCA 组件模型
于是在 SCA 规范中 5 , SCA 当前支持接口类型系统包括: Java interfaces 和 WSDL ( WSDL 1.1 portTypes 和 WSDL 2.0 interfaces )
而对于实现,则可以包括 Java , C++ , BPEL 流程, Web Service 以及 SCA Composite 。在 IBM WID 中可以选择实现( generating implements )为 Java , Web Service , Process , State Machine , Rule , Human Task 等。 Process , State Machine (特定的 Process )由 BPEL 技术支持。
当 SCA 模块(在 SCA 规范中即 Composite ,在 IBM 的产品中被称为 Module )被导出(作为服务),或者需要导入其他服务时, SCA 中还可以指定要访问服务使用的机制是什么。这是通过 Binding 实现的。由于导入、导出都是抽象概念,因此需要绑定通讯机制。
通过 Binding ,来指出想要调用服务和服务被调用时的访问机制,包括 SCA , JCA , Web Service , JMS ,无状态会话 bean 等。
OK ,接口,实现, Binding ,引用,全是独立变化,自由组合的,全面的灵活,与技术无关。前所未有,这就是 SCA 。
在 IBM 的实现版本中,可以借助 WID ,很方便的开发 SCA 程序,并且提供了很多便利的扩展。比如谈及实现问题时, IBM 提供的诸如 Process , State Machine 之类的实现类型。
SDO
SDO 是一个数据应用系统开发框架,它包括架构和 API 。它在 SOA 系统中充当抽象数据。 6
SCA 规定了怎样编写 SOA 程序,组件、服务、引用等都是如何定义的,以及它们之间如何通讯,而且还规定了如何传递数据,数据的类型可以有很多种,但是首选 SDO 。
那么 SDO 又是如何超越以往任何技术或规范实现技术中立、平台无关的呢?没什么令人惊奇的,做到这些无非就是增加中介和中间层次,将不同的关注点隔离。 SDO 客户端通过 SDO 框架工作在 SDO 数据图( Data Graph )之上。数据图中包含多个数据对象和改变摘要( Change Summary )。 DMS (数据中介服务)访问数据源,即 DMS 负责从数据源创建数据图,并且基于对数据图的改变更新数据源。
如果想要更新 SDO 数据,将如何做呢?首先 SDO 客户端(即 SDO 应用)遍历数据图,修改其中的数据对象,然后将修改的数据图传回 DMS ,然后 DMS 根据修改的数据图更新数据源。
可以看出,正是由于有了数据图和数据中介服务这两个隔离,才将具体的数据源与 SDO 应用分离开,而由 SDO 框架来做出相应的转换。
IBM 对 SDO 进行了扩展,就是所谓的 BO ( Business Object )。
阅读和理解规范,并且与具体的实现产品联系起来,可以更好的理解 SOA 思想。
BPEL
BPEL 是用来编排流程服务的规范,这里的服务技术是 WS*- 堆栈的 Web Service 。 BPEL 规范中详细的定义了如何引入 Web Service ,其中包含的各种活动(诸如 Invoke , IF , Scope 等)以及如何建立引用。在规范中,对于引用的其他服务称为 Partner ,可以看出,这样的说法更贴近于业务层次。 4
正是由于 SCA 、 SDO 这样的将抽象发挥到极致的规范,使得我们可以按照 CBM 、 SOMA 方法来设计 SOA 系统。我想使用一下 WID 来进行 SOA 系统的开发,将使你更容易体会我想说的内容。可见, SCA 和 SDO 中规定的组件,服务,接口,数据对象,以及 BPEL 中提到的活动,与之前 CBM 、 SOMA 方法中提到的组件,业务服务,接口,数据对象,和活动,是非常吻合的,而且这是一个前后照应,完整的方法体系。
小结
写到这,似乎可以将理论和实践、规范和实现联系起来了,再强调一次, SOA 的思维是从企业业务出发,甚至是企业战略出发,来考虑服务和组件,而不是从远程方法调用( RPC ),消息服务,或者是分布式对象( EJB 等)的角度去考虑服务。
SOA 不只是 EAI ,这句话的另一个意思是, SOA 包含 EAI 的部分。前文我提到了,通过 BPEL 和 SCA Composite 这样的技术,我们可以实现系统的集成,企业是流程驱动的,流程是由业务组件组成的,那么我们就可以通过 BPEL 将服务组合起来,或者通过 SCA 将服务组装起来( SCA 的基本理念之一)。那么,还要 ESB 干嘛? ESB 在哪?
2.5 ESB 在哪?
ESB ( Enterprise Service Bus ,企业服务总线)继承了 EAI 的思想。我不必重复讲解 Hub/Spoke 和 Bus 这两种拓扑结构。因此, ESB 的出现是为了解决集成问题。
ESB 是 SOA 的一种实现模式,任何接入 ESB 的应用都将封装为服务的形式,其核心是个中介流(在 IBM Websphere ESB ( WESB )中是通过策略 SCA/SDO 实现的中介流组件),可以在其中设计消息路由,然后由其来完成消息的路由,格式、协议的转换 / 翻译,以及消息的分发。消息路由当然是要按照业务逻辑来设计。两个系统(包括但不限于异构系统)需要进行通讯难道不是因为业务逻辑的需要?这其中的业务逻辑就包括了业务规则和业务流程,不过也有可能就是某个业务需求,需要对两个系统进行消息转换。
可以简单的说, SCA+BPEL 就可以代替 ESB 的存在了, BPEL 可以充当中介流,只不过它更为强大(尤其是 IBM 将 SCA 作为 WESB 的编程模型之后,这进一步模糊了直接使用 SCA 和使用 ESB 的界限,如果说状态机是 Process 的一个特定实现,那么 WESB 就是 SCA 的一个特定实现了)。但是如果仅仅是想做 EAI ,或者尝试用 SOA 的方式做 EAI ,而不是如我前文所讲,采用一套完整的、从业务到 IT 的水到渠成式的 SOA 解决方案,则采用 SCA+BPEL 会面临更加复杂的学习曲线,虽然我认为它是更好的实现。
3 BPM 与 SOA 互动
BPM 是从 BPR (业务流程重组)发展而来,在大型的企业中,想要实施 ERP (企业资源计划)往往都要经历一个 BPR 的过程,然而想要一蹴而就的 BPR 很 难在大型企业中实现。预先看不到一点好处的改革将会受到巨大的阻挠,因此,一个更好的方式,先将企业的流程监管起来,发现流程运转中的问题,或者那些大幅 度创造价值的热区,然后在对业务活动扬长避短,以提高企业的效率。那么,如果才能有效的监管流程呢?答案当然是数字化业务流程,还记得 CBM 方法论吗?我们需要一套从执行到控制再到战略的、互相沟通的组件。然后在组件之上设定 KPI 和特别事件(执行时间和成本,资源,等待时间和成本,角色 / 人员等)的属性。当企业正常运转时,我们就可以从现场直接搜集到第一手资料,进行企业的监控了。然后根据监控结果进行流程优化。优化后再监控,再根据新的结果优化,如此反复。
这里就存在两个问题,一个问题是 KPI 如何得来;第二个问题,当发现了问题,并且找到了优化方案后, IT 如何能够快速的随需而变。以下两节将解决这两个问题。
3.1 企业价值树模型
企业价值树可以帮助我们从企业战略到业务流程 KPI 的推导,当然,这不是数学,严谨的推导是不可能的。我们可以先从企业战略主题出发,然后由主题发现企业关键绩效指标,然后在寻找影响这些企业关键绩效指标的核心驱动流程,最终推导出流程的关键绩效指标( KPI )。
不得不说,详细完整的 CBM 方法论应该包括这个部分,但是这一方面大概是 IBM 内部的机密,因此我们只能通过引入其他的模型来解决问题。
3.2 SOA 帮助企业数字化 BPM
从 CBM 方法论我们可以看到(你可以回顾本文的相应章节),其核心的业务组件模型包括了活动、资源等,我们也提到过,业务组件是从业务流程中归纳出来的,它们是一个互动的关系。
从概览部分你可以了解到 JPort 团队做了哪些工作,这些工作连起来就是为了利用 SOA 帮助企业数字化 BPM 。
SOA 的方法论支持 BPM 中需要监控业务组件的需求,因为 SOA 的服务是由业务组件来实现的。另外, SOA 也可以满足随需应变的业务要求,就像领域驱动建模一样,基于业务建立的模型,神奇的可以随业务更好的变化。 SOA 的方法论可以完整的更好的以这种方式建模,就像本文始终所演示的那样。
4 结论
采用 SOA 方法论一定要站在企业的角度去思考问题,具体的、可操作的方法就是 CBM ,更重要的是其中蕴含的思想。首先要了解企业的战略是什么,根据战略再来了解企业的业务,可以通过业务流程建模软件模拟企业流程,分析企业问题。然后俯视整个企业,设计出业务组件模型,并暴露服务。接下来在通过 SOMA 方法识别出所有的服务,之后再考虑服务规约,数据对象模型的设计。最后,才是决策实现的方式,复用遗留系统的功能,引入第三方服务,还是自行开发。当然并非所有的企业应用都有必要采用这样的步骤,比如只是一个新的功能,可以不妨以 SOA 的思想来开发这个新功能,关键是要为企业提供合理的 ROI 。
新的 SOA 编程模型 SCA ,与过去的众多用于 SOA 实现技术相结合,使得 SOA 的思想可以更好的实现,比如复用遗留系统, Web Service 不再是不二法门,诸如无状态会话 Bean , JMS 之类的应用,亦可无缝的连接到 SOA 系统之中。 SDO 也增加了更多的抽象层次,其目标也更为宏大,这与 JDO 等目标不同。
SOA 和 BPM 结合起来,使得 SOA 找到了新的务实方向,对于企业信息系统而言是大有裨益的。
当然,本文主要是从 IBM , BEA , Oracle , SAP , JBoss , Sun 等这些 Java 世界的领导者的视角来看待 SOA ,以它们的产品和理论为基础,然而不得不说 Microsoft 有其自己的一套产品和理念,但是,其根本的 SOA 理论是一致的:以企业为圆点,高度抽象,关注点分离,技术中立,平台无关;另外,就是其亦看中与业务流程管理的整合。毕竟,微软是 BPEL 的缔造者之一。
一种务实的精神是,开发那些真正为企业创造价值的系统,如果某个业务单元本身就是低效和没有价值的,我们是不是可以考虑一下改变它的运作模式?
参考文献
1. Deepak Alur , John Crupi , Dan Malks , Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition) , Prentice Hall PTR
2. Martin Fowler , Patterns of Enterprise Application Architecture , Addison-Wesley Professional
3. Roland Barcia , Jeff Brent ,使用服务组件体系结构构建 SOA 解决方案 —— 第 1 部分 http://www.ibm.com/developerworks/cn/websphere/techjournal/0510_brent/0510_brent.html
4. Tony Andrews, Francisco Curbera,.etc,2003 , Business Process Execution Language for Web Services , Version 1.1
5. Michael Beisiegel,Henning Blohm,.etc,2007,SCA Service Component Architecture : Assembly Model Specification
6. Bertrand Portier, Frank Budinsky,2004, Introduction to Service Data Objects:Next-generation data programming in the Java environment,http://www.ibm.com/developerworks/java/library/j-sdo/
7. IBM 商业研究院, 2006 ,组件化业务模型:企业实现专业化的有效工具
8. IBM Business Consulting Services, New competitive weapons in the insurance business: Insurance component business modeling, http://www-935.ibm.com/services/us/imc/pdf/g510-4033-new-competitive-weapons.pdf
9. Anurag Goel, Enterprise Integration:EAI vs. SOA vs. ESB, http://hosteddocs.ittoolbox.com/Enterprise%20Integration%20-%20SOA%20vs%20EAI%20vs%20ESB.pdf
评论
<div class="quote_div">不自量力,来评论两句.<br>纯粹是纸上谈兵.基本上没有啥实用价值.<br>在企业信息化开发中,最重要的因素<strong>,其实不是技术,不是业务,而是人</strong>.<br><br><br>
</div>
<p> 我觉得哥们儿的话说的太搞笑了,我看过《人件》~~~</p>
<p> </p>
<p> </p>
<p> </p>
<div class="quote_title">liujunsong 写道</div>
<div class="quote_div">
<br>IBM这些业界巨头,巨忽悠,他们提出的种种理念也好,概念也好,方案也好,都有一个基本的假设:所有的企业都是一样的,因此可以用一个统一的方法论,统一的解决方案来解决这些问题.具体到执行路线上,就是搞一个<span style="color: #ff0000;"><strong>巨复杂无比</strong></span>的解决方案出来,结果在实施的过程中,所有人的注意力都被引到如何使用这些庞然大物上面去了,而对于自己原本要解决啥问题,时间长了,就忘的差不多了.<br>等到醒悟过来,木已成舟,有苦都没地方去说了.<br>
</div>
<p> 我在做项目的时候,比较看重的是理论和实践的结合,IBM的RUP背后是有很深的理论和行业最佳实践的,迭代,用例驱动,面向对象,这些东西体系都很繁杂。但是,我的体会是,当真你做一个大系统,你可能刚开始用自己的方法,然后最终你可能会发现,你自己摸索出了的好多东西,在RUP中都已经有了。之所以会觉得把关注点都引入到那个庞然大物上,原因就在于你的经验太薄弱了,如果你有很丰富的经验,根本不会觉得的它复杂。</p>
<p> 还记得刚开始写用例时,Cockburn的用例模板实在是太多Item了,觉得很多都没用,而且格式也不是我们习惯的,然后我们就做了一个简化版本,然后随着我们需求的探讨逐步的深入,越写越复杂,然后不断的添加Item,最终发现,Cockburn的模板就是个最实用的集合,所有项目都是必要的!</p>
<p> 然后就是学习IBM的CBM,SOMA方法,学习IBM的WID,好几千页的文档,但是真的用起来,发现真的每一项都那么重要。</p>
<p> <span style="color: #ff0000;">之所以复杂,是因为我们本身的领域就很复杂,软件业就是如此的复杂!</span></p>
<p> </p>
<p> </p>
<div class="quote_title">liujunsong 写道</div>
<div class="quote_div"> <br>就说SOA这东西吧.<br>它究竟是指业务流程的分析方法呢?还是指开发的分析方法呢?说不清楚,很多文章都在混淆这两个概念.<br>第二个是文中的CBM的概念,这个概念也存在上面的这个问题,究竟是用来分析业务流程呢,还是用来开发设计呢?概念本身在文章里面多次发生偏移.<br>
</div>
<p> 业务流程分析的方法是在BPM范畴之内的,SOA是一种开发范型,一种架构风格,和一套技术规范。</p>
<p> 不知道您是不是知道结构化方法论,其中分为结构化分析,结构化设计,结构化开发等环节,其中系统分析中包括业务流程分析,请问结构化方法论是用来干什么的呢?</p>
<div class="quote_title">liujunsong 写道</div>
<div class="quote_div">无论和企业谈啥SOA,任何新概念,都有一个额外问题.<br>问题就是: <strong><span style="color: #ff0000;">开发商</span></strong>究竟是给企业提供何种服务的?或者说,到底是来干啥的?<br>为啥有这么奇怪的问题呢,是因为上文中提到了KPI的概念.<br>而且还说到了如何抽取KPI的方法.<br>正确与否先不论,这个根本就不是软件开发商的事情,是企业自己的事情. </div>
<p> 我们的团队做两件事情,第一件是 帮助企业用IT系统优化业务流程 第二件是 基于优化了的流程构建IT系统。</p>
<p> <span style="color: #ff0000;"> 归根结底是我们要利用IT技术为企业创造卓越的ROI~~~</span></p>
<p> </p>
<p> </p>
<div class="quote_div">文章的标题“大型企业信息化中的BPM 和SOA 实战”和文章内容在很大程度上不一致,“实战”这个词汇在文章没有很好地体现出来,文章讲得最多除了一些SOA,BPM,ESB,SCA,SDO,BPEL的概念之外就是再说这些概念之间的相互关系了。如果真是站在“实战”的角度来写文章,那么可以将如何具体实施SOA和BMP写出来,这样对读者更加有实际意义。</div>
<p> </p>
<div class="quote_title">sslaowan 写道</div>
<div class="quote_div">
<span style="color: #ff0000;"><strong>首先</strong></span>要了解企业的<strong><span style="color: #ff0000;">战略</span></strong>是什么,根据战略再来了解企业的<strong><span style="color: #ff0000;">业务</span></strong>,可以通过业务流程建模软件<span style="color: #ff0000;"><strong>模拟企业流程</strong></span>,<strong><span style="color: #ff0000;">分析企业问题</span></strong>。然后俯视整个企业,<strong><span style="color: #ff0000;">设计出业务组件模型,并暴露服务</span></strong>。接下来在通过 SOMA 方法<strong><span style="color: #ff0000;">识别</span></strong>出所有的<strong><span style="color: #ff0000;">服务</span></strong>,之后再考虑<strong><span style="color: #ff0000;">服务规约</span></strong>,<strong><span style="color: #ff0000;">数据对象模型的设计</span></strong>。最后,才是<span style="color: #ff0000;"><strong>决策实现的方式</strong></span>,复用遗留系统的功能,引入第三方服务,还是自行开发。</div>
<p> 一共就是这几个步骤,然后具体的方法是在之前的介绍里,比如通过企业价指树模型从企业战略推导出业务流程的KPI(如果你有业务流程优化和大型信息系统总体规划的经验那么会很容易理解这件事的重要意义),通过CBM方法确定业务组件并暴露服务,然后通过SOMA方法识别、规约、和实现服务。具体在每节中都有详细的并且是可行的步骤。</p>
<p> 因为这不是讲编程,怎么通过一篇短文写实战,还请赐教(因为我觉得可行的步骤已经代表实战了)~</p>
以后多上厕所就能搞明白了
它里面定义的什么概念、工作流程是不敢在项目中使用,咱们项目组人不才,太难掌握了,虽然有IBM的工程师过来培训咱们,但谁也不敢保证用了这东西会出现什么,怕被套牢,培训是要按小时收费的。我们是乖乖的凭经验自己弄整一套山寨版。
所以只用到一部分,接口的定义,然后就是跨省的联调(漫长的等待时间)
对这个了解甚少。
纯粹是纸上谈兵.基本上没有啥实用价值.
在企业信息化开发中,最重要的因素,其实不是技术,不是业务,而是人.
企业是由不同的人构成的,各个部门也是由不同的人构成的,所谓的业务流程也都是由人来组成和驱动的.
不同的企业,运行流程完全不一样,是因为他们的历史不同,人员不同引起的;同一个企业,同样的事情,有时这样处理,有时那样处理,因为对应的是不同的人.
同样的职位,这个人这样做是可以的,另一个人这样做是不行的,因为人和人是不同的.
IBM这些业界巨头,巨忽悠,他们提出的种种理念也好,概念也好,方案也好,都有一个基本的假设:所有的企业都是一样的,因此可以用一个统一的方法论,统一的解决方案来解决这些问题.具体到执行路线上,就是搞一个巨复杂无比的解决方案出来,结果在实施的过程中,所有人的注意力都被引到如何使用这些庞然大物上面去了,而对于自己原本要解决啥问题,时间长了,就忘的差不多了.
等到醒悟过来,木已成舟,有苦都没地方去说了.
------------------------------------------------------
就说SOA这东西吧.
它究竟是指业务流程的分析方法呢?还是指开发的分析方法呢?说不清楚,很多文章都在混淆这两个概念.
第二个是文中的CBM的概念,这个概念也存在上面的这个问题,究竟是用来分析业务流程呢,还是用来开发设计呢?概念本身在文章里面多次发生偏移.
-------------------------------------------------------
无论和企业谈啥SOA,任何新概念,都有一个额外问题.
问题就是: 开发商究竟是给企业提供何种服务的?或者说,到底是来干啥的?
为啥有这么奇怪的问题呢,是因为上文中提到了KPI的概念.
而且还说到了如何抽取KPI的方法.
正确与否先不论,这个根本就不是软件开发商的事情,是企业自己的事情.
--------------------------------------------------------
相关推荐
通过深入学习“金蝶EAS_BOS开发学习笔记”,开发者不仅能理解EAS_BOS的基本概念和原理,还能掌握实际操作技能,从而在企业信息化建设中发挥关键作用,提升企业的业务流程效率和决策质量。文档中的案例分析和问题解答...
- **业务流程管理 (BPM)**:管理和优化企业的业务流程。 - **服务导向架构 (SOA)**:构建灵活且可重用的服务组件。 #### 三、BPEL4WS 第二版主要内容 **1. BPEL4WS 的基础概念** 本书首先介绍了 BPEL4WS 的基本...
内容概要:文章主要讲解了力扣763题——划分字母区间的解法。题目要求对字符串进行划分,使得每个字母只出现在一个子串中,并且这些子串是连续的。文中详细解释了算法的核心思想:从字符串的第一个字符开始,找到该字符最后一次出现的位置作为初始区间边界;然后遍历该区间内的所有字符,不断更新区间的右边界为当前字符最后出现位置的最大值,直到遍历结束,即得到一个完整的区间。最后通过示例代码演示了这一思路的具体实现方法,包括输入字符串、计算各字符最远出现位置、确定区间长度并输出结果等步骤。; 适合人群:对算法和数据结构有一定了解,特别是正在准备编程竞赛或面试的程序员。; 使用场景及目标:①理解划分字母区间的贪心算法思想;②掌握如何通过查找字符最后出现位置来构建不重叠的最优区间;③学习C++语言中字符串操作函数如rfind()的应用; 阅读建议:在阅读时应重点关注算法的设计思路及其背后的逻辑,同时注意代码细节,如循环条件、边界处理等,可以尝试自己动手实现一遍加深理解。
base(1).apk.1
# 基于C语言的STM32开发板功能支持库 ## 项目简介 本项目是针对STM32微控制器的开发板支持库,涵盖多种功能模块,像GPIO控制、LCD驱动、串行通信等。为开发者提供丰富库函数与示例代码,简化STM32微控制器开发流程。 ## 项目的主要特性和功能 1. GPIO控制可进行GPIO初始化、配置、读写及引脚锁定,方便控制引脚状态。 2. LCD驱动支持多种LCD型号,能完成初始化、设置颜色、显示字符、绘制图形等操作。 3. 串行通信提供串行通信端口初始化、配置与通信功能,支持USART等协议。 4. IO扩展器支持STMPE811等IO扩展器驱动,具备IO读写、Joystick配置等功能。 5. 时钟管理可进行系统时钟配置与管理,包括时钟源选择、分频因子设置。 6. 任务调度实现实时多任务操作系统(uCOS II)核心功能,如任务创建、删除等。 7. 同步机制提供事件标志、消息邮箱、互斥锁、队列和信号量等同步机制,用于任务间通信与同步。
# 基于Linux内核的MaliG610 GPU模拟及性能分析系统 ## 项目简介 本项目名为kbasevalhall,主要用于模拟一个MaliG610(用于RK3588)GPU。它提供了创建和初始化时间线对象的功能,可用于跟踪和记录GPU设备的状态与操作序列,为GPU的性能分析和调试提供有效工具。 ## 项目的主要特性和功能 1. 模拟MaliG610 GPU通过项目代码可以模拟出MaliG610 GPU,为相关开发和测试提供环境。 2. 时间线对象管理创建并初始化多种时间线对象,如逻辑处理单元(LPU)、地址空间(AS)和GPU对象等,用于跟踪GPU设备状态。 3. 上下文跟踪遍历设备中的所有上下文,为每个上下文创建新的时间线对象,跟踪地址空间分配和内核处理器队列状态信息。 4. 数据传输刷新所有流,确保摘要包传输到用户空间,方便应用程序访问GPU性能数据。
# 基于Arduino的恐龙游戏 ## 项目简介 此项目是一个基于Arduino的恐龙游戏版本开发。包含了与游戏角色、场景元素相关的图形定义文件。通过二进制形式定义了游戏角色(如恐龙、角色腿等)以及场景元素(如云)的形状。这些图形定义被存储在AVR微控制器的PROGMEM中,用于游戏或应用程序的开发。 ## 项目的主要特性和功能 1. 图形定义项目包含多个图形定义文件,用于描述游戏角色和场景元素的形状。 2. 二进制图形表示所有的图形数据都以二进制形式存储,适用于在AVR微控制器上运行的游戏或应用程序。 3. 游戏角色和场景元素包括恐龙角色的主要形状、腿的形状,以及不同大小的云等场景元素。 ## 安装使用步骤 由于此项目为源码文件,用户已经拥有项目的全部代码,接下来可以按照以下步骤进行安装和使用 1. 导入源码将源码文件导入Arduino开发环境。 2. 修改和优化根据需要进行修改和优化代码,以适应特定的硬件或功能需求。
# 基于AVR单片机的自动搅拌杯系统 ## 项目简介 本项目针对传统手动搅拌杯需频繁按压按钮搅拌饮品的不便,利用AVR单片机(ATtiny13和ATmega328p)打造了自动搅拌杯系统。该系统通过简单电路控制电机和LED灯,实现自动搅拌功能,同时具备低功耗特性,延长电池使用寿命。 ## 项目的主要特性和功能 1. 多模式自动搅拌可通过按钮切换不同的搅拌模式,如电机持续开启、每隔30秒开启5秒、每隔1分钟开启5秒、每隔1分30秒开启5秒等。 2. LED状态指示LED灯以不同频率闪烁,直观显示当前的工作模式。 3. 低功耗运行在Power Down模式下,ATtiny13仅消耗0.5uA电流,确保长时间闲置时电池电量的有效保存。 4. 时间可调节能够通过修改代码中的相关参数,灵活调整电机搅拌时间和LED闪烁时间。 ## 安装使用步骤 ### 安装
# 基于Node.js和IoT的心率监测系统 ## 项目简介 基于Node.js和IoT的心率监测系统是一个低成本的物联网(IoT)应用,旨在全天候监测用户的心率和血氧饱和度。该系统通过心率和血氧传感器定期提醒用户进行测量,并将数据传输到Web应用程序中供用户查看。用户可以配置测量时间和频率,Web应用程序采用响应式设计,支持桌面、平板和移动设备。 ## 项目的主要特性和功能 IoT集成使用低成本的IoT设备与心率和血氧传感器协同工作。 周期性提醒全天候提醒用户在可配置的时间间隔内进行测量。 响应式设计Web应用程序设计为在不同设备上提供一致的用户体验。 数据传输和监控测量数据传输到Web应用程序,供用户监控。 ## 安装使用步骤 ### 1. 复制项目仓库 bash ### 2. 进入项目目录 bash cd 413FinalProject ### 3. 安装依赖 bash
该项目是一个基于LaTeX的个人简历设计源码,集成了Python和Shell脚本功能,共包含54个文件,包括14个OTF字体文件、8个样式文件、8个TeX源文件、6个PDF文档、5个GZ压缩文件、2个JPG图片文件、1个BST模板文件、1个LICENSE授权文件、1个Makefile构建文件、1个Markdown文件。该项目适用于个人简历制作,提供专业的排版和个性化设计。
内容概要:本文详细介绍了利用FLAC 3D进行近断层隧道围岩稳定性的流固耦合分析方法。首先构建了三维网格并设置了摩尔-库仑本构模型和相关材料参数,接着对断层带进行了特殊处理,降低了其力学性能。文中重点讲解了流固耦合的具体设置步骤,包括开启流体模式、设置水的物理属性以及孔隙水压初始化等。此外,还展示了如何通过历史记录和绘图功能监控计算过程中的重要参数变化,并提供了防止数值不稳定的经验建议。最后,作者分享了一个实际案例,强调了流固耦合分析对于提高隧道安全性和优化设计方案的重要性。 适合人群:从事地下工程、岩土工程领域的研究人员和技术人员,尤其是那些需要掌握复杂地质条件下隧道稳定性评估技能的专业人士。 使用场景及目标:适用于研究和解决靠近断层带的隧道工程项目中存在的围岩失稳风险问题,旨在帮助工程师更好地理解和预测隧道在渗流水作用下的行为,从而制定合理的支护措施。 其他说明:文章不仅涵盖了理论知识,还包括大量实用的操作技巧和注意事项,有助于读者将所学应用于实际工作中。同时,文中提供的完整代码片段便于读者动手实践,加深理解。
数字化转型是指企业或个人利用数字技术,如大数据、云计算、人工智能等,对其业务流程、运营模式、决策方式等进行全面、深入的变革,以提高效率、降低成本、提升质量、增强竞争力。在这个过程中,工具变量扮演着至关重要的角色。 本数据包含:原始数据、参考文献、代码do文件、最终结果。 指标 企业代码 企业代码 年份 股票简称 企业数字化转型程度。基于吴非方法构建 工具变量:同行业其他企业数字化转型程度的均值 工具变量:同行业数字化转型程度的均值 工具变量:同行业同年份其他企业数字化转型程度的均值 工具变量:同行业同年份数字化转型程度的均值 工具变量:同地区同行业同年份数字化转型程度的均值 工具变量:同地区同行业同年份其他企业数字化转型程度的均值 行业名称 制造业取两位代码,其他行业用大类
BellSoft Liberica JDK 是一个经过严格测试和验证的 OpenJDK,它完全符合 Java SE 规范,在Linux, Windows, macOS, 和 Solaris 操作系统上运行无误
# 基于Azure和Kubernetes的乐高小人检测系统 ## 项目简介 本项目是一个基于Azure和Kubernetes的乐高小人检测系统。项目结合了Azure机器学习服务进行模型训练和部署,利用Kubernetes进行集群管理和容器编排。通过ESP32CAM或树莓派作为图像采集设备,将采集到的图像发送到模型进行检测,并通过一个简单的网页展示检测结果。 ## 项目的主要特性和功能 1. 基础设施搭建支持Kubernetes集群和Azure环境的搭建,包括资源组、日志分析工作区、Arc连接的Kubernetes等资源的创建。 2. 模型训练使用Azure机器学习服务进行模型训练,支持自动机器学习(AutoML)功能,可同时尝试多种模型和超参数组合,提高模型性能。 3. 图像采集支持使用ESP32CAM或树莓派进行图像采集,并将采集到的图像存储到Kubernetes主节点。 4. 对象检测使用训练好的模型对采集到的图像进行乐高小人检测,并在网页上展示检测结果。
该资源为h5py-3.1.0-cp36-cp36m-macosx_10_9_x86_64.whl,欢迎下载使用哦!
内容概要:本文详细介绍了GitHub从入门到精通的各个方面,涵盖新手指南、核心操作、进阶技巧、实用工具与资源推荐以及常见问题解决方案。新手指南部分讲述了如何注册账号、创建仓库、安装配置客户端及SSH密钥配置;核心操作部分重点讲解了本地仓库初始化、版本提交与推送、文件状态与历史查看;进阶技巧部分探讨了分支管理策略、协作开发流程及冲突解决方法;实用工具与资源推荐部分介绍了GitHub Actions、GitHub Pages、GitHub Copilot等官方工具链,以及多个优秀学习资源库;常见问题解决方案部分则提供了关于权限问题处理和代码回滚方法的具体步骤。 适合人群:适用于初次接触GitHub的新手开发者,以及希望深入了解GitHub高级功能、提高团队协作效率的中高级开发者。 使用场景及目标:①帮助新手快速上手GitHub,掌握创建和管理仓库的基本技能;②教会用户如何进行版本控制、提交代码、查看历史记录等核心操作;③指导开发者进行高效的分支管理和团队协作,解决冲突并优化工作流程;④推荐实用工具和学习资源,提升开发效率和个人技能;⑤解决权限和代码回滚等常见问题,确保项目顺利进行。 阅读建议:本文内容详实,覆盖范围广,建议读者根据自身需求选择性阅读。对于初学者,可以从新手指南开始逐步学习;对于有一定经验的开发者,可以直接跳转到感兴趣的部分,如进阶技巧或实用工具章节。在学习过程中,结合实际操作进行练习,以加深理解和记忆。
内容概要:本文深入探讨了心电信号(ECG)去噪的技术实现,特别是在生物医学信号处理领域的应用。文中介绍了两种主要的去噪方法:低通滤波和小波分解。首先,通过低通滤波器去除高频噪声如肌电干扰和工频干扰,保留低频的心电信号特征。其次,利用小波分解将信号分解到不同频率子带,通过阈值处理去除噪声并重构信号。此外,还展示了如何在Matlab中实现这些方法,并提供了详细的代码示例。为了增强用户体验,作者还开发了一个带有操作界面的工具,支持时域和频域波形的显示,并附有操作视频。 适合人群:从事生物医学工程、信号处理的研究人员和技术人员,尤其是那些对心电信号处理感兴趣的初学者和中级开发者。 使用场景及目标:适用于需要对心电信号进行预处理的研究和应用场景,如医疗设备开发、健康监测系统等。目标是提高心电信号的质量,减少噪声干扰,从而提升后续分析的准确性。 其他说明:文中不仅提供了理论解释,还有具体的代码实现和操作指南,帮助读者更好地理解和应用这些技术。
内容概要:本文详细介绍了圆柱卷绕式锂电池的结构特点及其在Comsol Multiphysics中的建模与仿真方法。文章首先阐述了圆柱卷绕式电池的基本构成,包括正极、负极、隔膜、集流体和极耳的作用。接着,通过具体的Comsol建模步骤,如导入几何模型、定义材料属性、设置边界条件、模拟电流分布等,展示了如何利用Comsol进行电池性能的仿真分析。特别强调了极耳设计对电池性能的重要影响,并通过实例演示了如何优化极耳布局以提高电池效率。此外,文章还探讨了多物理场耦合仿真在电池热管理和电流分布优化中的应用。 适合人群:从事电池研究、仿真分析的技术人员以及对锂电池建模感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解圆柱卷绕式锂电池内部结构和工作原理的研究人员和技术人员。通过仿真分析,能够优化电池设计,提高电池性能,特别是在极耳布局和热管理方面。 其他说明:文中提供了多个Comsol建模的具体代码示例,有助于读者快速上手并进行实际操作。同时,文章还讨论了一些常见的建模难题及解决方案,如薄层网格划分和多物理场耦合等问题。
内容概要:本文列举了多个信息安全领域的实战项目,涵盖网络渗透测试、Web应用安全加固、企业安全策略制定与实施、恶意软件分析、数据泄露应急响应、物联网设备安全检测、区块链安全审计以及云安全防护等八大方面。每个项目均明确了具体的目标和详细的步骤,旨在发现并修复系统中存在的安全隐患,提升系统的安全性和稳定性,确保企业信息资产的安全。; 适合人群:信息安全从业者、网络安全工程师、系统管理员、安全顾问等关注信息安全的专业人士。; 使用场景及目标:适用于需要进行网络安全评估、Web应用防护、企业安全策略规划、恶意软件防范、数据泄露处理、物联网设备保护、区块链系统审计及云安全建设等不同场景,目标是通过一系列具体的项目实施,帮助企业或组织提高信息安全防护水平,降低安全风险。; 阅读建议:由于涉及多个信息安全实战项目,建议读者根据自身需求选择感兴趣的项目深入研读,重点关注各项目的具体实施步骤和技术细节。同时,结合实际工作中的应用场景,将理论知识应用于实践,提升信息安全防护能力。