使用 WebSphere Adapters 和 IBM Business Process Manager 与外部系统通信

在本文中,您将学习 IBM® Business Process Manager 如何使用 WebSphere® Adapters 来连接到外部系统,以及数据如何在外部系统和 IBM BPM 的人工任务之间流动。使用这些功能,您会看到如何能够集成 BPM 应用程序与现有的系统。

Feng Li, 高级软件工程师, IBM

Feng Li 是 IBM 中国软件开发实验室的一名技术支持工程师。他拥在为 IBM WebSphere Adapters 和 IBM Business Process Manager 提供技术支持上具有多年经验。



Jin Shang, 高级软件工程师, IBM

Jin Shang 是 IBM 中国软件开发实验室的 WebSphere Adapters 和 Business Process Manager 技术支持团队中的技术支持专家。他拥有 8 年的 IBM WebSphere Business Process Manager 产品套件的经验。



Jia Tang, 高级软件工程师, IBM

Jia Tang 是 IBM 中国软件开发实验室的技术支持工程师。她负责 BPM 的技术支持,并且她拥有多年 IBM Business Process Manager 产品套件经验。



2013 年 7 月 29 日

概述

WebSphere Adapters 用于在 IBM Business Process Manager (IBM BPM) 中与外部系统进行通信。本文介绍了常用的端到端业务场景,以演示如何在 IBM BPM 上开发和部署一个 WebSphere Apdater。使用一个示例业务场景,可以看到数据库中的一个外部记录如何进入 IBM BPM,由一个人工任务处理,并最终被存储到 SAP 系统。

本文假定您已基本了解 IBM BPM 和 WebSphere Adapters。您需要安装以下产品,然后遵循文章中的步骤:

  • IBM WebSphere Adapter for JDBC V7.5.0.2
  • IBM Business Process Manager V8 与 IBM Integration Designer

示例业务场景

示例场景假设,某公司需要在 HR 部门和 SAP 系统之间同步数据。HR 部门存储所有员工信息,包括个人和工资信息。 SAP 系统用于存储工资卡的银行信息。当一个新员工入职时,HR 在其数据库中创建一个新的记录,包括姓名、职位、工资和工资卡的银行信息。该公司要求个人信息和工资信息分别与 SAP 系统自动同步。在记录进入 SAP 系统之前,需要经过人工审批,主管可以根据需要修改这些值。与此同时,主管可以在同一个 Coach 视图中创建一个银行记录,并通过 SAP Adapter 将其插入 SAP 系统。

WebSphere Adapter for JDBC (JDBC Adapter) 入站流程用于轮询来自 HR 系统的事件。IBM BPM Coach 视图提供了一个用户界面,让审计人员能够查看和修改值。WebSphere Adapter for SAP (SAP Adapter) BAPI 出站流程负责将银行信息插入到 SAP 系统,如图 1 所示。

图 1. 示例业务场景
示例业务场景

以下各节将引导您一步一步地开发和测试该场景。


配置 HR 数据库

在开发示例业务场景之前,您需要创建和触发 HR 数据库中的下列各表。在本场景中,我们使用了 Oracle® Database 9i。

清单 1. 创建 Oracle 数据库的脚本
/*Scripts for creating the tables in Oracle database*/

CREATE TABLE Employee
(
      empl_id             int not null Constraint pk_emplid PRIMARY KEY,
      empl_fname          varchar(50) not null,
      empl_lname          varchar(50) not null,
      empl_age            varchar(10) null,
      empl_band           varchar(10) not null,
      empl_salary         varchar(30) not null,
      empl_bankid         varchar(10) not null,
      empl_bankname       varchar(50) null,
      empl_bankcoun       varchar(50) null,
      empl_bankcity       varchar(50) null,
      empl_bankstreet    varchar(255) null
);

CREATE TABLE wbia_jdbc_eventstore
(
	event_id		NUMBER(20)	PRIMARY KEY,
	xid			VARCHAR2(200),
	object_key		VARCHAR2(80)	NOT NULL,
	object_name		VARCHAR2(40)	NOT NULL,
	object_function	VARCHAR2(40)	NOT NULL,
	event_priority	         NUMBER(5)	NOT NULL,
	event_time		DATE	DEFAULT SYSDATE NOT NULL,			
	event_status		NUMBER(5)	NOT NULL,
	connector_ID             VARCHAR2(40),
	event_comment	         VARCHAR2(100)
);

