精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | |||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2006-12-23
Min Luo (minl@us.ibm.com) , 高级认证 IT 架构师, IBM Global Services 2005 年 3 月 <abstract-extended>从最近多个百万美元的项目(包括服务、硬件、软件和托管)的实施框架中发现创新的解决方案框架,将其用于能够创建更有效基础架构的最大的电子零售链之一。该框架有助于线形存储销售并支持办公操作,具备中央办公功能,劳动力管理、订单管理和库存管理。项目开发组及本文作者采用了以模型为中心的解决方案来分析并设计用于集成包解决方案组件和遗留系统中的面向服务的集成层。此外,他们设计并开发了轻量级的企业服务总线(Enterprise Service Bus,ESB)来实现基于服务的集成。解决方案提供者使用此套标准服务规范通过 ESB 提供或使用这种服务。提出的这个解决方案框架提供了以零售业为中心、技术和平台独立的、基于服务的整合层(最终是一个以零售为中心的 ESB 实现),其他零售商可以无需费力地将其采用。本文(该系列文章中的第一部分)重在创建用于集成的以零售为中心的服务模型创新解决方案。</abstract-extended> 引言 在九十年代末,替代的系统被开发出来,它试着利用商业现货供应(commercial-off-the-shelf,COTS)POS 产品,但是它只能代替原始系统的一部分功能。对于替代系统被安装的位置的存储,老式的系统仍旧需要许多内部存储的共有功能。这导致了过量开销的影响和风险,因为它需要客户端来维护两个系统。广泛的定制和以存储为中心的特性使它非常昂贵,并且客户端不能承受研究出详细的解决方案所需的时间。 在本文中,我们提出了新的系统,最初设想它不仅能克服以前系统中的许多问题,而且能够引入新的细存储操作的概念,它仅提供了存储中需要的最少的系统功能,并且在托管和数据中心环境下集中了许多其他功能。我们采用了一个创新的解决方案来分析并设计基于服务的集成层,利用业务流程建模和执行中最新的技术,面向服务的体系结构(Service-Oriented Architecture,SOA)和 Web 服务,并且有效地使用建模及设计开发工具。这个最终的系统被称作 Store of Tomorrow (SoT). 确定关键业务的目标
细存储概念
下两图描述了基本的 IT 基础架构以及传统存储与细存储之间操作上的差异: 约束
面向服务的体系结构的更新及集成 SOA 是一种体系结构样式,它努力实现交互的软件组件之间的松耦合。通过使用 SOA,服务集通过简单传递的数据或调整业务活动(包括两个或更多的服务)来彼此传递信息。它通过一套简单通用的接口(在接口上仅编码通用的语义)实现了交互软件组件之间的松耦合。所有提供者和客户都应当能够使用该接口。此外,SOA 采用了描述的消息,该消息受可扩展的通过接口传递的 schema 的限制。这样的 schema 限制了消息的词汇和结构,并且允许在不破坏现有服务的条件下引入服务的新版本。即便要也是非常少的,系统行为通过描述的消息来指定。以这种方式,您可以有效地建立一套服务,它有明确定义的接口,并且能够在多重业务上下文中潜在地被复用。使用 SOA,应用程序是松耦合的,并且可以在服务/接口(协议)级被集成,而不是在实现级,如同过去的实践一样。这使得在 IT 满足任何业务需求的变更时更加灵活、机动、可扩展。 SOA 不是新概念;Common Object Request Broker Architecture(CORBA)和 Distributed Component Object Model(DCOM)早就提供了类似的功能。然而,这些对于服务定位的解决方案受一些问题的困扰,如紧耦合场景和所有权设计及实现。 服务与组件 软件组件体系结构已经作为应用程序开发的许多领域中的标准设计范例而形成了。它从面向对象的技术发展而来,通过提供高级别的提取并将低级别的对象封装进可复用的技术组件(调整以适合于业务操作并可以被反复设计、开发和提炼)中而实现。 为了解释组件和服务之间的关系,通过阅读组件如何被定义成“可执行的代码单元,它提供了相关服务的物理黑盒封装。仅通过包含交互标准的一致的、发布的接口才能访问它的服务。组件必须能连接到其它组件上(通过通信接口) 来组成大组”(企业系统中基于组件的开发:应用选择透视图——请见参考资料)可以得到启发。 企业 JavaBean 是构建基于 Java 的桌面应用程序的组件标准。COM 是通用的 Microsoft® 组件模型,它是应用程序互用性的核心。在 1999 年 7 月,Object Management Group 通过了 CORBA 组件模型(CCM)规范,它扩展了用于电子商务部门的应用程序的企业 JavaBean。在所有情况下,组件体系结构的目标是简化应用程序设计流程并提高应用程序开发的速度。 业务建模 挑战是以精确且对用户友好的方式来将业务流程和业务系统建模。业务系统的描述包括流程描述和静态结构。流程的最直接的模型是为了达到某一目的而执行的活动或任务的序列。如同普遍接受的符号标准一样,统一建模语言(Unified Modeling Language,UML)及其可能的扩展对于描述软件系统来说是足够丰富的。UML 也可被用于抽象层,这里不涉及实现细节。一些 UML 图表从直观上看(例如,活动图、时序图或协作图)与域专家使用的那些非常类似。而且,他们的语义是精确定义的。为了软件设计,如果必要的话,同一图表可以配有实现细节。例如,UML 时序图和 UML 活动图是对用户友好而且精确的业务流程规范。 在我们的以模型为中心的解决方案中,使用标准流程建模软件(例如 Microsoft Visio)创建的业务流程被转换成 IBM® Websphere® Business Integration Modeler(Business Integration Modeler),并且使用 IBM Rational® Rose 中的 UML 时序图来将内部组件的交互建模并分析。 连同我们的以业务为中心的服务模型一起,一套适合业务的服务被结合进来(包含并编排)以实现业务目标。IT 系统提供了这些服务的接口并将它们结合进应用程序中以支持快速变更的业务需求。将服务显示成一套接口,该接口完全不依赖于它们的实现或位置。有时(不必经常)需要在业务用例级创建这些服务。在这个级别上,我们处理业务希望在业务流程中发布、触发或支持的原始活动。 采用 IBM 的组件业务建模(Component Business Modeling,CBM)和面向服务的模型和体系结构(Service-Oriented Modeling and Architecture,SOMA)(请见参考资料),我们采用从上到下的解决方案来从基础零售组件模型中确定一套以零售为中心的业务服务。我们创新的解决方案及适当地使用 Business Integration Modeler and Rational Rose 使我们能够发现适合业务的服务、它们的从属和支持的大规模的业务应用程序组件。同时,我们也采用从下往上的解决方案来确定 COTS 或现有的遗留应用程序最好提供哪个服务,并且最终将确定的业务服务映射到选定的 COTS 零售应用程序组件或遗留系统中。 组件业务建模(CBM) 在 CBM 中,业务组件是企业的部分逻辑视图,该企业是由资源、人、IT 知识资本和需要传递一些业务值的性能测试支持的。组件具有不连续的边界,由它提供的业务服务和它使用的业务服务来定义。类似于基于组件的开发方法中使用的软件组件概念,CBM 业务组件是黑盒:它的服务用户无需知道组件如何知道它是怎样实现的。这使得业务应用程序组件可以很好地更新或还原。此外,业务组件映射被用于组织列表视图中的业务组件,表的纵行代表业务资格(诸如商品、产品、开发或营销),表的横行代表责任级别,它表现了决策和业务活动的范围和意图。 目前,CBM 组件为一些已经开发的关键行业映射,一些已经被确定并组织成候选服务。对于零售业,创建初步的组件映射(表 1),没有很多细节或服务鉴定。本文的一个目的是使用更加具体的规范来扩展 CBM Retail Component Model,用于组件和它们的服务。此外,实行以模型为中心的解决方案利用 UML 和 Rational Rose 的功能来获取业务需求和业务流程及用例,并逐渐将它们转换成业务组件和服务。当然,本文我们更强调集成。 下表展示了 CBM 零售映射的当前版本:
什么是服务模型?
服务模型被用于统一标准化的工作并提供系统的标准方法来描述服务及它们之间的关系。Thomas Erl 最初指定并提倡 XML & Web Services Integration Framework(XWIF),其中阐述了服务的主要概念,尤其业务服务、流程服务和许多其它公共有效的服务类型(面向服务的体系结构——集成 XML 和 Web 服务的领域指导——请见参考资料)。Ali Arsanjani 也讨论了被引入到 SOMA 中的分层的 SOA 模型,不仅是服务而且将它们关联的属性及关系形式化(请见参考资料)。我们依照解决方案并将它们扩展到某种水平,即将所有服务都建模并利用它们。 基于服务的集成 设计以零售为中心的,基于服务的集成层 这些步骤表明我们如何从 Business Integration Modeler 中的 CBM 逻辑业务组件中获取候选服务,我们如何在 Rational Rose 中创建服务模型,以及我们如何使用 Business Integration Modeler 来发布业务流程文件,最终我们将这些文件引入到 WebSphere Studio Application Developer——集成版(Application Developer)中来生成 Web 服务描述语言(Web Services Description Language,WSDL)中的服务规范。我们连续地展示了这些步骤,即使现实中它们是试探性的,并且实际上是这样反复的。 1)领域分解 如前面所描述的一样,我们使用 CBM 零售业映射作为创建逻辑组件模型的起点,因为它提供了该套业务组件(遍及零售业的各领域)的第一个入口。基于业务流程及支持的用例,我们确定了与 SoT 相关的功能范围,如表 2 所述。这样的领域可以作为技术子系统实现的候选。 表 2 展示了与 SoT 相关的确定的 CBM 领域。
业务流程建模 流程分解 图 3 展示了流程、子流程及任务的等级关系: 图 4 展示了购买项目的业务流程模型: 服务确定 为了最终得出服务规范(在 WSDL 中适用的),将这种内部组件的交互建模得更好的方式是有效地使用 Business Integration Modeler。在回顾了产品特征之后,我们发现实现该功能的一种创新的方法:我们可以使用组织单元结构来表示组件,并且我们可以使用这种组织单元的出入流作为天然的服务候选。以这种方式,将任务分配给特定的组织单元依照它的核心业务功能,并且任何通过组织单元传递的信息都代表内部组件的交互并且可以作为候选服务。 图 5 通过组织单元以泳道视图展示了购买项目的业务流程模型。 从泳道视图中可以明显看出下列是可以被发布的用于购买项目业务流程的两个候选服务:
为了确定数据服务,我们进一步分析了核心 POS 解决方案和已支持的或即将被支持的遗留系统之间的数据流。此外,设计数据服务使它们能够被访问以满足应用程序的大多数(或所有的)数据需求。这里有 SoT 解决方案所需的三种类型的数据服务:
我们也提取了通用的安全及工具服务来帮助内部组件的交互。 然后,我们列出了在这一步中确定的服务并将它们映射到文档中。图 6 展示了购买项目的候选服务清单。 3)业务流程实现 4)服务分配及组件规范 在这个过程中,我们进一步提炼并重构了候选服务,按照它们与逻辑业务组件的调整。最终,我们确定了业务应用程序服务的有限集,并将它们映射到提供这些服务的实现和管理的业务组件中。随后,我们扩展了逻辑组件的规范使其包含分配的服务。 在这一阶段,我们开发了实际平台、产品和具备独立供应商的以零售为中心的由逻辑 CBM 功能组件(可以被看作 CBM 零售组件模型的扩展)分类的服务的清单。 5)构造企业组件 此外,我们将应用程序集成模式(流程集成及协作)应用到构建集成组件中。我们采用了企业服务总线(Enterprise Service Bus,ESB)模式来为所有应用程序提供统一的集成层。图 8 描述了高级集成系统的视图。 6)确定及构建技术子系统 在这一步中,我们采用从下至上的解决方案来分析如何构建 COTS 产品、新的应用程序组件和客户端遗留系统,来帮助逻辑组件和服务的设计向物理实现的转变。为了简化,我们使用现有的 COTS 应用程序组件作为供应商封装的解决方案和从新的应用程序中创建的新技术子系统。图 9 展示了我们确定的技术子系统。 7)将功能组件映射到技术子系统中 为了扩展 CBM,我们创建了下面的映射电子表格来说明 CBM 逻辑零售组件如何能被映射到确定的技术子系统中。 图 11. 将 CBM 逻辑零售组件映射到确定的技术子系统中 8)创建服务模型
下面的部分简要地描述了如何将我们的创新的服务模型建模并归档。 服务组合:服务清单 a)服务映射(组合) b)服务层次 c)服务发布决策
d)服务流 e)服务组成 您可以使用 Application Developer 来执行服务编排(关注该系列文章的第二部分,将讨论如何使用 Business Integration Modeler 和支持的开发工具来创建基于服务的集成层)。 f)服务相关性
g)其它服务属性 9)服务规范及实现
我们也需要确定如何使用遗留和现有的企业功能,通过询问诸如“我们要不要在遗留功能上放置包装器?”或“我们需要为企业服务更改发布的接口吗?”之类的问题。在回答完这样的问题之后,就能做出服务实现决策并在服务模型中归档。 10)向 Application Developer 输出服务模型 结束语 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||||||||||||||||||
浏览 3125 次