sap ibm流程文档
IBM Business Process Manager(IBM BPM)是一个全面的Business Process Management平台,为建模,设计,执行,监视和优化提供工具和运行时,同时提供强大的集成功能以扩展现有企业系统的流程功能。 SAP是市场上最大的企业业务软件之一。 IBM Business Process Manager通过提供强大的工具来调用BPM流程中的SAP Enterprise Services,可以简化对SAP流程的访问。 IBM BPM无需借助复杂的编码即可抽象出SAP的技术接口细节。
本文演示了一个简单的场景,其中IBM BPM使用SAP Enterprise Services访问SAP中客户的主数据,作为订单输入验证过程的一部分。 通过几个步骤,您可以与SAP建立无缝且安全的集成,以构建灵活且可重复使用的流程。
先决条件
- 软件版本:
- SAP ECC 6.0或更高版本以及SAP NetWeaver 7.0或更高版本
- IBM BPM 7.5 Advanced或更高版本
- 本文假定您熟悉IBM BPM(高级版)工具,并且具有使用IBM Process Designer和IBM Integration Designer工具创建和运行基本业务流程的足够技能。
- 如果您熟悉SAP ECC系统的基本功能,将对您有所帮助。
SAP企业服务
SAP Enterprise Services是基于标准的Web服务定义,基于SAP业务对象和流程。 它们支持同步和异步传输样式,可用于实现事务或批处理集成模式。
SAP Enterprise Services Wiki提供了SAP提供的可用Enterprise Services的中央存储库。 应该评估可用的企业服务,以了解它们如何很好地满足您的特定要求。 但是,请注意,现成提供的企业服务目录并不全面,可能会限制您使用这些服务的选择。 如果企业服务不可用,则可以在SAP中将自定义流程作为Web服务构建和公开。
用于访问SAP流程的IBM BPM Framework
使用IBM BPM的强大工具,您可以通过不同的方式访问SAP流程:
- 基于从SAP Solution Manager(IBM BPM V8.x及更高版本)导入的模型来编排和自动化SAP事务的指导工作流
- 使用WebSphere JCA适配器的BPM集成服务,该适配器使用专有技术(例如BAPI,远程功能调用(RFC),应用程序链接启用(ALE)和高级事件处理(AEP))与SAP集成
- 使用基于简单对象访问协议(SOAP)和Web服务框架的SAP Enterprise Services构建的BPM集成服务
为了使IBM BPM能够使用SAP Enterprise Services,可以将从SAP生成的Web服务定义语言(WSDL)文件手动导入IBM Integration Designer工具中,以自动生成服务组件体系结构(SCA)组件,例如接口和业务对象。 另外,可以通过WebSphere Services Registry and Repository(WSRR)管理SAP WSDL,以更好地管理,自动化和管理Web服务(这是推荐的方法)。 在本文中,我们将直接将WSDL导入Integration Designer以进行演示。
用例场景
为了演示从BPM调用SAP Enterprise Services,我们将使用一个简单的用例,在该过程中,作为客户预批准流程的一部分,从SAP客户主记录中进行客户查找以检索客户详细信息。 所检索的数据可以在该过程中使用,例如,将客户标识为提供激励的首选客户。
为了实现此用例,我们将使用BPMN流程在Process Designer中定义“客户预先批准”流程,使用IBM Integration Designer中实现的Web服务(HTTP上的SOAP)使用集成服务来查找SAP客户主数据,以及SAP ECC中公开的企业服务以检索客户详细信息(请参见图1)。
图1.客户预先批准过程

