正文浏览器
本教程的目的是让读者理解:SAP Process Integration(如下简称SAP PI)是什么。咱们不须要探究课题的本质,可是会讨论SAP PI的架构和不一样特色。本文只会覆盖到PI的基本特色,而不是讨论所有。缓存
本文连接:http://www.cnblogs.com/hhelibeb/p/7105070.html服务器
SAP ERP是什么
对于任何业务——不管是大的仍是小的——都会有必需要执行的标准业务功能,好比:物料管理(MM),销售与分销(SD),财务(FI),人力资源(HR)等等。市场上有不少正在为业界所使用的软件。一个简单的例子:若是你前往一个大型零售商店、旅店的下属的小店面,而且它们运行在ERP系统之上的话,收银机器能够经由ERP生成销售发票。网络
对于绝大多数业务实现来讲,企业资源计划(Enterprise Resource Planning,ERP)是一种能够改善生产力和业绩的有效途径。SAP ERP是SAP 公司推出的的企业资源计划,它是一个整合了组织的关键业务功能的集成软件解决方案。基本功能包括:HR,MM,SD,FICO等,在SAP中它们叫作业务模块。SAP把它们构建成产品而且在市场上销售。有两个(或者更多)模块是不直接支持业务功能的,而是用于展示和集成。前者叫作EP(企业门户)后者叫作PI(过程集成)。全部的业务模块都是由ABAP开发的,然而这两个模块却主要由Java开发。这些模块不是可执行文件,而是须要部署在应用服务器上运行。架构
在咱们进入主题以前,须要认识到这些点:app
- SAP表明用于数据处理的一些系统、应用、产品。
- SAP AG是一个德国的跨国软件公司,从事于制造管理业务操做和客户关系的企业软件。SAP ERP是该公司推出的企业资源计划,一个整合了组织的关键业务功能的集成软件解决方案。
- SAP NetWeaver Process Intergration(SAP PI)是SAP的企业应用集成(EAI)软件,是NetWeaver产品组的组件,用于帮助公司内部的软件、系统之间的信息交换,以及与外部的信息交换。
遗留系统
当在一个大型的机构中实施SAP的时候,并非全部部件均可以放在SAP ERP中。其中的不少业务部件有它们本身的专有工具,可能极度复杂、而且没法被替代。它们和SAP系统平行运行。它们叫作“遗留系统”。有必要把这些先前存在的非SAP系统和SAP集成起来,这就是SAP PI出场的地方。框架
为何咱们须要SAP PI
在大型的机构中,除了遗留系统以外,SAP ERP也不是由一个单一系统组成的,而是集成了多个系统,如CRM,SRM和FICO等。为了处理这种复杂性,SAP引入了PI:一个能够为全部系统提供单一集成点的平台。它不须要接触已有的遗留系统的复杂网络。这是一个能够为SAP和非SAP应用之间、企业内部和内部或者内部和外部之间提供平滑的端对端集成的强大的中间件。SAP PI支持B2B和A2A交换,支持同步和异步消息交换,而且包含了用于设计和执行PI的内建引擎。异步
SAP PI架构
SAP PI有着轮辐式结构,由中心和辐条组成;辐条链接外部系统,中心会在它们之间交换消息。源系统成为发送者系统,目标系统成为接收者系统。PI不是一个单独的组件,而是不少个能够根据集成场景灵活地一块儿工做的组件的集合。该架构包含了在设计期间使用的组件、在配置期间使用的组件和在运行期间使用的组件。
咱们能够把PI划分为多个领域:
- 集成服务器(Integration Server)
- 集成构建器(Integration Builder)
- 系统规划(System Landscape)
- 配置和监控(Configuration and Monitoring)
集成服务器是SAP PI的中心处理引擎。全部消息都在这里以一致的方式处理。它包含三个独立引擎:
- 集成引擎(Integration Engine)
- 适配器引擎(Adapter Engine)
- 业务处理引擎(Business Process Engine)
集成引擎能够被看作是中心,而适配器引擎则是轮辐。
关于业务处理引擎,本文会晚些解释。
集成构建器是一个用于访问和编辑集成对象的C/S框架,它包含两个相关的工具:
- 企业服务库(Enterprise Service Repository ,ESR)——用于设计和开发在不一样场景下使用的对象。
- 集成目录(Integration Directory,ID)——用于配置开发场景的ESR组件。
两者放在一块儿,就是一般被成为场景的集成过程。
系统规划是数据中心的一个有关软件和系统的信息的中心库,简化了系统规划的管理。
在配置和监控中,能够监控消息和适配器。
单栈与双栈
在PI初次发布的时候,不是全部的组件都是在同一个平台上构建的。集成引擎和业务处理引擎由ABAP构建,然而适配器引擎、集成构建器、SL、CM和Mapping Runtime由Java构建。所以PI须要Java和ABAP环境来运行,这被称为双栈。
ABAP Stack | Java Stack |
|
|
可是在晚些的版本中,全部组件都是由Java构建的。某些双栈组件已经废除,或者在被修改后运行在Java栈。所以PI只须要Java环境来运行。这就是单栈。
(单双栈各有利弊,可是本文不会涉及到相关内容)
集成引擎
集成引擎负责中央集成服务器服务,例如管线步骤:路由和映射。若是源消息结构和目标的消息结构不一样,集成引擎调用Mapping Runtime,源结构会被转换成目标结构。Mapping Runtime基于Java栈。集成引擎也能够利用ABAP程序来转换,这个基于ABAP栈。
消息能够是两种类型:
- 同步的——有请求和响应两部分。
- 异步的——只有请求或者响应两者之一。
在PI中,消息由接口表示。
接口:XML格式的消息结构和说明。
基于上面的限制,会有三种接口类型:
- 外向接口——链接发送系统。
- 内向接口——链接接收系统
- 抽象接口——链接BPE。
在PI中为每个业务需求配置集成逻辑(场景)的时候,集成引擎会以按部就班的方式执行配置。术语“管线”指的是在处理XML消息的时候执行的全部步骤。管线步骤包含:
- 接收者识别——决定参加消息交换的系统。
- 接口识别——判断应该使用何种接口接受消息。
- 消息分割——若是找到了不止一个接收者,PI会为每个接收者实例化新的消息。
- 消息映射——把源消息映射为目标消息的格式。
- 技术路由——为消息绑定特定的目标和协议。
- 调用适配器——发送转换过的消息给适配器或者代理。
适配器引擎
你必定已经发现,集成引擎只使用XML-SOAP协议处理消息。可是若是咱们有一对发送和接收系统,它们的数据格式是不一样的呢?这时咱们使用适配器引擎中的不一样的适配器来将XML和基于HTTP的消息转换为这些系统须要的指定的协议和格式,或者相反。
如本文早先讨论的那样,SAP PI是轮辐式结构的,其中适配器引擎能够被看做轮辐。咱们使用适配器引擎来链接集成引擎(中心)和外部系统。适配器框架基于适配器引擎,适配器框架是基于SAP J2EE Connector Archtiecture(JCA)的。适配器框架提供了用于配置、管理和监控适配器的接口。
在双栈系统中,大多数适配器基于Java栈,只有两个基于ABAP栈:
Java Stack |
RFC adapter, SAP Business Connector adapter, file/FTP adapter, JDBC adapter, JMS adapter, SOAP adapter, Marketplace Adapter, Mail adapter, RNIF adapter, CIDX adapter |
ABAP stack |
IDOC adapter and HTTP adapter |
在SAP PI从双栈变为单栈的时候,这两个适配器成为了Java栈的一部分。修改后的适配器引擎成为高级适配器引擎,两个适配器分别叫作IDOC_AAE和HTTP_AAE。
业务处理引擎
业务处理引擎(Business Process Engine)的职责是执行和持久化集成过程。
BPM表明跨组件业务处理管理(Business Process Management )或者ccBPM,也叫作集成过程。集成过程是指可运行的、跨系统的消息处理。在集成过程当中,你能够定义全部须要运行的的处理步骤和相关的过程控制参数。业务处理管理提供了SAP Exchange Infrastructure,包含如下功能:
- 全状态消息处理:集成过程的状态能够在集成服务器上持久化。
- 可使用相关性创建消息间的语义关系。
- 当你想要定义、控制、监控复杂的集成过程的时候,好比扩展到企业和应用程序边界,即收集/合并、拆分、多播的时候,须要实现集成过程。
在运行期间,BPE执行集成过程。集成过程能够只经过抽象接口发送和接收消息。
在SAP PI中创建场景
若是须要在PI中创建场景(scenario),要从主页开始。
主页界面以下:
主页有如下四个工做区的超连接:
- 企业服务库(ESR)
- 集成目录(ID)
- 系统规划(SL)
- 配置和监控(CM)
每一个超连接均可以打开对应的应用。这四个都是Java应用。ESR和ID是swing应用。它们基于JNLP,须要从浏览器启动,因此第一次会花较多的时间来下载整个库文件。可是从第二次开始,加载时间就会变短了。SL和CM是纯web应用,运行在浏览器上。
企业服务库
使用企业服务库设计和建立用于制做场景的对象。PI中的数据流是这样的:
找到如下设计的选项:
- 接口对象——服务接口,消息类型,数据类型。
- 映射对象——操做映射和消息映射。
- 集成过程。
PI使用集成库来为发送者和接收者设计消息结构,而且经过相应的消息结构开发接口消息,接口消息是与外部世界互动的一个点。数据类型和消息类型能够用来对复杂接口进行简化和模块化设计。
操做映射容许源结构和目标结构之间的转换。可是若是源结构和目标结构是相同的,那该过程可能会免于执行。和服务接口相似,消息映射用于简化和木块话复杂的操做映射。消息映射能够经过四种方式进行:
- 图形化映射。
- Java映射
- XSLT映射
- ABAP映射
图形化映射是最经常使用的手段,由于它容许开发者图形化地映射结构的属性,以经过服务接口传递数据。对于其它三个,须要经过写代码来开发映射。若是是若是是单栈服务器,ABAP映射是不可用的。
(还有些其它方面,本文没有涉及)
集成目录
这里咱们经过早先配置的ESR对象来制做管线步骤。这些步骤在运行期间经过集成引擎执行。
在咱们开始配置以前,咱们须要在DIR建立/导入如下的对象:
- 服务——业务系统/业务服务/集成过程
- 通讯通道
服务容许你处理消息的发送者或者接收者。根据你使用这些服务的目的,你能够选择如下的服务类型:
- 业务系统——若是你想要将指定的业务系统做为消息的发送者或者接收者处理,选择该消息类型。在系统规划中,业务系统是真实的应用系统。
- 业务服务——若是你想要将抽象业务实体做为消息的发送者或者接收者处理,选择这个服务类型。业务服务不会再系统规划中定义。
- 集成过程服务——若是你想要将集成过程做为消息的发送者或者接收者处理,选择这个服务类型。在运行期间,这些集成过程由消息控制,他们本身也能够发送消息。
通讯通道决定了消息的内向和外向处理。消息会经过适配器从原生格式被转换为soap-xml指定的消息格式,或者相反。一般一个场景中会有两个通讯通道:
- 发送者信道。
- 接收者信道。
必须为服务分配一个信道。根据服务被视为消息的发送者或接收者,信道也会有一个发送者/接收者角色,两者必须匹配。不能够把信道分配给集成过程服务。
管线步骤DIR中的经过如下四步配置:
- 发送者协议
- 接收者断定
- 接口断定
- 接收者协议
发送者协议定义了发送者的消息如何转换,所以它能够由集成系统处理。它包含:
- 发送者组件
- 发送者接口
- 发送者信道
发送者协议相似于表中的主键。同一个规划中不能够有两个相同的发送者协议。
接收者协议则定义了消息如何被转换为接收者能够处理的形式。它包含:
- 发送者组件
- 接收者组件
- 接收者接口
- 接收者信道
使用接收者断定来指定消息发送的对象。能够经过定义条件以转发消息,它包括:
- 发送者组件
- 发送者接口
- 接收者组件
接收者断定包含2个类型——标准的和扩展的。使用哪一个取决于你想要手工指定接收者、仍是在在运行期间经过映射动态地指定。
接收者断定和接口断定——加在一块儿一般称为逻辑路由。发送者协议和接收者协议——这两个加在一块儿一般成为合做协议。
系统规划
SAP System Landscape Directory(SLD)是系统规划中的核心信息的提供者。在web页面上你能够发现如下链接:
- 技术系统——技术系统是在你的系统规划中安装的应用系统。
- 业务系统——业务系统是逻辑系统,在PI内做为发送者/接收者存在。业务系统与相关的技术性同有着一对一的依赖关系。
- 产品和组件——这是有关全部SAP产品和组件的信息,包含他们的版本。若是系统规划内有任何第三方产品,它们也会注册在这里。
SLD的界面以下图所示:
产品和组件均可以叫作组件信息。
技术系统和业务系统都叫作规划描述(Landscape Description)。
一个业务系统能够配置为集成服务器或者应用系统。
- 集成服务器(Integration server)——集成服务器只运行在集成构建器中配置的集成逻辑。它们也能够被识别为管线步骤。它接受XML信息、判断接收者、运行映射、路由XML信息到相应的接收者系统。所以配置过的集成引擎被识别为中央配置集成引擎。
- 应用系统(Application system)——应用系统不会执行集成逻辑。它一次调用集成服务器以运行集成逻辑。它会扮演XML消息的发送者或接收者的角色。所以,带有本地集成引擎的应用系统须要集成服务器来执行集成逻辑。
只有一个SAP系统中的客户端能够配置为集成服务器。
如下信息从SLD提取到ESR和DIR中:
- ESR中用到的用于定义产品的组件信息和SWCV。
-
在目录中用于定义消息发送者和消息接收者的业务系统。
配置和监控
配置和监控是监测的中心入口。它给予了你导航到集成引擎的功能,也能够与计算中心管理系统(Computing Center Management System,CCMS)、SAP的进程监控设施(Process Monitoring Infrastructure,PMI )集成。
配置和监控的界面以下图:
配置和监控支持如下监控功能:
- 组件监控——监控不一样的SAP PI组件,包括Java和ABAP部分。
- 消息监控——跟踪SAP PI组件中的消息处理状态,以及错误侦测和分析。
- 端对端监控——从PI的视角监控消息的生命周期。
- 性能监控——能够经过RWW统计SAP PI的不一样方面的性能。这里,你能够选择并聚合性能数据,好比,根据组件、时间序列、消息属性等。
- 索引管理——经过管理和监控每一个PI组件的消息的索引,能够在消息监视中启用基于索引的消息搜索。这种消息搜索提供了加强的选择标准,包含指定适配器的消息属性和消息载荷中的术语或短语。
- 警报配置——经过使用警报框架,PI中的中心监控能够在消息处理期间得到全部的错误报告。它能够帮助改进ABAP运行期间和基于Java的适配器引擎来改进对错误的处理。为此,警报框架包含了基于肯定时间的规则,相关内容处于PI消息协议的头部。这些规则决定了警报是否发送。若是发送了警报,警报能够用于错误分析。
- 警报信箱——警报信箱是用户特定的、显示各个警报服务器中根据警报配置而产生的全部警报。
- 缓存监控器——缓存监控器显示当前运行时缓存中的缓存对象。不一样的缓存对象的监控是依据缓存实例进行的。
同步 vs. 异步
处理能够定义为同步或者异步。
- 同步处理经过请求/响应操做调用,处理的结果马上经过操做返回给调用者。
- 异步处理经过单方向的操做调用,结果和错误会经过另外一个单向的操做调用。结果经过回调操做返回。
计算机的世界里没有异步通讯,全部的两个系统之间的通讯老是经过方法调用进行(请求/响应操做)。因此如何使其异步呢?答案是,在调用者和被调用者之间引入一个第三方的系统。
假设存在两个系统——A和B。A与B之间全部的通讯经过一个方法调用来进行,所以他们是同步的。咱们在AB间引入一个第三方系统,称其为中间系统I。A和I之间的通讯经过方法调用,I和B之间的通讯也是经过方法调用进行。可是A和B之间的调用能够是异步的,由于A不须要等待来自B的响应。
这是异步通讯的基本原理,那么什么是中间系统呢?答案是队列。A被称为调用者,B被称为接收者。来自于A的消息首先添加到队列中,接着它再次被从队列中拉出,而且发送给B。B的响应经过相同的方式返回给A。在某些状况下,业务需求要求消息按照以A触发的时顺序发送给B,这种状况下能够依据先进先出策略。若是没有这样的需求,则消息会以随机顺序从队列发送至B。
所以能够把消息通讯分为三类:
- 同步的
- 异步且无序的
- 异步且有序的
在PI中,咱们定义它们为:同步——BE(Best Effort),异步且无序的——EO(Exactly Once),异步且有序的(Exactly Once in Order)。
确认
确认是异步通讯的基础,为何?
对于同步通讯,系统A调用系统B时,若是B发送响应失败,处理会失败。可是在异步通讯中,系统A调用系统I而且系统I会调用系统B。因此假设A与I之间的通讯成功,然而I和B之间的通讯失败。A该怎样得知发送到B的过程失败了呢?它经过确认来实现,该确认经过消息从A到B相同的路由方式,反向发送给A。若是从B到A的确认没有成功抵达A,那么A会认为处理失败,而且再次发送消息。
当咱们讨论PI中的异步的时候,咱们会使用术语 ‘Exactly Once’ 来表示EO和EOIO。Exactly Onc的意思是一旦发送的消息不能再次发送。为了实现这一特性,每个从A发往B的消息都会有一个确认。通讯的终端是适配器,所以适配器必须支持确认。
全部适配器都提供系统确认(system-acknowledgment),好比发送确认。支持同步通讯的适配器除了支持系统确认之外还支持应用确认。
因此在PI中存在着如下类型的确认:
- 系统确认——系统确认在运行期间使用,以确认异步消息已抵达接收者。
- 应用确认——应用确认用以确保异步消息成功地被接收者处理。
Remote Function Call
在进行PI工做时,你会接触到名词——RFC。这是什么?为了创建两个SAP系统之间的链接,好比R/3和PI,咱们建立了RFC目标。RFC目标须要配置如下内容:
- 链接类型
- 接收者的IP地址和端口
链接类型描述了系统链接的类型,好比R/3,TCP/IP,内部链接等等..
建立的RFC目标能够根据通讯类型分类。按照异步或者同步通讯能够分为:
- 同步通讯——同步RFC
- 异步通讯且无顺序——Transactional RFC(tRFC)
- 异步通讯且有顺序——Queued RFC(qRFC)
(译者注:此外还有bgRFC)
原文标题:SAP PI for Beginners