使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合

常 培, 软件工程师, IBM CSDL
作者照片
常培,于 2007 年加入 IBM CSDL,一直从事 WebSphere Adapter 的开发工作。对 WebSphere Process Server 和 WebSphere Integration Developer 具有丰富的实践经验。目前,专注于 Oracle E-Business Suite 的各种接口的企业信息系统(EIS)间的业务整合。
张 凯, 软件工程师, IBM CSDL
作者照片
张凯,于 2006 年加入 IBM CSDL,一直从事 WebSphere Adapter 的开发、测试工作,现在是 WebSphere Adapter 开发团队的一名软件工程师。他对 Information Retrieve,SOA,Eclipse 技术以及 Web2.0 都很感兴趣。

简介: WebSphere Adapter 是 IBM 对 JCA 标准的实现,用于企业信息系统(EIS)间的业务整合,在 SOA 解决方案中扮演着重要角色。通过阅读本文,读者可以了解如何使用 WebSphere Adapter for Oracle E-Business Suite V7.0 集成 Oracle Workflow Business Event System,并实现订单业务整合的基本原理和最佳实践;以及如何使用 WebSphere Adapter 开发企业信息系统集成的示例场景。

引言

WebSphere Adapter for Oracle E-Business Suite 作为 IBM WebSphere 适配器家族中的重要一员,提供了针对 Oracle E-Business Suite(简称 Oracle EBS)系统进行业务整合的能力。利用该适配器,企业可以方便地将已有的 Oracle EBS 系统资源集成到面向服务的体系架构(SOA)中。

Oracle EBS 是 Oracle 公司重点发展和推广的新一代 ERP 系统。目前,不论在中国还是全球 ERP 市场,已经拥有非常庞大的用户群。Oracle EBS 使用 Oracle Workflow Business Event System 来发布或订阅业务事件,用户可以根据具体的业务需求来订阅事件并订制事件发生时所触发的行为。

本文根据作者的实际业务整合经验,以订单模块为例,阐述如何使用 WebSphere Adapter for Oracle E-Business Suite 集成 Oracle Workflow Business Event System,并提供详细的开发和测试过程,以便于读者可以轻松了解使用 WebSphere Adapter 集成 Oracle Workflow Business Event 实现业务整合的关键步骤。

集成方案的相关产品介绍

WebSphere Adapter for Oracle E-Business Suite V7.0

WebSphere Adapter for Oracle E-Business Suite 是 IBM WebSphere 针对 Oracle EBS 系统整合的适配器产品。它提供了对 Oracle EBS 各个应用模块全面、稳定的连接能力,支持多种连接方式,方便满足客户在不同层级的集成需求。它提供了集成应用与 Oracle EBS 系统资源的双向连接,即入站(inbound)和出站(outbound)。

入站 进行入站操作时,Oracle EBS 系统数据发生任何改变都会生成相应事件,WebSphere Adapter 通过主动监控事件存储,发现事件后从 Oracle EBS 数据存储中查询并得到相应业务数据,将其发送到特定目的端。

出站 进行出站操作时,应用程序通过 WebSphere Adapter 将业务数据首先插入 Oracle Interface Table,然后通过调用存储过程执行 Oracle EBS 系统中的标准并发方法(Concurrent Program)进行数据的完整性和一致性校验,并将合法数据转移到 Oracle Base Table。

Oracle E-Business Suite 和 Oracle Workflow Business Event System

Oracle E-Business Suite(Oracle 电子商务套件)是 Oracle 公司提供的一套企业资源规划系统,为客户提供全新概念的兼具企业级应用能力和面向服务基础架构的强大系统。主要应用于金融,零售,电信,保险,制造等行业。订单管理(Order Management)作为 Oracle EBS 最重要的应用模块之一,拥有覆盖大、中、小各种规模企业的大量客户群体。客户往往将其订单业务建立在 Oracle EBS 之上。因此,针对 Oracle EBS 订单业务的整合具有广大客户需求。

在 Oracle E-Business Suite 中,进行业务处理比如采购订单的批准、发票的确认时都会产生相应的业务事件,这些事件可以是 Oracle EBS 系统预定义的事件,也可以是客户自定义的事件。Oracle Workflow Business Event System 主要由以下 3 个部件构成:

Oracle Workflow Builder 包括了 Oracle Workflow Standard Item Type 和 Oracle XML Gateway Standard Item Type。前者主要是用来定义 workflow process。

