创建在 Oracle 电子商务套件开放接口中发布、查询和删除定单的 BPEL 流程

创建在 Oracle 电子商务套件开放接口中发布、查询和删除定单的 BPEL 流程

本 OBE 教程将向您介绍和演示如何结合使用 BPEL PM 与 Oracle 电子商务套件。演示如何:

  1. 使用 AppsAdapter 创建在 Oracle 电子商务套件开放接口表中发布销售定单的 BPEL 流程。针对 Oracle 应用产品的 Oracle 适配器可将开放接口表和并发程序公开为 Web 服务,以便之后可从 BPEL 流程进行调用。
  2. 使用定单管理存储过程 API 创建查询和删除已发布的销售定单的 BPEL 流程。

本 OBE 将利用 SOA 套件附带的 AppsAdapter 教程

大约一个半小时

主题

本 OBE 教程包括下列主题:

第 2 部分:查询并删除销售定单
创建到数据库的连接
在 JDeveloper 中创建 BPEL 项目
定义名为“Delete Order”的 Oracle Applications 适配器服务
编译并部署流程
查找电子商务套件中的现有销售定单
从 BPEL 控制台运行 BPEL 流程

将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下面的步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。


概述

针对 Oracle 应用产品的 Oracle 适配器提供了与 Oracle 应用产品的综合双向集成,支持所有推荐的接口。即,(i) 接口表;(ii) 并发程序;(iii) 业务事件;(iv) XML 网关;(v) EDI 网关;(vi) PLS/SQL API;(vii) Web 服务。这些适配器支持 Oracle Applications 第 12 版和版本 11.5.1 到 11.5.10 中的所有模块,还支持引用各种版本的 Oracle 电子商务套件(包括第 12 版、版本 11i10 以及 11i10 以前的版本)的自定义集成接口。它们还简化了设计时体验,加快了开发速度。

返回主题列表

情景

该示例将演示如何使用 BPEL PM、电子商务套件接口表以及并发程序传送销售定单。然后,将使用 PL/SQL API 从基表删除已提交的销售定单。

返回主题列表

 

前提条件

开始本教程之前,您应该:

  1. 下载适用于 Windows 平台的 Oracle SOA 套件 (10.1.3.1) 并执行基本安装。有关安装指导,请参见 Oracle 应用服务器安装指南

    用于演示本教程的 SOA 应用程序视 Oracle 应用服务器的默认 HTTP 端口 (8888) 而定。
  2. 下载 JDeveloper 10.1.3.2 并将其解压缩到您的本地计算机。
  3. 下载并安装电子商务套件 11.5.10

返回主题列表

 

第 1 部分:部署并运行一个在电子商务套件中创建销售定单的 BPEL 流程。

1.

执行以下脚本,以在目标数据库(您打算用来运行此示例的数据库)上设置包装程序包。对于本实验,因为包装程序包已存在,故可以跳过该步骤。

打开一个命令提示符窗口,导航到 Oracle 电子商务套件文件的安装目录,然后执行以下命令:

[ORACLE_HOME]/samples/tutorials/150.AppsAdapter/OrderImportConcurrentProgram/bpel/XX_BPEL_FND_REQUEST_SUBMIT_REQUEST.sql as APPS/APPS。

[ORACLE_HOME] — Oracle 电子商务套件的安装目录。

2.

启动 SOA 套件实例并登录企业管理器。

