ESA (Enterprise Service Architecture)
简单的说, ESA是SAP 基于SOA(Service Oriented Architecture)的概念。主要目的通过WebService, 进一步提高SAP各业务系统间的统一性, 可重用性,建议更方便的业务流程开发模式。主要手段为
建立以Service为中心的开发模式. 因为service相对于组建或者其他软件封装技术来说, 有耦合度低,跨Internet, 范围更广, 跨平台, 粒度更自由等优点。
在web service的基础上, 建立统一的service infrastructure(就是后面说到的ESI).
建立所谓“模式-驱动”的开发模式。 其实, 我的理解是,在强大的Service Infrastructure基础上, 有统一的数据类型来描述数据,有Business Object来封装逻辑, 有UI pattern来封装UI, 有了这些,就可以用一个简单的设计工具, 就可以快速的描述数据, 拼装业务逻辑,建立UI, 这就是使所谓的“模式-驱动”的开发模式,成为现实。这里指的开发, 不是简单应用的开发,而是业务流程的开发。这各设计工具, 就是Visual Composure.
先介绍几个概念:
Service:
Service就是SOA中的service概念. 它提供了企业的某个业务功能.s
ESA中有三种Service:
Core Service: 提供对Business Object的直接访问, 如retrieve, access, action…
Compound Service: 由对多个core service的call组成.
Enterprise Service: 也是一种compound service, 但是它是组成Business Process的直接service. 它提供企业的关键业务功能.
Business Object:
BO可以看作是Service的实现. Service的定义和其实现无关. SAP在ESA中主要用BO实现 Service的功能.
BO是结构化的. 每个BO之间由Association连接.但是只有一个root node.
一个BO可以有多个service interface, 一个service interface由多个operation组成
BO定义了一组Attribute和Operation. 每个BO都由一个Business Object provider class 实现, 它实现了一组Generic Interface.
BO的attirbute的type必须是Global Data Types(GDT)
Global Data Type
要统一service interface的定义, 就必须统一数据类型.
Business Process:
LDU(Logical Deployment Unit)
一个LDU由一组语义相关的componenet组成, 为了可以简单的activate/deactive一个业务功能.s
Process Agent:
提供Message-Based的LDU之间的通信.
下图是ESA实现:
ESI(Enterprise Service Infrastructure) 为ESA的实现提供了基于Web Service的统一的Service定义。使“模式驱动”的开发成为可能。这种设计由需求开始, 定义服务, 服务驱动实现.
下图显示了ESA的开发模式:
ESI由三部分组成:
ESD: Enterprise Service Designtime: 提供ESI的设计时的支持。包括三个项目:
ESR(Enterprise Service Repository), 包括ES Object, Modelling, ESR Framework
ES Java Tools, 包括Repository Browser, Service and Consumer Definition Editor, Service Configuration and Consumer configuration Editor, Proxy Generation.
ES ABAP Tools: 包括Repository Browser, Service and Consumer Definition Editor, Proxy Generation
ESF: Enterprise Service Framework, 提供了ESI的运行实现。(应该叫做Enterprise Server Engine)
ESF Runtime Architecture,如图:
ESP: Enterprise Service Protocol: 定义所有ESI的协议