Oracle Workflow Administrator 用来注册新的业务事件和订阅,或修改系统中预定义的事件的订阅。

Oracle Workflow processing engine 用来执行 workflow process。

本文侧重于 Oracle Business Event 的集成示例,关于 Oracle Workflow 的集成,我们将另文详述。

WebSphere Adapter for Oracle E-Business Suite V7.0 和 Oracle Workflow Business Event System 交互场景

本文将介绍使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现订单业务整合的基本工作原理和最佳实践。图 1 以订单模块为例描述了一个 WebSphere Adapter 的入站流程,通过 Oracle Workflow Business Event System 中的事件及事件的订阅机制,将 Oracle EBS 订单模块中新产生的订单事件,从 Oracle Workflow Business Event System 转存到 WebSphere Adapter 监听的事件存储中。WebSphere Adapter 监听到该事件后,从 Oracle EBS 系统中获取该订单的详细信息。


图 1. WebSphere Adapter 与 Oracle Workflow Business Event System 交互场景
使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第1张图片

WebSphere Adapter for Oracle E-Business Suite V7.0 业务集成示例场景开发、测试以及结果分析

示例场景介绍

本场景将在 Oracle EBS 系统订单模块中创建一个新的订单,使用 WebSphere Adapter 集成 Oracle Workflow Business Event System,获得订单事件,并且获取订单的详细信息。

在本场景实现过程中,使用到 Oracle Workflow Business Event System 中的事件 oracle.apps.po.event.xmlpo,Oracle EBS 系统订单模块中的数据表 PO_HEADERS_ALL,PO_LINES_ALL,PO_LINE_LOCATIONS_ALL 和 PO_DISTRIBUTIONS_ALL。

场景开发

场景开发的主要的过程如下:

1. 创建 WebSphere Adapter 监听的 event table。

2. 创建 stored function,将 Oracle EBS 系统订单模块中新产生的订单事件,从 Oracle Workflow Business Event System 转存到 WebSphere Adapter 监听的事件存储中。

3. 创建 Oracle Workflow Business Event 的 subscription,并在 subscription 中订制事件发生时触发执行 stored function。

4. 开发 WebSphere Adapter 的入站应用程序。

创建 event table

清单 1 中的 SQL 脚本,将在 Oracle EBS 数据库系统的 APPS schema 下创建 WebSphere Adapter 监听的 event table:IBM_WEBSPHERE_EVENTS。在具体的应用中,可以添加或者修改此表中的一些字段以满足实际业务集成需求。


清单 1. 创建 event table: APPS.IBM_WEBSPHERE_EVENTS

				  
 
 DROP TABLE APPS.IBM_WEBSPHERE_EVENTS; 
 CREATE TABLE APPS.IBM_WEBSPHERE_EVENTS( 
	 event_id 			 NUMBER, 
	 object_key 			 VARCHAR2(100), 
	 object_name 			 VARCHAR2(100), 
	 object_function 		 VARCHAR2(50), 
	 event_priority 		 NUMBER, 
	 event_time 			 DATE, 
	 event_status 			 NUMBER, 
	 event_comment 			 VARCHAR2(240), 
	 xid 				 VARCHAR(100), 
	 connector_ID 			 VARCHAR2(40) 
 ); 

创建 stored function

在创建 stored function 之前,我们先创建一个 event 序列(如清单 2 所示),在 store function 中我们将使用这个序列自动生成 event table 中的 event id 字段。

清单 3 中的 SQL 脚本,将在 Oracle EBS 数据库系统的 APPS schema 下创建 IBM_RULE_FUNCTION,将 Oracle EBS 订单模块中新产生的订单事件,从 Oracle Workflow Business Event System 转存到 WebSphere Adapter 监听的事件存储中,即 IBM_WEBSPHERE_EVENTS 中。


清单 2. 创建 event 序列 : APPS.IBM_WEBSPHERE_EVENTS_S

				  
 
 DROP SEQUENCE APPS.IBM_WEBSPHERE_EVENTS_S; 
 CREATE SEQUENCE APPS.IBM_WEBSPHERE_EVENTS_S 
 START WITH 1; 