准备SAP环境
许多标准SAP事务公开为Web服务。 SAP ES Wiki提供了SAP安装中公开的服务列表。 在本文中,我们将使用在SAP的ABAP后端中实现的公开企业服务。
通过以下简单步骤,SAP可以通过Web服务界面接受请求:
- 在SAP Internet连接框架(SICF)页面中激活预构建的企业服务。
- 使用SAP SOAMANAGER工具为激活的企业服务创建绑定。
- 导出生成的WSDL文件。
激活企业服务
首先,找到要为其构建集成服务的SAP企业服务:
- 转到SAP Enterprise Services Wiki,并在“搜索”字段中输入“读取客户基本数据”,以搜索与客户主机相关的企业服务。
- 从搜索结果中,找到“读取客户基本数据_V2”服务,然后单击以打开它。 在这里,您可以在“ 技术数据”下查看此开箱即用服务的详细信息。 它显示了与此服务有关的相关详细信息,例如它支持的SAP版本,方向(入站或出站),模式(同步或异步)以及该服务的WSDL。 记下此服务(ECC_CUSTBASICDATABYIDQR_V2)的“相关Web服务定义”值。 您将使用此定义名称在SICF事务代码下查找。
- 单击WSDL链接以下载它。 您将将此WSDL上传到Integration Designer中以构建Web服务调用。
接下来,激活您在SAP系统中标识的Web服务。 请注意,激活企业服务是特定于客户端的。 您必须在所连接的每个SAP客户端中激活服务。
- 使用有效的凭证登录到SAP系统并调用SICF事务。 此事务是SAP Internet连接框架(ICF)的一部分。 在维护服务屏幕中,输入
SERVICE
作为虚拟主机的层次结构类型和DEFAULT_HOST
的条件,如图2所示。单击Execute 。图2. SICF中的维护服务查询屏幕
- 在“ 维护服务结果”屏幕中的“ 虚拟主机/服务”部分下,展开default_host节点,然后一直到default_host> sap> bc> srt> xip> sap子节点 。 srt代表soap运行时,xip是XI接口,sap是命名空间。
- 此处列出了此版本的SAP中可用的所有企业服务。 向下滚动并找到名称为ECC_CUSTBASICDATABYIDQR_V2的服务。 回想一下,这是您先前记下的企业服务定义名称( 提示 :使用“ 查找”按钮搜索定义名称)。 该服务尚未激活,因此显示为灰色。 右键单击此服务, 然后从上下文菜单中选择“ 激活服务 ”,如图3所示。在弹出的对话框中单击“ 是 ”,并询问“您是否要激活服务…”。 现在,该服务可以使用了。
图3.在SICF中激活企业服务
创建绑定
下一步是为此Web服务创建绑定,以便可以从BPM流中调用它。 绑定是分配Web服务调用协议以及Web服务安全性设置等步骤。 要创建绑定,我们使用SAP NetWeaver V7.0 SP14中引入的SOAMANAGER接口。
- 在命令窗口中,输入
/nSOAMANAGER
以在Web Dynpro会话中打开SOA Manager门户。 - 单击“ 登录”按钮,再输入一次您的SAP用户ID和密码,以进入SOA Manager门户。 在门户中,切换到“ 服务管理”选项卡,然后单击以打开“ 单一服务配置”页面。 在搜索模式字段中输入
ECC_CUSTBASICDATABYIDQR_V2
。 选择“ 两个名称”作为字段值,然后单击“ 转到” 。 搜索结果表显示了服务的外部和内部名称,以及其名称空间。 选择该行使其突出显示,然后按Apply Selection按钮(图4)。图4. SOAMANAGER页面中的企业服务搜索
- 这将在下面打开一个名为“服务详细信息定义”的部分。 切换到“ 配置”选项卡,然后单击“ 创建端点” 。 将打开一个弹出窗口,显示服务名称,描述和新的绑定名称。 将New Binding Name的值更改为ECC_CUSTBASICDATABYIDQR_V2_Binding ,然后单击Apply Settings来生成绑定详细信息(图5)。
图5.在SOAMANAGER中为企业服务生成绑定
- 向下滚动至屏幕的“ Web服务端点的配置”部分,并在“ 提供程序安全性”选项卡下。 将“传输保证”保留为默认值(“无”(HTTP)–本演示将使用普通的HTTP连接)。 在身份验证设置>身份验证方法下 ,选择用户ID /密码选项。 这将自动选择sapsp:HTTPBasic作为身份验证方法。 单击保存按钮以保存配置设置。 现在,您的企业Web服务的绑定已成功生成(图6)。
图6.使用HTTP基本身份验证设置生成的绑定
导出WSDL并执行快速测试
现在,使用指定的绑定导出WSDL,以便可以将其导入Integration Designer工作空间中。
- 向上滚动至“ 服务定义的详细信息”部分,切换到“ 概述”选项卡,然后单击第二个链接“ 为所选绑定或 服务 打开WSDL文档” ,以使用生成的绑定打开WSDL。
- 使用名称ECC_CUSTBASICDATABYIDQR_V2 .wsdl将文件保存到桌面。 现在可以将WSDL导入Integration Designer。
现在,让我们对新的Web服务进行快速测试,以验证其是否可以按预期使用HTTP基本身份验证。
- 仍在“ 概述”选项卡下,单击“ Open Web Service”导航器以选择绑定链接,以在新的浏览器窗口中打开服务测试客户端。 输入用户ID和密码以对导航器进行身份验证。
- 现在,您可以在搜索条件中输入客户编号并测试服务。 (图7)。
图7.测试企业服务
- 要验证绑定,请返回SICF并验证是否显示了新生成的绑定(图8)。
图8. SICF中生成的绑定
这样就完成了用于调用此Web服务的SAP设置。
设置IBM BPM以访问SAP Enterprise Services
BPM示例流程包括一个简单的流程,其中使用Coach UI输入客户编号,并且Coach中的Customer Lookup按钮调用高级集成服务(AIS)从SAP检索客户记录并将其显示在屏幕上。 现实生活中的流程通常包括其他步骤,例如分配客户优先级,进行特殊促销等,但是我们将重点放在第一步。
实施的解决方案包括两部分:
- 在流程设计器中称为“客户预先批准”的业务流程定义(BPD)。 此过程包含客户查找AIS。
- 实现AIS的Integration Designer中基于业务流程执行语言(BPEL)的流程。 此过程将调用我们在“ 准备SAP环境”部分中设置的SAP Enterprise Service。
创建业务流程
- 登录到流程设计器并创建一个缩写为“ CUSTSAP”的名为“客户预先批准的PA”的流程应用程序。 在名为“客户预先批准”的流程库下创建一个新的业务流程定义(BPD)。 创建流程,如图9所示。该流程包含两个步骤:
- 输入客户HT人类活动
- 分配客户优先GS服务。
在本演示中,您将实现Enter Customer活动作为一项人工服务。
图9.客户预先批准流程图
- 创建要在流中使用的业务对象。 对于我们的示例,您将只创建一个名为“客户”的业务对象。 在现实生活中,现实生活中的完整过程可能包含更多数据对象。 单击数据旁边的+号以创建客户数据对象。 数据对象包含以下结构:
- 顾客ID
- 顾客姓名
- 描述
- 行业
- 类别
- 层级
- 销售组织
- 地址
- contactInfo
- 在“ 变量”选项卡下的名为“客户”类型的“客户”下的过程中创建一个新的私有变量。
- 通过单击“输入客户”活动的“ 实施”选项卡中的“ 新建”按钮,创建一个名为“输入客户HS”的新人机界面。 创建一个输入和输出变量,其名称为数据类型Customer的同名“ customer”。 这从客户预批准BPD传递到人工服务中。
- 将Coach对象拖放到画布中,并使用客户变量使用以下布局创建教练。 除“客户ID”字段外,将所有其他字段设置为只读。 添加三个名为Customer Lookup , Submit和Cancel的按钮(请参见图10)。 为简便起见,我们将提供创建教练布局所需的步骤。 请参阅附件的CustomerPreapproval.zip文件以获取已实现的解决方案。
图10.客户输入的教练布局
现在创建一个AIS以执行客户查找:
- 在“实现”下创建一个名称为“ Customer Lookup AIS”的高级集成服务。 AIS接受customerId(字符串类型)作为输入变量。
- 创建一个名为customer的“ Customer”类型的输出变量。 AIS返回此对象中的客户详细信息。 创建一个名为“ invokeFault of String类型”的故障变量,以捕获从SAP返回的所有异常消息。 在现实生活中,故障对象可能是包含更完整故障消息结构的结构。 保存AIS。
- 返回到Enter Customer HS服务的Process选项卡中, 从Implementation中选择Customer Lookup AIS并将其拖到画布中。 使用“ 查找 客户”按钮作为边界事件,将“ 客户输入教练”连接到“ 客户查找AIS” 。 下数据映射,指派tw.loca.customer.customerID作为输入变量映射和tw.local.customer作为输出变量映射。 流程如图11所示。
图11.客户HS服务流程
- 要完成该流程,请返回“客户预先批准”流程,并将客户变量分配为输出变量。 输入客户人员服务将完整的客户数据对象返回到流程。
实施高级集成服务
以下步骤假定您的Integration Designer环境已经连接到Process Center:
- 启动Integration Designer并接受默认工作空间(或者您可以更改为首选工作空间)。
- 如果要求您输入Process Center URL,用户ID和密码,请输入环境的相关值以连接到Process Center。
- 切换到Process Center透视图。 在“流程中心”视图中的“ 流程应用程序”下 ,找到先前创建的“客户预先批准的PA”(CUSTSAP),然后在工作区中单击“ 打开 ”。
- Integration Designer会自动生成与AIS相关的工件。 AIS,实施模块和关联的库在“客户预先批准的PA主容器”项目下创建。
- 客户查找AIS显示为“未实现”。 右键单击它,然后选择实施 。 选择“ 微流”作为类型,然后输入
CustomerLookup_BP
作为名称。
现在,在组装图中创建该过程,如图12所示。
图12.客户查找组装图
要为客户主数据调用SAP Enterprise Service,请导入在“ 导出 WSDL”中生成的SAP WSDL,并对“客户预批准”项目执行快速测试 。
注意 :从BPM V8.x开始,由于WSDL缺少SOAP 1.2绑定的soapAction属性,因此导入SAP生成的WSDL时存在一个已知问题。
如下所述,必须在导入WSDL之后手动修复此问题。
- 在Integration Designer中,右键单击“ 客户预先批准的PA Main”项目,单击“ 导入” ,选择WSDL和XSD作为类型,选择“ Customer_Pre-approval_PA_Implementation”作为目标模块,然后从您的桌面导入ECC_CUSTBASICDATABYIDQR_V2 .wsdl (检查“ 依赖于导入”资源框)。 会自动生成用于调用此企业服务的接口和业务对象。
- Integration Designer在“ 问题”选项卡下标记以下错误:
"WSDL: The soapAction attribute is missing. It is required when soapActionRequired is set to or defaults to true"
。要修复此错误,请右键单击该错误,然后选择“ 快速修复” 。 在“快速修复”窗口中,选择第一个修复, 为SOAPAction属性添加缺少的值 ,如图13所示,然后单击Finish 。
图13. SOAPAction属性修复
问题选项卡下的错误现在应该消失了。
创建BPEL流程
继续实施BPEL流程以从SAP检索客户详细信息。
- 在项目的组装关系图中,使用WS 1.1和SOAP 1.1版本的WS绑定创建一个导入,并分配从SAP WSDL生成的名为“ CustomerERPBasicDataByIDQueryResponse_In_V2”的接口。 将导入名称设置为SAP_EntSvc_IMP_WS 。
- 将CustomerLookup_BP模块连接到导入。 它会自动创建对导入的引用(图14)。
图14. SAP企业服务的导入组件
- 右键单击CustomerLookup_BP ,然后单击Generate实现以生成框架BPEL实现。 在BPEL编辑器中,创建一个类似于图15的流程。
图15. CustomerLookup_BP流程
- 以下步骤创建了流程:
- AIS接口的接收步骤会自动生成。 单击“ 新建”,分配一个变量以接收输入。 接受默认变量名称“ customerID”。
- 创建两个新变量,分别称为类型CustERPBscDataByIDQuMsg_s_V2的 customerSAP和类型为CustERPBasDataByIDRpMsg_s_V2的customerSAPResult (这两种类型都是从SAP WSDL生成的)。
- 拖放一个Java片段,该片段在日志中写入参考消息。 如清单1所示,在可视化编辑器中对代码段进行编码。
清单1.编写输入日志的代码片段
System.out.println(">>>> Entering Customer Look up process with customer id " + customerID);
- 拖放将输入消息从业务流程映射到SAP对象的数据映射。 选择XML映射作为类型,然后选择MapX_Customer_CustomerSAP作为名称。 分配CustomerID作为输入变量和customerSAP作为输出变量。
- 将打开业务对象图编辑器。 映射字段,如图16所示。将客户ID映射到LowerBoundaryCustomerID并将1分配给IntervalBoundaryTypeCode 。 单击保存并关闭它。
图16.客户到CustomerSAP的映射
- 在数据映射下创建一个调用步骤,以调用SAP Enterprise Service操作CustomerERPBasicDataByIDQueryResponse_In_V2。 这是一个同步调用,从SAP获取客户详细信息作为响应。 将customerSAP变量分配为输入,并将customerSAPResult变量分配为调用步骤的输出。
- 在调用步骤下面放下另一个Java代码段,该步骤将一条消息写入与返回结果相关的日志中。 如清单2所示对代码段进行编码。
清单2.编写SAP调用结果的代码片段
String customerID = ""; String searchTerm = ""; ListIterator list = customerSAPResult.getList("Customer").listIterator(); if (list.hasNext()) { DataObject customer = (DataObject) list.next(); customerID = customer.getString("ID"); searchTerm = customer.getDataObject("Common").getString("KeyWordsText"); } System.out.println("<<<< Customer lookup returned customer ID " + customerID + ", " + searchTerm);
- 创建另一个名为“ Map_CustomerSAP_Customer”的业务对象映射,该映射将SAP的返回对象映射到Customer对象。 将SAP对象的客户和地址字段映射到客户流程对象,如图17所示。这是一个简单的一对一移动样式映射。
- 回复步骤将映射的SAP结果返回给主叫客户预先批准业务流程。
图17.将SAP结果映射到客户对象
- 这就完成了BPEL流程。 保存并关闭编辑器。 在“ 问题”选项卡下不应列出任何错误。 如果列出了错误,请查看步骤以确保已解决错误。
启用身份验证
最后一步是对调用启用基于用户名的身份验证,并向SAP身份验证BPM客户端。 正如您在“ 创建绑定”部分所回顾的那样,我们启用了HTTP基本身份验证。
- 以管理用户身份登录到WebSphere Admin控制台。 在服务>策略集下 ,单击应用程序策略以将其打开。 单击“ 新建”以创建新的策略集。
- 输入名称为
BPMHTTPOnlyBasicAuth
,如图18所示。(可选)输入描述。 单击添加按钮,然后选择HTTP传输以添加它。 单击保存以保存策略。图18. HTTP传输的策略集
- 接下来,您需要使用此策略创建客户端绑定,以分配用户名和密码。 单击服务>策略集下的常规客户端策略集绑定以将其打开。
- 单击“ 新建”以创建新的客户端绑定。 输入绑定配置名称为
SAPRSABasicAuthBinding
并选择输入描述。 单击Add,然后选择HTTP Transport (参见图19)。 - 在“ HTTP传输”屏幕的“出站传输请求的基本身份验证”部分下,输入您的SAP用户名和密码。
- 单击确定,然后单击保存以保存更改。
图19.客户端策略集绑定
将新的客户端策略绑定导出为zip文件,以便可以将其导入到Integration Designer中。
- 单击服务>策略集>应用程序策略集将其打开。 点击您创建的BPMHTTPOnlyBasicAuth策略集旁边的复选框,然后点击导出 。
- 控制台会生成一个名为“ BPMSAPBasicAuth.zip”的zip文件。 单击以将zip文件下载到您的工作站。
- 单击服务>策略集>常规客户端策略绑定以将其打开。 单击复选框以选择新的SAPRSABasicAuthBinding绑定,然后单击“ 导出” 。
- 控制台会生成一个名为“ BPMSAP Client.zip”的zip文件。 单击以将其下载到您的工作站。
- 从控制台注销。
在项目的Integration Designer组装关系图中,将新的策略集和绑定分配给SAP Import组件。
- 右键单击“ 客户预先批准的PA库”,然后选择“ 导入”。 选择Web服务> WebSphere策略集作为导入源向导。
- 找到并选择上一步中导出的BPMHTTPOnlyBasicAuth.zip ,然后单击Finish 。
- 要导入客户端绑定,请右键单击客户预先批准的PA库,然后选择导入 。 选择Web服务> WebSphere常规绑定作为导入源向导,并导入BPMRSABasicAuthBinding.zip绑定zip文件。
- 打开客户批准前装配图,然后单击SAP_EntSvc_IMP_WS导入组件以将其选中。
- 在“ 属性”选项卡下,单击“绑定”下的“ 策略集”选项卡。 现在,在“默认”策略集选择列表中,“ BPMHTTPOnlyBasicAuth”策略作为选择出现(请参见图20)。 选择它进行分配。
- 在“绑定”选择列表中,出现“ BPMRSABasicAuthBinding”绑定。 选择它进行分配。
图20.将策略集和客户端绑定分配给SAP Import
- 保存更改。
最后一步是将新模块发布到Process Center。 右键单击客户预批准流程项目,然后单击刷新并发布 。 “已更改”状态消失,模块状态应显示为“已同步”。 这样就完成了该解决方案的SCA组件的构建。
总之,我们创建了一个简单的业务流程定义,称为“客户预先批准流程”,该流程定义接受客户ID作为Coach中业务用户的输入,并从SAP系统中查找客户详细信息。 使用Advanced Integration Service(高级集成服务)完成查找,该服务被实现为BPEL,该BPEL调用SAP Enterprise Service从SAP检索客户详细信息。 返回的结果被映射回BPM业务对象并显示在Coach中。 使用HTTP基本身份验证机制实现安全性。
测试流程
您可以使用Process Designer的回放功能来测试流程。 另外,业务流程可以暴露给门户网站并从门户网站运行。
- 登录到Process Designer,然后在Designer中打开“ 客户预批准”过程。 单击播放按钮。
- 在客户预批准辅导中,输入您连接到的SAP系统中存在的有效客户ID。 在此示例中,我们输入“ 3556”作为客户ID。
- 单击客户查找按钮。 客户查找AIS调用客户预先批准SCA组件,该组件通过Web基本服务接口使用HTTP基本身份验证通过用户标识和密码向SAP进行身份验证,从而通过Web服务接口调用SAP。 从SAP检索输入客户的客户详细信息,并将其显示在Coach中。
图21.显示结果的Customer Entry Coach
- 打开Integration Designer,然后单击“ 控制台”选项卡。 如果未显示“控制台”选项卡,请单击“ 窗口”>“显示视图”>“控制台”以显示它。 服务器日志显示在BPEL流中的Java代码段中输入的消息。
结论
本文演示了通过标准SOAP协议从IBM Business Process Manager使用SAP Enterprise Services的简便性。 它描述了以下步骤:准备SAP系统以接受企业服务请求;创建包含集成服务以调用SAP企业服务以查找业务数据的业务流程;以及实现基本安全机制以安全地实现集成的步骤。
翻译自: https://www.ibm.com/developerworks/bpm/library/techarticles/1312_gopalan/1312_gopalan.html
sap ibm流程文档