/*Scripts for creating the trigger for Employee table*/

CREATE SEQUENCE event_sequence start with 1;

CREATE OR REPLACE TRIGGER event_create
AFTER INSERT ON Employee
FOR EACH ROW
BEGIN
INSERT INTO
wbia_jdbc_eventstore (event_id, object_key, object_name, object_function, event_priority, 
    event_status,connector_ID)
VALUES(event_sequence.nextval, :NEW.empl_id, 'JcajdbcEmployeeBG', 'Create', 1, 0,
    'CreateEmployee');
END;

使用 SAP Adapter 连接到 SAP 系统

在本例中,我们使用 BAPI 调用 BAPI_BANK_CREATE 在 SAP 中创建银行信息。 SAP Adapter Outbound 将一个请求发送到 SAP 服务器。SAP Adapter BAPI 导入组件被 IBM BPM 调用,并且使用 RFC 来 连接到 SAP 系统,以插入记录。为了让 SAP Adapter Outbound 模块能够被其他应用程序重用,我们将它打包为一个工具包。为了配置出站处理的 SAP Adapter 并将它打包为一个工具包,请完成以下步骤:

  1. 打开 IBM Integration Designer 并连接到 Process Center,方法是单击 Getting Started with IBM Process Center,如图 2 所示,选中 Toolkits
    图 2. Getting Started with IBM Process Center
    图 2. Getting Started with IBM Process Center
  2. 单击右侧的 Create new toolkit,将工具包命名为 SAPAdapter_BankCreateTK,并在工作区中打开新的工具包。
  3. 选中 File => New => External Service
  4. 选中 Available types 下面的 SAP,并单击 Next
  5. 选中 IBM WebSphere Adapter for SAP Software with transaction support(IBM:7.5.0.2_IF01) 并单击 Next
  6. 导入 CWYAP_SAPAdapter_Tx 并单击 Next
  7. 找到并选中三个 JCO 文件,单击 Next
  8. 选中 Outbound 并单击 Next
  9. 为您的环境指定适当的属性,并在 SAP interface name 处选中 BAPI,然后单击 Next
  10. 找到 BAPI BAPI_BANK_CREATE,并将它添加到 Selected object,然后单击 Next
  11. 再次单击 Next
  12. Deployment Properties 下面选中 Using security properties from the managed connection factory,并单击 Next
  13. 选中 SAPAdapter_BankCreateTK_Implementation 模块并单击 Finish。您应该看到在程序集图中生成了一个适配器导入组件,如图 3 所示。
    图 3. 程序集图中的新导入组件
    程序集图中的新导入组件
  14. 右键单击 Adapter 项目 CWYAP_SAPAdapter_Tx,选中 Associate with Process Center,然后使用默认选项完成向导。
  15. 将业务对象和接口从 SAPAdapter_BankCreateTK_Implementation 拖动到 SAPAdapter_BankCreateTK_Library,如图 4 所示。
    图 4. 移动业务对象和接口
    移动业务对象和接口
  16. 在程序集图中添加一个名称为 CreateBank 的导出组件。
  17. 将一个名称为 SAPOutboundInterface 的接口添加到 CreateBank 导出组件。
  18. 右键单击 CreateBank 并选中 Generate Binding => SCA binding
  19. 在程序集图中连接两个组件,并保存变更。
  20. 右键单击 SAPAdapter_BankCreateTK 并选中 Refresh and Publish,将变更保存到 Process Center。
  21. 在 Process Center 视图中打开工具包,并单击右侧的 Create New Snapshot,如图 5 所示。
    图 5. 创建一个新的快照
    创建一个新的快照
  22. 指定 SAPAdapter_BankCreateTK_V1 为新快照的名称。

现在,您已经为出站处理配置了 SAP 适配器,并创建了一个 SAP Adapter 出站工具包。