清单 3. 创建 stored function: APPS.IBM_WEBSPHERE_EVENTS
				  
 
 CREATE OR REPLACE PACKAGE IBM_WEBSPHERE_PKG AS 
	 FUNCTION IBM_RULE_FUNCTION(    
 p_subscriptionIN  RAW,                                
 p_eventIN  OUT  NOCOPY  WF_EVENT_T 
        ) RETURN VARCHAR2; 
 END; 
 / 
 CREATE OR REPLACE PACKAGE BODY IBM_WEBSPHERE_PKG AS 
	 FUNCTION IBM_RULE_FUNCTION( 
 p_subscription IN  RAW,                                
 p_event        IN  OUT  NOCOPY  WF_EVENT_T 
        ) RETURN VARCHAR2IS 
  
 v_ruleVARCHAR2(20);   
	 v_event_id 	 NUMBER; 

	 BEGIN 
   
		 SELECT 	 ibm_websphere_events_s.NEXTVAL 
 INTOv_event_id 
 FROMDUAL; 

 INSERT INTO ibm_websphere_events VALUES ( 
 v_event_id,--event id 
 substr(p_event.getEventKey(), 0, 5),--object key 
'AppsPo_Headers_All',--object name 
'Create',--object function 
 1,--event priority 
 SYSDATE,                       --event time 
 0,--event status 
 NULL,--event comment 
 NULL,--xid value 
'001'--connector id 
		 ); 
	
		 v_rule :=  wf_rule.default_rule(p_subscription,p_event);    
		
 RETURN ('SUCCESS'); 
		
	 END IBM_RULE_FUNCTION; 
 END IBM_WEBSPHERE_PKG; 
 / 
 SHOW ERRORS 

创建 Oracle Workflow Business Event 的 subscription

1)使用 sysadmin/sysadmin 帐号登录 Oracle EBS 客户端;

2)选择 Workflow Administrator Web Applications 职责;

3)选择 Administrator Workflow - > Business Events 菜单;

4)选择 Subscriptions 子菜单;

5)点击 Create Subscription 按钮;

6)填写 subscription 的详细信息,如表 1 所示。


表 1. Event Subscription

Attribute Value Description
Subscriber System VIS.CN.IBM.COM The name of your Oracle EBS instance
Triggering Event Source Type Local
Event Filter oracle.apps.po.event.xmlpo Oracle seeded event of creating a Purchase Order
Execution Condition Phase 10
Status Enabled
Rule Data Message
Action Type Action Type Custom
On Error Stop and Rollback
Action PL/SQL Rule Function ibm_websphere_pkg.ibm_rule_function Custom action to convert and store Oracle business event into WebSphere Adapter event table
Priority Normal
Documentation Owner Name JTF
Owner Tag JTF

接下来我们将向您介绍如何使用 WID V7.0 来开发 WebSphere Adapter 入站应用程序,以及如何配置、运行、测试本文中的示例场景。

开发 Oracle EBS 适配器入站应用程序

1. 打开 WID V7.0,切换到 Business Integration 视图。

2. 点击菜单 File -> New – > External Service,启动 WebSphere Adapter for Oracle E-Business Suite 服务发现向导。

3. 在 Available Types 中 , 选择 Adapters -> Oracle E-Business Suite,点击 下一步

4. 选择 IBM WebSphere Adapter for Oracle E-Business Suite (IBM: 7.0.0.0) 节点,点击 下一步

5. 在 Import a RAR File 页面 , 保留默认设置,点击 下一步

6. 在 Locate the Required Files and Libraries 页面,添加 Oracle JDBC driver ojdbc6.jar,点击 下一步

7. 在 Select the Processing Direction 页面,选择 Inbound,点击 下一步

8. 在 Specify the Discovery Properties 页面,选择数据库版本并填写连接 Oracle EBS 系统的必要信息,如图 2 所示。点击 下一步,将开始连接目标 Oracle EBS 系统。


图 2. 配置 Oracle EBS 系统连接信息
使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第2张图片

9. 在 Find Objects in the Enterprise System 页面,

  1. 打开 Edit Query 对话框,输入 Schema 过滤条件 APPS,选中 Prompt for additional configuration settings when adding business object,点击 OK
  2. 点击 Run Query,查询结果将在 Discovered objects 中列出。