打开任何一个 Internet 浏览器并在地址栏输入以下 URL(格式为 http://<主机>:<端口>/em)

http://localhost:8888/em

:在本例中,使用的 HTTP 端口是 8888(默认设置)。

使用用户名 oc4jadmin 和口令 welcome1(或是安装 Oracle 应用服务器时指定的口令)登录企业管理器。

3.

创建一个连接池和一个数据源以便能够连接到数据库。

a.

在 Oracle Enterprise Manager Application Server Control 中单击 Home 链接。

b.

在 OC4J home 实例页面中,选择 Administration 链接。

 

c.

从提供的 Administration Tasks 列表中,单击 Services > JDBC Resources 任务的 Go To Task 图标。

 

d.

Connection Pools 部分中,单击 Create 按钮。

e.

在 Create Connection Pool - Application 中,接受默认值并单击 Continue。为该教程创建一个新的连接池。

f.

在 Create Connection Pool 表单中输入以下信息(对于此处未提及的域保留默认值):根据执行本教程中的任务要访问的数据库替换 DB 主机名、SID/服务名称、用户名以及口令。

属性名

Name

ebiz_pool

URL type

Generate URL from Connection Information 选项

DB Hostname ptc-apps01.us.oracle.com
DB Listener Port 1521
SID/Service Name VIS
Username apps
Use Cleartext Password apps

输入以上详细信息后,单击 Test Connection 按钮。

在 Test Connection 窗口中,单击 Test 按钮使用示例 SQL 语句测试该连接。

激活 Create Connection Pool 窗口并注意成功连接的消息。如果收到错误消息,请检查 URL 和证书以确保您已输入了正确的信息。

单击 Finish

注意表明 ebiz_pool 连接创建的消息。并查看 Connection Pools 部分中的 ebiz_pool 项。

g.

现在,创建数据源。

JDBC Resources 页面中,单击 Data Sources 部分下的 Create 按钮。

h.

Create Data Source - Application & Type 页面中,接受默认值并单击 Continue。您将创建一个 Managed Data Source。该数据源将使用 OC4J 连接池功能,因此可使用在以上步骤中创建的连接池。

i.

在 Create Data Source - Managed Data Source 页面中,输入该数据源的详细信息,如下表所示。输入以上详细信息后,单击 Finish

属性名

Name

ebizDataSource

JNDI Location

jdbc/ebizDataSource

Transaction Level Global & Local Transactions
Connection Pool ebiz_pool(在前面步骤中创建的连接池)
Login Timeout (seconds) 0

注意数据源 ebizDataSource 已创建的确认消息。并查看 Data Sources 部分中的项。

4.

创建一个 Oracle Applications adapter 连接。该连接将用于将销售定单信息传播至电子商务套件。

a.

Oracle Application Server Control 页面中,选择页面顶部的 Cluster Topology 路径式导航栏链接。

 

b.

Members 部分的 View By 下拉列表中,选择 Applications 查看 OC4J home 实例中的所有应用程序。

在应用程序的扩展树中,单击 default 应用程序的链接。

c.

Modules 部分下,单击与 AppsAdapter 资源适配器模块相对应的链接。

d.

Resource Adapter:Oracle Applications Adapter 页面上,选择 Connection Factories 链接。

e.

在 Connection Factories 下单击 Create。(应该使用接近屏幕顶部的 Create 按钮,而不是 Shared Connection Pools 部分中的那个。)

f.

Create Connection Factory:Select Interface 页面中,接受 Connection Factory Interface 的默认值,单击 Continue

g.

在 Create Connection Factory 页面的 JNDI Location 域中,输入 eis/Apps/appsSample 。在 Configuration Properties 中,输入 jdbc/ebizDataSource 作为 xADataSourceName 的值。接受所有其他域的默认值。单击 Finish

注意表明连接工厂已创建的确认消息。

h.

重启 SOA 套件:首先转至 Start > All Programs > [Oracle_Home] > Stop SOA Suite。

看到消息后,选择 Start > All Programs > [Oracle_Home] > Start SOA Suite。

返回主题列表

5.

在此步骤中,您将部署一个预打包的 BPEL 流程。该流程将通过适配器从预配置的 XML 文件读取一个销售定单,而后将该定单从 AppsAdapter 传播至电子商务套件。

a.

重启 SOA 套件:转至 Start > All Programs > [Oracle_Home] > Stop SOA Suite。

看到消息后,选择 Start > All Programs > [Oracle_Home] > Start SOA Suite。

 

b.

访问安装了 SOA 套件的 [ORACLE_HOME] 目录结构下的 AppsAdapter 示例教程。要完成此任务,请导航至 [ORACLE_HOME]\bpel\samples\tutorials\150.AppsAdapter\OrderImportConcurrentProgram\bpel 文件夹。

右键单击 bpel.xml 文件并选择 Edit 编辑该 xml 文件。

c.

编辑 bpel.xml 为文件适配器(同步读取操作)指定物理目录。确保与 getOrderDetails 项相关的代码段已将 LogicalDirectory 项设置为安装了 AppsAdapter 示例的文件夹路径,如下所示。(您的该路径可能会不同,具体取决于 SOA 套件的安装目录。例如,将 c:\SOASuite10131 替换为安装了 SOA 套件的文件夹。)


<partnerLinkBinding name="getOrderDetails">
<property name="wsdlLocation">getOrderDetails.wsdl</property>
<property name="inputDir" type="LogicalDirectory">
c:/SOASuite10131/bpel/samples/tutorials /150.AppsAdapter/OrderImportConcurrentProgram/inputDir
</property>
<property name="retryInterval">60</property>
</partnerLinkBinding>

d.

根据需要对 bpel.xml 文件进行了修改后,您需要编译和部署 BPEL 流程。要执行此任务,请转至 start > All Programs > Oracle_SOA > Oracle BPEL Process Manager > Developer Prompt

这将打开一个命令提示符窗口。进入该命令提示符窗口。

e.

在该命令提示符窗口中,将目录更改为 OrderImportDemo 项目的 build.xml 所在的文件夹。以下屏幕截图显示了该目录的可能路径。

然后,运行 obant 命令编译并部署该 BPEL 流程。注意表明构建成功的消息。(请注意,以下屏幕截图仅显示了部分您将在编译/部署过程中看到的消息。)

f.

编辑 order_data.xml 文件。从 [BPEL_samples]\150.AppsAdapter\OrderImportConcurrentProgram\inputDir 文件夹目录结构打开该文件。

右键单击 order_data.xml 文件并选择 Edit

查找“order_id_01”并将出现的三个都替换为非默认值。例如:123456。(注:因为电子商务套件内可能已存在具有该特定 ID 的定单,所以您需要执行此操作。)保存文件。

g.

转至 BPEL 控制台并通过输入空字符串启动该流程。在浏览器窗口中,按 http://<主机>:<端口>/BPELConsole(默认端口为 8888)
格式提供 URL 启动 BPEL 控制台。如果您收到该页面不能打开的错误消息,请转至 Start > All Programs > Oracle_SOA > Oracle BPEL Process Manager > BPEL Control 启动该控制台页面。

默认的登录用户 ID 为 bpeladmin,口令为 welcome1

从 Dashboard 或 BPEL Processes 选项卡下的 Deployed BPEL Processes 列表中选择 OrderImportDemo 链接。

h.

在 Initiate 部分中,提供 dummy 作为启动测试实例的值,并单击 Post XML Message 按钮。

注意表明测试实例已启动并且正在进行异步处理的消息。单击 Visual Flow 查看该图。

i.

生成的可视流程图显示了 Open Interface 和 Concurrent Program 服务的成功调用。

可以转至 Audit 选项卡并单击 View Raw XML 链接,查看为该特定实例生成的 XML 文件。

下面显示了生成的 XML 文件的一个代码片段。注意您在之前的步骤中提供的定单 ID 值 123456。

 

6.

导航至 Oracle Applications Forms 查看 Concurrent Program 执行的状态

 

7.

可以通过使用 Oracle Applications Forms 确认购买定单是否已成功创建。要执行此任务,请按以下说明进行操作:

a.

打开任何一个 Internet 浏览器并输入 Oracle Applications 安装位置的 URL。该 URL 的格式为 http://<安装了 Oracle Applications 的主机名>:<端口>。使用的默认端口号为 8000。

单击 Apps Logon Links 链接登录 Oracle 电子商务套件。提供相应的用户名和口令以登录页面。

单击 E-Business Home Page 链接。

使用与您的电子商务套件安装相对应的用户名和口令登录。

b.

向下滚动至 Navigator 部分中提供的职责列表,单击职责 Order Management Super User, Vision Operations (USA)。然后从打开的窗格中选择 Sales Order(如屏幕截图第二个框架中高亮显示的部分所示)。注:您的屏幕可能会显示更多的值,下面的屏幕截图只显示了部分内容。

c.

上述步骤打开一个 Oracle Applications 11i 浏览器窗口,其中显示一条消息要求您不要关闭该窗口和 Oracle Applications - Vision 窗口(包含 Order Management Super User, Vision Operations (USA) Navigator 表单和 Sales Orders - [New] 表单)。

注意 Order Returns-->Sales Order 表单现在处于活动状态。

 

d.

在 Sales Order 表单中,按 F11 键启用搜索定单功能。在 Customer PO 域中输入值 order_id_01(定单 xml 文件中提供的定单 ID )并按 CTRL+F11 键。

可以查看定单 ID 为“order_id_01”的新建定单的详细信息。

 

e.

点击 Line items 选项卡。确认定单的数量和项目类型与在第 5i 步中通过启动器测试 BPEL 流程时生成的原始 xml 数据中显示的一样。

 

第 2 部分:查询并删除销售定单

在这一部分中,通过 DeleteOrder BPEL 流程查询并删除一个销售定单。使用 JDeveloper 连接到 Oracle 电子商务套件并执行该任务。该 BPEL 流程具有以下活动:

  • 由来自 BPEL 控制台的输入 (order header_id) 触发的接收活动
  • 一个将 header_id 设置为 DeleteOrder 存储过程服务输入的分配活动
  • 一个调用 DeleteOrder 存储过程服务的调用活动。

创建到数据库的连接

1.

如果尚未进行此操作,请启动 BPEL 服务器进程。

重启 SOA 套件:转至 Start > All Programs > [Oracle_Home] > Stop SOA Suite。看到消息后,选择 Start > All Programs > [Oracle_Home] > Start SOA Suite。

2.

启动 Jdeveloper 并使用应用程序模式创建一个到电子商务套件的连接。

 

a.

在 JDeveloper 中选择 Connections 选项卡(如果未显示该选项卡,则选择 View > Connection Navigator)。右键单击 Database 并选择 New Database Connection 打开数据库向导。

 

b.

输入相应的值以连接到您的数据库。本教程使用 ebiz 作为连接名,使用 apps 作为用户名和口令。以下屏幕截图显示了数据库连接创建过程。

 

 

如果您在测试连接时收到错误消息,请确认您的数据库主机名、端口以及 SID 以确保这些信息准确无误。连接成功创建后,在 Database 连接导航器中会显示一个 ebiz 项,如以下屏幕截图所示。

 

 

返回主题列表

在 JDeveloper 中创建 BPEL 项目

第一个配置任务是创建一个新的 BPEL 项目。要完成该任务,执行以下步骤:

1.

打开 Oracle JDeveloper BPEL Designer。激活 Applications Navigator 选项卡。右键单击 Applications 节点并选择 New Applications。 .

提供应用程序名 BPEL_eBuz。单击 OK

还未创建项目文件。单击 Cancel

 

2.

现在,创建一个 BPEL 流程项目。要完成此任务,执行以下步骤:

右键单击 Application Navigator 中的 BPEL_eBuz 节点并选择 New

New Gallery 对话框中从 General 类别中选择 Projects,然后从 Items 部分中选择 BPEL Process Project。单击 OK

3.

BPEL Process Project 对话框显示。
BPEL Process Name 域中,输入一个描述性名称。例如,OrderImportDemo

 

a. 选择 Asynchronous BPEL Process 作为模板并单击 Finish
b.

注意名为 OrderImportDemo 的 BPEL 流程项目已在 Applications 部分中创建,查看 OrderImportDemo.bpel 可视流程图。

 

返回主题列表

 

定义名为“Delete Order”的 Oracle Applications 适配器服务

这个“Delete Order”AppsAdapter 服务将用于将销售定单从电子商务套件中删除。

1.

在 Component Palette 中,从下拉列表中选择 Services

单击 PartnerLink 并将其拖放至可视流程图 OrderImportDemo.bpel 中的 Services 区域。

2.

在 Create Partner LInk 窗口中,单击 WSDL Settings 部分中的 Define adapter services 图标。

3.

Adapter Configuration Wizard 中单击 Welcome 屏幕的 Next 按钮。选择 Oracle Applications 作为要配置的适配器。单击 Next

4.

在第 2 步中,将该服务命名为 DeleteOrder 并提供说明信息 Deletes an existing order from E-Business suite,然后单击 Next

5.

在第 3 步中,为您在本教程前面部分创建的应用程选择数据库连接,然后单击 Next

6.

在 Oracle Applications Module Browser 窗口中,通过以下路径导航至 Delete Order 项:
Product Families > Order Management Suite (OM_PF) > Order Management (ONT) > Sales Order (ONT_SALES_ORDER) > PLSQL > Process Order API (OE_ORDER_PUB) > DELETE ORDER (DELETE_ORDER)

单击 OK


7.

在 Adapter Configuration Wizard 第 4 步中,选择 DELETE ORDER API 并单击 Next

在该步中,您完成了名为 DeleteOrder 的 Oracle Application 适配器服务定义。单击 Finish 完成该过程。

8.

现在,返回 Create Partner Link 窗口,根据您在前面步骤中创建的适配器填写 WSDL Settings 信息。单击 OK

现在,返回 BPEL Designer,注意 DeleteOrder 现已作为服务提供。

单击 保存所有工作。

9.

Component Palette 中,从下拉列表中选择 Process Activities,然后选择 Invoke 活动。

将 Invoke 活动拖放至 OrderImportDemo.bpel 可视流程图中 receiveInput 活动的下方。

 

10.

将 Invoke 活动的连接器拖放至 Oracle 电子商务套件 DeleteOrder partnerlink。(按住右箭头按钮并将其拖至 DeleteOrder 图标。)

Edit Invoke 对话框中,输入 CallDeleteOrder 作为该活动的名称。单击 Automatically Create Input Variables 按钮选择输入变量,输出变量的选择与此相似。

注意 Input VariableOutput Variable 域都已填充了相关信息。单击 OK

11.

Assign 活动从 Component Palette 拖放至流程图中的 CallDeleteOrder 活动之前。

12.

双击 Assign_1 活动按如下所示设置值,以便为 CallDeleteOrder 调用活动设置输入值。在 General 选项卡上,提供名称 AssignDeleteOrder。在 Copy Operation 选项卡上,从 Create 选项下拉列表中选择 Copy operation

 

 

13.

Create Copy Operation 窗口中:

From 部分展开 Variables 节点 — Variables > Process > Variables > inputVariable > payload > client:OrderImportDemoProcessRequest > client:input

To 部分中展开 Variables 节点 — Variables > Process > Variables > CallDeleteOrder_DeleteOrder_InputVariable > InputParameters > ns2:InputParameters >ns2:P_HEADER_ID

单击 OK

单击 OK

返回主题列表

现在,编译 BPEL 流程并将其部署到您的本地服务器。要完成该任务,执行以下步骤:

1.

Application Navigator 中,展开 BPEL_eBuz 应用程序并右键单击 OrderImportDemo 节点。选择 Make 编译该应用程序。

右键单击 OrderImportDemo 节点并从菜单中选择 Deploy > BPEL Process Deployer... 以部署该应用程序。

 

2.

BPEL Process Deployer 窗口的 Integration Server Connection 中,单击 New 创建一个新的集成服务器连接。

在第 1 步中,在 Connection Name 域中输入 SOA。单击 Next

在第 2 步中,单击 Configure a new application server 图标创建一个新的应用服务器连接。

Create Application Server Connection 向导窗口的 Connection Name 域中输入 ApplicationServerConnection,并在 Connection Type 中选择 Oracle Application Server 10g 10.1.3。单击 Next

提供与您的 SOA 套件安装相对应的用户名和口令。单击 Next

确保主机名和端口正确,单击 Next

测试连接并单击 Finish。确保状态为 Success。否则,确认您的连接详细信息并再次测试连接。

在此步骤中,您完成了应用服务器实例连接的创建。

现在,控制台返回 Step 2 of the Create Integration Server Connection 窗口。单击 Next

在第 3 步中,单击 Test Connection 确保连接成功。单击 Finish

现在,控制台返回 BPEL Process Deployer 窗口。单击 Ok

在 Deployment Properties 窗口中,单击 OK。如果您尝试过多次部署此应用程序,版本将不相同。

查看 Apache Ant - Log 窗口确保部署成功。在 Oracle JDeveloper 中保存您的所有文件。

 

3.

打开一个浏览器窗口并查看 BPEL Console (http://<主机名>:8888/BPELConsole or Start > All Programs > Oracle SOA Suite > Oracle BPEL Process Manager > BPEL Control) 以确认流程 OrderImportDemo 已作为 BPEL 服务器上已部署的 BPEL 流程之一提供。单击 OK

 

返回主题列表

 

查找电子商务套件中的现有销售定单

现在,让我们查找 Oracle 电子商务套件中的一个现有销售定单。

 

1.

使用登录名 operations/welcome 登录 Oracle Applications instance > Oracle E-Business Suite。
选择 Order management Super user, vision operations (USA) 职责,如之前步骤所述。


单击 Quick Sales Orders。这将启动销售定单的相应表单。如果这是第一次运行 Jinitiator,那么它首先将自动安装到您的计算机上。我们将看到,这是一个一次性流程。

2.

查询现有定单。单击 Cust Name 并单击 F11。在域颜色变为蓝色后,在 Cust Name 域中输入 Business World 并按 CTRL - F11。现在,该表单将填充与客户 Business World 相对应的信息。另请注意与该客户条目相对应的一个行项目。如果您没有看到行项目,请使用键盘上的向上和向下箭头键选择至少包含了一个行项目的定单。

上面的屏幕截图显示了系统中定单 ID 为 57686 的定单。您可能会找到一个不同的定单。

3.

现在,为上步中选择的定单查找对应的 header_id。我们需要 header_id 的原因在于定单管理工作是按内部值进行的。通常,定单编号由外部系统提供,因此,可能会出现两个销售定单拥有同一定单编号的情况(源自两个不同的公司)。

在 JDeveloper 中,转至 Tools > SQL Worksheet。在 Select Connection 窗口中选择 ebiz 作为数据库连接。这是您在本教程前面步骤中创建的数据库连接。


ebiz 窗口中,输入以下 SQL 语句并单击 Execute SQL Statement 按钮 执行该命令。

SELECT * FROM oe_order_headers_all
WHERE order_number=57686

注意定单编号 57686 的 header_id 值为 104550。

返回主题列表

从 BPEL 控制台运行 BPEL 流程

调用一个 BPEL 流程的实例并使用内置的测试客户端测试该 BPEL 流程。

1.

打开一个新的 Internet 浏览器并在地址栏输入以下 URL 登录 Oracle BPEL 控制台:

http://localhost:8888/BPELConsole

如果还未登录,请提供用户名 oc4jadmin和口令 welcome1(或您在安装 Oracle SOA 套件时提供的口令)登录 BPEL Control

2.

单击 OrderImportDemo 链接并在 Initiate 选项卡中,提供您在前面步骤中在 input parameter 域中确定的定单 ID,单击 Post XML Message。

查看表明实例异步处理成功的消息。单击 Visual Flow 图查看 BPEL 可视流程图。


3.

现在,让我们确认在销售定单上执行实际操作后的 API 将产生怎样的结果。单击 CallDeleteOrder 活动删除具有测试实例中提供的定单 ID 的定单。

 

4.

在 Activity Audit Trail 窗口中,注意显示删除操作状态的高亮显示的消息。