创建一个新的流程,并绑定 Advanced Integration Service

我们创建的流程将用于通过 JDBC Adapter 出站处理从 HR 系统接收消息,提供一个 Coach 视图,让主管可以查看,然后通过 SAP Adapter 将消息传递到 SAP。为了创建此流程,请完成以下步骤:

  1. 打开 Process Designer 并创建一个新的流程应用程序,将其命名为 JDBC2SAP
  2. 在 Process Designer 中打开新的应用程序。
  3. 单击左侧 Data 下面的 Business Object,创建一个新的业务对象 (BO),将它命名为 BankBO
  4. 将以下参数添加到此 BO,如图 6 所示:
    • empl_bankid (String)
    • empl_bankname (String)
    • empl_bankcoun (String)
    • empl_bankcity (String)
    • empl_bankstreet (String)
    图 6. 添加参数
    添加参数
  5. 选中 Implementation => Advanced Integration Service,以创建一个新的 AIS,并将它命名为 SAPAIS
  6. 在 AIS 的参数下面添加一个输入变量,并将它命名为 BankBOAIS,然后将 Parameter Type 设置为您在上面定义的 BankBO
  7. 选中 Processes => Business Process Definition,以创建一个新的流程,并将它命名为 MyProcess
  8. 将一个名称为 myBandBO 的输入变量添加到流程,并将 Variable Type 设置为 BankBO
  9. 在流程中添加一个人工任务,并将它命名为 Supervisor Review
  10. 右键单击新的人工任务,选中 Activity Wizard,然后使用默认选项完成向导。
  11. 双击 Supervisor Review 人工任务,打开 Coach。
  12. 选中 Coaches 选项卡,然后单击右下角的 New,以创建一个新的 Coach 视图,如图 7 所示。将视图命名为 BandBOCV
    图 7. 创建一个新的 Coach 视图
    创建一个新的 Coach 视图
  13. 在 Coach 视图中,将右侧的 BankBO 变量拖动到 Layout 面板中。您的 Coach 视图应与图 8 相似。
    图 8. Coach 视图布局
    Coach 视图布局
  14. 保存并关闭 Coach 视图和 Coach。
  15. 在流程中添加一个系统任务,将它命名为 SAP Adapter Outbound,并将它绑定到您之前创建的 SAPAIS AIS,如图 9 所示。
    图 9. 将系统任务绑定到 AIS
    将系统任务绑定到 AIS
  16. SAP Adapter OutboundPropertyData Mapping 下面,选中 tw.local.myBankBO 作为 Input Mapping。
  17. 按以下顺序连接所有组件:Start +> Supervisor Review => SAP Adapter =>End,如图 10 所示。
    图 10. 连接组件
    连接组件

接下来,我们将在 Integration Designer 中实现 AIS 组件。


实现 AIS

在本节中,我们将使用 SAP Adapter 实现 AIS。然后用户能够在 Coach 中输入值,并传递给 SAP。

  1. 打开 IBM Integration Designer 并连接到 Process Center。
  2. 在工作区中打开 JDBC2SAP 项目。
  3. 右键单击 Dependent Toolkits 并选中 Change Toolkit Dependencies
  4. 在弹出窗口中,选中您之前创建的 SAPAdapter_BankCreateTK_V1 快照。
  5. 打开依赖项 JDBC2SAP_Implementation 并将 SAPAdapter_BankCreateTK_Library 添加到 Libraries,然后单击 Save
  6. 右键单击 AIS 组件 SAPAIS 并单击 Implement,如图 11 所示。
    图 11. 实现 AIS
    实现 AIS
  7. 选中 Microflow 并使用默认选项完成向导。
  8. 打开 JDBC2SAP_Implementation 的程序集图。
  9. 在程序集图中添加一个导入组件,并将它命名为 CreateBankInfo,然后添加一个名称为 SAPOutboundInterface 的接口。
  10. 右键单击 CreateBankInfo 并选中 Generate Binding =>SCA Binding
  11. CreateBankInfoProperties 选项卡中,在 Binding 下面指定一个名称为 SAPAdapter_BankCreateTK_Implementation 的新模块和一个名称为 CreateBank 的导出。
  12. SAPAIS_Process 连接到 CreateBankInfo
  13. 右键单击 SAPAIS_Process,然后选中 Regenerate Implementation,然后 Save
  14. 在重新生成的微流 SAPAIS_Process 中,添加一个变量 SAPBapiBankCreateBO,其类型为 SAePBapiBankCreate
  15. ReceiveReply 之间放一个 Data Map。将会显示一个 Map 向导,以帮助您初始化映射并指定配置,如映射类型、输入变量和输出变量。
  16. 选中 XML Map 并将它命名为 BankBO2SAPBO,然后将 BankBOAIS 添加为一个输入变量,并将 SAPBapiBankCreateBO 添加为一个输出变量。
  17. 将属性从 BandBOAIS 映射到 SAPBapiBankCreateBO,如图 12 所示。
    图 12. 映射属性
    映射属性
  18. 在 DataMap 和 Reply 之间添加一个 Invoke 组件,并将它绑定到 SAPOutboundInterfacePartner,如图 13 所示。
    图 13. 添加一个 Invoke 组件
    添加一个 Invoke 组件。
  19. 右键单击 JDBC2SAP 并选中 Refresh and Publish,在 Process Center 中保存变更。