10. 在 Synonyms – Nick Names 下分别过滤出订单模块的四个数据表:PO_HEADERS_ALL,PO_LINES_ALL,PO_LINE_LOCATIONS_ALL 和 PO_DISTRIBUTIONS_ALL,并分别配置各个表的属性信息,并添加到 Selected objects 中。

  1. 表 PO_HEADERS_ALL

    如图 3 所示,在 Specify theConfiguration Properties for ‘ PO_HEADERS_ALL ’ 页面,配置表 PO_HEADERS_ALL 的属性信息,包括主键 PO_HEADER_ID,点击 OK



    图 3. 配置表 PO_HEADERS_ALL
    使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第3张图片

  2. 表 PO_LINES_ALL

    如图 4 所示,在 Specify theConfiguration Properties for ‘ PO_LINES_ALL ’ 页面,配置表 PO_LINES_ALL 的属性信息,包括主键 PO_LINE_ID,父表 PO_HEADERS_ALL,外键 PO_HEADER_ID 等信息,点击 OK



    图 4. 配置表 PO_LINES_ALL
    使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第4张图片



    使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第5张图片

  3. 表 PO_LINE_LOCATIONS_ALL

    如步骤 2 所示,在 Specify the Configuration Properties for ‘ PO_LINE_LOCATIONS_ALL ’ 页面,配置表 PO_LINE_LOCATIONS_ALL 的属性信息,包括主键 LINE_LOCATION_ID,父表 PO_LINES_ALL,外键 PO_LINE_ID等信息,点击 OK

  4. 表 PO_DISTRIBUTIONS_ALL

如步骤 2 所示,在 Specify the Configuration Properties for ‘ PO_DISTRIBUTIONS_ALL ’ 页面,配置表 PO_DISTRIBUTIONS_ALL 的属性信息,包括主键 PO_DISTRIBUTION_ID,父表 PO_LINES_ALL,外键 PO_LINE_ID 等信息,点击 OK

经过上述操作,将 PO_HEADERS_ALL,PO_LINES_ALL,PO_LINE_LOCATIONS_ALL 和 PO_DISTRIBUTIONS_ALL 添加到 Selected objects 中,结果如图 5 所示。


图 5. 添加订单模块的数据表
使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第6张图片

11. 在 Configure Composite Properties 页面,清除 Generate a business graph for each business object 选项,其它选项保留默认配置,点击 下一步

12. 在 Specify the Service Generation and Deployment Properties 页面,如图 6 所示。

  1. 选中 Using security properties from the activation specification
  2. Deploy connector project 中,选择 With module for use by single application 选项。
  3. Database connection information 中,选择 Specify database connection information 选项。
  4. 检查所有连接信息都是正确的,点击 下一步


图 6. 配置 Service Generation 和 Deployment Properties
使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第7张图片

13. 在 Specify the Location Properties 页面,创建新的模块名字 POInbound,点击 Finish,完成适配器服务发现过程。

14. 在生成的 POInbound 入站应用程序下,双击 Assembly Diagram,添加 Untyped Component:Component1,如图 7 所示。Component1 的实现代码片段如清单 4 所示,其作用是将适配器入站应用程序获取到的订单数据序列化成 XML String,并输出在 WPS 控制台。


图 7. 创建入站应用程序的 Component
使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第8张图片

清单 4. 适配器入站应用程序 Component 代码片段

				  
 
 public void createAppsPo_Headers_All(DataObject createAppsPoHeadersAllInput) { 
	 System.out.println("End point for createAppsPo_Headers_All"); 
	 try{ 
		 String xmlString 
		  = AdapterBOUtil.serializeDataObject(createAppsPoHeadersAllInput); 
		 System.out.println(xmlString); 
 }catch(Exception e){ 
		 System.out.println("Error in tracing the data object"); 
	 } 
 } 

场景测试

场景测试的主要的过程如下:

1. 启动 WebSphere Process Server v7.0,并将 WebSphere Adapter 的入站应用程序部署到 server 上。

2. 登录 Oracle EBS 客户端,在订单模块中创建一个新的订单。

3. WebSphere Adapter 收到来自 Oracle Workflow Business Event System 的订单事件后,从 Oracle EBS 系统订单模块获取到该订单的详细信息,并打印在 WebSphere Process Server 的控制台。

在 Oracle EBS 控制台创建新订单

  • 使用 operations/welcome 帐号登录 Oracle EBS 控制台;
  • 选择 Purchasing, Vision Operations (USA) 职责;
  • 选择 Purchase Orders -> Purchase Orders 菜单;
  • 如图 8 所示,根据具体业务需求,输入订单的详细信息,并点击 Approve


