简介: 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 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; |
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 系统。
9. 在 Find Objects in the Enterprise System 页面,
10. 在 Synonyms – Nick Names 下分别过滤出订单模块的四个数据表:PO_HEADERS_ALL,PO_LINES_ALL,PO_LINE_LOCATIONS_ALL 和 PO_DISTRIBUTIONS_ALL,并分别配置各个表的属性信息,并添加到 Selected objects 中。
如图 3 所示,在 Specify theConfiguration Properties for ‘ PO_HEADERS_ALL ’ 页面,配置表 PO_HEADERS_ALL 的属性信息,包括主键 PO_HEADER_ID,点击 OK。
如图 4 所示,在 Specify theConfiguration Properties for ‘ PO_LINES_ALL ’ 页面,配置表 PO_LINES_ALL 的属性信息,包括主键 PO_LINE_ID,父表 PO_HEADERS_ALL,外键 PO_HEADER_ID 等信息,点击 OK。
如步骤 2 所示,在 Specify the Configuration Properties for ‘ PO_LINE_LOCATIONS_ALL ’ 页面,配置表 PO_LINE_LOCATIONS_ALL 的属性信息,包括主键 LINE_LOCATION_ID,父表 PO_LINES_ALL,外键 PO_LINE_ID等信息,点击 OK。
如步骤 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 所示。
11. 在 Configure Composite Properties 页面,清除 Generate a business graph for each business object 选项,其它选项保留默认配置,点击 下一步。
12. 在 Specify the Service Generation and Deployment Properties 页面,如图 6 所示。
图 6. 配置 Service Generation 和 Deployment Properties
13. 在 Specify the Location Properties 页面,创建新的模块名字 POInbound,点击 Finish,完成适配器服务发现过程。
14. 在生成的 POInbound 入站应用程序下,双击 Assembly Diagram,添加 Untyped Component:Component1,如图 7 所示。Component1 的实现代码片段如清单 4 所示,其作用是将适配器入站应用程序获取到的订单数据序列化成 XML String,并输出在 WPS 控制台。
图 7. 创建入站应用程序的 Component
清单 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 控制台创建新订单
适配器入站程序获取到订单详细信息并打印在 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 所示。
通过上述的示例开发、配置和测试,我们成功地完成了 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/