用户现在可以在 Coach 中输入值,并更新 SAP 系统。我们将在 测试场景 中对此进行测试。


使用 JDBC Adapter 入站处理连接到 HR 数据库

JDBC Adapter 入站处理使应用程序能够在数据库中的对象被修改时收到通知。在此场景中,HR 系统在数据库中的 employee 表中插入一条记录。此变更触发将有关变更的信息更新到事件存储。JDBC 适配器定期轮询事件存储,检索并处理事件,然后将它们发送到一个模块的导出,该模块是在 BPM 中运行的应用程序的一部分。

完成以下步骤,为入站处理配置适配器:

  1. 选中 File => New => External Service,启动外部服务向导。
  2. Available Types 下面,选中 Adapters => JDBC 并单击 Next
  3. 选中 IBM WebSphere Adapter for JDBC (IBM: 7.5.0.2) 并单击 Next
  4. Connector project 字段中,输入 CWYBC_JDBC,并选择 IBM Process Server v8.0 作为运行时环境。单击 Next
  5. JDBC driver JAR files 字段中,单击 Add 添加 JDBC 驱动程序文件,以建立与 Oracle 数据库的连接。浏览并选中驱动程序 JAR 文件,然后单击 Next
  6. 在该场景中,我们需要检测 Oracle 数据库中的新记录,所以在 Select Processing Direction 窗口中选择 Inbound,并单击 Next
  7. 在 Specify the Discovery Properties 窗口中指定外部服务向导的连接属性。在数据库系统连接信息区域展开 Oracle 节点,然后选中正确的版本。在 System IDHost namePort numberUser namePassword 字段中指定适当的值,并单击 Next
  8. 在 Enterprise System 窗口中的 Find Objects 下面选择与 JDBC 适配器一起使用的业务对象和服务。
  9. 在 Enterprise System 窗口中的 Find Objects 中,单击 Run Query。展开其中已创建了先决条件的 Oracle 表的架构。选中并展开 Tables,然后选中 Employee 表,并单击 > 按钮,将它添加到 Selected objects 区域。单击 Next
  10. Specify Composite Properties 窗口让您能够为选中的业务对象选择操作。在我们的示例中,保留 Create 并删除其他业务对象,然后单击 Next
  11. 在 Specify the Service Generation and Deployment Properties 窗口中,选中安全凭据 Using security properties from the activation specification。用户和密码信息被显示在窗口中,如图 14 所示。您不需要更改此窗口中的任何其他配置。单击 Next
    图 14. 指定部署属性
    指定部署属性
  12. 在 Select a Business Integration Project Type 窗口中,浏览并选中 JDBC2SAP_Implementation 模块,然后单击 Finish
  13. 在生成 JDBC 适配器入站流程的构件后,您需要关联连接器项目 CWYDB_JDBC 与流程应用程序 JDBC2SAP。否则,将会出现运行时错误。右键单击 CWYDB_JDBC 并选中 Associate with Process Center,如图 15 所示。
    图 15. 关联 Process Center
    关联 Process Center
  14. 在 Associate with a Process Application or Toolkit 窗口中,选中包含该项目的流程应用程序 JDBC2SAP,如图 16 所示,并单击 Finish
    图 16. 关联流程应用程序
    关联流程应用程序