图 8. 在 Oracle EBS 系统中创建新的订单
使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第9张图片

适配器入站程序获取到订单详细信息并打印在 WPS 控制台

在上述步骤点击 Approve 后,Oracle Workflow Business Event System 将产生事件 oracle.apps.po.event.xmlpo,由于我们已经订阅了此事件,并订制了事件发生时所触发的行为,即将 Oracle EBS 订单模块中新产生的订单事件,从 Oracle Workflow Business Event System 转存到 WebSphere Adapter 监听的事件存储中。当 WebSphere Adapter 监听到该事件后,从 Oracle EBS 系统中获取该订单的详细信息,并按入站程序中指定的格式打印在 WPS 控制台,如图 9 所示。


图 9. 订单信息输出
使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合_第10张图片

通过上述的示例开发、配置和测试,我们成功地完成了 WebSphere Adapter 和 Oracle Workflow Business Event System 的集成,并实现了订单业务在 Oracle EBS 系统和 IBM WebSphere 产品间的整合。在实际应用中,IBM WebSphere 产品在收到订单信息后,会做进一步的分析与处理,比如客户订单业务分析与风险管理等等。

测试结果分析

在场景开发部分,我们首先在 Oracle EBS 系统中创建了 event table 和 stored function,前者是 WebSphere Adapter 监听的事件存储,后者是将 Oracle Workflow Business Event (oracle.apps.po.event.xmlpo)转存到 WebSphere Adapter 监听的事件存储中。然后创建了 Oracle Workflow Business Event(oracle.apps.po.event.xmlpo)的订阅,并在订阅中订制了事件发生时调用之前创建的 stored function。

在场景测试部分,我们首先在 Oracle EBS 系统订单模块中创建一个新的订单。然后,WebSphere Adapter 通过监听 event table,监听到该订单事件,并获取到该订单的详细信息,并打印在 WPS 控制台。至此,使用 WebSphere Adpter 集成 Oracle Workflow Business Event System 实现订单业务整合执行成功。其成功的关键点在于:

1. WebSphere Adpater 成功生成业务数据对象和适配器服务的相关定义和配置文件

在运行适配器服务发现向导过程中,订单事件涉及到的订单模块的数据表必须准确配置,包括表之间的父子关系,以及表上的主、外键等。只有这些配置准确无误,业务数据对象和适配器服务的相关定义和配置文件才能成功生成。

2. Oracle Worflow Business Event 成功转存到 WebSphere Adapter 监听的事件存储中

将 Oracle Workflow Business Event(oracle.apps.po.event.xmlpo)转存到 WebSphere Adapter 监听的事件存储中,我们使用一个 stored function 来完成,并在 Oracle Workflow Business Event(oracle.apps.po.event.xmlpo)的订阅中订制事件发生时调用此 stored function。所以整个转存的核心是该 stored function 的定义,它首先要能正确解析 Oracle Workflow Business Event,把事件的关键信息摘取出来,其次要能按照 WebSphere Apdater 监听的事件存储结构,存储摘取出来的事件关键信息。两者缺一不可,这就要求读者在定义这样一个 stored function 之前,明确 Oracle Workflow Business Event 的结构以及 WebSphere Apdater 监听的事件存储结构。

结论

借助于 WebSphere Adapters for Oracle E-Business Suite V7.2,通过集成 Oracle Workflow Business Event System,我们完成了订单业务在 Oracle E-Business Suite 和 IBM WebSphere 产品之间的整合。本文通过示例场景介绍了如何在 Oracle E-Business Suite 中创建事件订阅及订制事件发生时所触发的行为,并描述了利用 WebSphere Adapter for Oracle E-Business Suite 在 WID/WPS 环境中进行业务集成的示例开发、配置和测试过程。

本文旨在抛砖引玉,希望读者能够对 WebSphere Adapter for Oracle E-Business Suite 有所认识,了解如何使用 WebSphere Adapter,方便地集成 Oracle Workflow Business Event System,实现订单业务整合。关于 Oracle E-Business Suite 系统中其它模块的业务整合,与此类似,不在此赘述。

原文链接:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1010_changp_businessinte/1010_changp_businessinte.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-675841/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14789789/viewspace-675841/

你可能感兴趣的:(使用 WebSphere Adapter 集成 Oracle Workflow Business Event System 实现业务整合)