在流程中组装 JDBC Adapter Inbound

在本节中,我们将让 JDBC Adapter Inbound 能够向流程传递一个消息。要做到这一点,请完成以下步骤:

  1. MyProcess 从左边拖进程序集图,选中 Use a one-way invocation style,并单击 OK,如图 17 所示。
    图 17. 将 MyProcess 添加到程序集图
    将 MyProcess 添加到程序集图
  2. 将一个 BPEL process 组件添加到程序集图中,并将其名称修改为 JDBCAdapter2Process,然后将 JDBCInboundInterface 添加给它。
  3. 连接 JDBC Adapter Inbound => Component1 => MyProcess。您的程序集图应该与图 18 相似。
    图 18. 程序集图
    程序集图
  4. 双击 JDBCAdapter2Process,并在弹出的图中单击 Yes,以实现 BPEL 流程。
  5. 添加一个名称为 myBankBO 的变量,其类型为 BankBO
  6. ReceiveEnd 之间放一个 Data Map。将显示一个向导来帮助您初始化映射并指定如映射类型、输入变量和输出变量等信息。
  7. 选择 XML Map 并指定 JDBCBO2BankBO 作为名称,然后将 createJcajdbcEmployeeBGFInput 添加为输入变量,并将 myBankBO 添加为输出变量。
  8. 将属性从 JcajdbcEmployeeBG 映射到 BankBO,如图 19 所示。
    图 19. 映射属性
    映射属性
  9. 在 DataMap 和 End 之间添加一个调用组件,并将它绑定到 MyProcessOneWayPartner,然后将输入变量绑定到 myBankBO
  10. 右键单击 JDBC2SAP 并选中 Refresh and Publish,将变更保存到 Process Center。

测试场景

现在已完成场景实施,您可以使用本节中的测试用例来测试它。

测试 1:使用 Coach 创建银行信息

  1. 打开 Process Designer。
  2. 启动 MyProcess
  3. 在 Coach 中指定值(123ICBCCNBeijingDong Bei Wang west street) 并提交。

    通过 SAP Adapter 将该信息提交至 SAP。您应该可以看到,在 SAP 系统中已创建了银行信息。

测试 2:在 HR 数据库中创建新雇员信息时,将银行信息同步到 SAP 中

  1. 使用以下 SQL 脚本将一个记录插入到 HR Oracle 数据库中。
    清单 2. 插入雇员记录
    /*Scripts to insert a new record in Oracle database*/
    Insert into Employee values ( '111', 'san', 'zhang', '31', '7', '11000', '123', 
    'ICBC', 'CN', 'Beijing', 'Dong Bei Wang west street');
    commit;

    Oracle 中预定义的触发器将自动在 JDBC Adapter 事件表中添加一个事件记录。该事件由 JDBC Adapter 导出组件读取。该事件被传递到流程,并等待主管进行审查。

  2. 使用 tw_admin 登录到 Process Portal 并查看消息。
  3. 不进行任何修改,并单击按钮批准。
  4. 检查 SAP,您应该看到已经创建了银行信息。

结束语

本文介绍了如何在 IBM Business Process Manager 中使用 JDBC Adapter 和 SAP Adapter 来同步 Oracle 数据库与 SAP 系统。我们创建了人工任务,它使主管能够在 JDBC Adapter 和 SAP Adapter 之间修改信息。按照本文中的步骤,您已经看到了如何使用 WebSphere Adapters 来集成 BPM 和外部系统。您的 BPM 应用程序可以充分利用现有的系统,并迅速在有需要的地方提供业务数据。


下载

描述名字大小
流程应用程序JDBC2SAP.twx8KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=938947
ArticleTitle=使用 WebSphere Adapters 和 IBM Business Process Manager 与外部系统通信
publish-date=07292013