本教程讲述了如何使用 Oracle JDeveloper 10 g BPEL Designer 调用 United Loan、Star Loan 和 Credit Rating 等 Web 服务。 本教程使用 JDeveloper 创建一个名为 MyLoanProcess 的 BPEL 流程。

大约 1 个小时

本教程包括下列主题:

将光标置于此图标上可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以根据 Internet 连接的不同,响应时间可能会比较慢。)

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

本教程演示了如何使用 Oracle JDeveloper 10 g BPEL Designer 设计贷款流 BPEL 流程。 MyLoanProcess 通过与客户贷款申请同步调用 CreditRatingService 执行信用检查。 然后由下面两个 Web 服务异步处理与信用等级一起(从 CreditRatingService )返回的贷款申请:

返回主题列表

同步调用 CreditRatingService 流程之后,首先使用一个信用评级值修改客户提供的贷款申请文档。 修改后的贷款文档由 UnitedLoan StarLoan Web 服务并行处理。 每个贷款提供商 Web 服务都会返回一个贷款意向,即接受贷款申请的文档或由客户进行处理。

返回主题列表

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

将 Oracle JDeveloper BPEL Designer 和 Oracle BPEL PM 服务器安装到名为 D:\JDeveloper\JDevBPEL 的目录。

通过在命令窗口中输入下列命令,将 CreditRatingService StarLoan UnitedLoan Web 服务部署到 Oracle BPEL PM 服务器中:

cd \JDeveloper\JDevBPEL\integration\bpm\orabpel\samples\demos\LoanDemo obant

注意: 通过执行 LoanDemo 目录中的 obant 脚本可部署名为 LoanFlow 的 BPEL 流程。 但为避免与本教程中创建的 MyLoanProcess BPEL 流程混淆,已从 BPEL 服务器删除了该 LoanFlow BPEL 流程。

要验证是否已部署 CreditRatingService StarLoan UnitedLoan 等 Web 服务,选择 开始 > 程序 > Oracle - OracleBPM > Oracle BPEL Process Manager 10.1.2 > BPEL Console 。 BPEL Console 在 Dashboard 页面的 Deployed BPEL Process 列中显示了这些 Web 服务的名称:

新工作区 MyLoanProcessWS 出现在 JDeveloper Applications - Navigator 窗格中的 Applications 文件夹下。 按 [Ctrl] + [S] 保存该新工作区:

注意: 您可以选择 File > Save 保存选择的文件,还可以选择 File > Save All 保存对该项目中所有文件所做的更改。

要在 Structure 窗格中查看 MyLoanProcess.bpel 的 BPEL 结构,单击 Diagram View 选项卡。

要将 XML Schema 文档导入该 BPEL 项目目录,选择 Structure 窗格中的 Project Schemas

单击 Import

Open 窗口中,使用 Location 域导航到 C:\Hands_on_Labs\bpel_jdev\support_files 目录(或者您将文件下载的临时目录)。 选择 LoanFlow.xsd

选择 Open

Applications - Navigator 窗格中,展开 Miscellaneous Files 节点,可看到 LoanFlow.xsd 文件成为了该项目中的一个文件:

在该 BPEL 流程的 Diagram View 窗口单击可看到 LoanFlow.xsd 条目位于 Structure 窗口中 Project Schemas 节点下。

该 XML 模式文件提供 loanApplication loanOffer 类型的定义,这两个类型分别用于定义该 BPEL 流程的输入和响应文档的结构。

选择 File > Save All 保存对该项目和工作区所做的更改。

Create BPEL Process Manager Server Connection - Step 1 of 3: Name 窗口的 BPEL Process Manager Connection Name 域中,输入 BPEL_conn

单击 Next

Create BPEL Process Manager Server Connection - Step 2 of 3: Connection 窗口中,接受 User Name Host Name Port Number 等域的默认值。

Password 域中输入 welcome

注意: Password 域中输入的字符显示为星号 ( * )。

单击 Next

WSDL Chooser 窗口下的 WSIL Explorer 节点中,展开 BPEL_conn process default 等节点。 选择 CreditRatingService

单击 OK

Create Partner Link 窗口中,单击 WSIL Browser 图标 。 在 WSDL Chooser 中,展开 BPEL_conn process default 节点。 选择 UnitedLoan

单击 OK

Create Partner Link 窗口中,单击 WSIL Browser 图标 。 在 WSDL Chooser 中,展开 BPEL_conn process default 等节点。 选择 StarLoan

单击 OK

Type Chooser 窗口中,展开 Message Types Partner Links creditRatingService CreditRatingService Message Types 。 选择 CreditRatingServiceRequestMessage

单击 Ok

CreditRatingService 创建输出变量,然后在 Structure 窗格中,选择 Process 子节点下的 Variables 。单击 Create

Create Variable 窗口的 Name 域中输入 crOutput 。 选择 Message Type ,其值为从 CreditRatingService Message Types 节点选择的 CreditRatingServiceResponseMessage

单击 OK

CreditRatingService 创建一个错误变量,选择 Variables ,然后单击 Create

Create Variable 窗口的 Name 域中输入 crError 。 选择 Message Type ,其值为从 CreditRatingService Message Types 树选择的 CreditRatingServiceFaultMessage

单击 OK

选择 File > Save All 保存对这些项目文件所做的更改。

UnitedLoan StarLoan Web 服务创建贷款申请输入变量,选择 Variables ,然后单击 Create

Create Variable 窗口的 Name 域中输入 loanApplication 。 选择 Message Type ,其值为从 UnitedLoanService Message Types 树选择的 LoanServiceRequestMessage

单击 OK

UnitedLoan Web 服务创建一个错误变量,选择 Variables ,然后单击 Create

Create Variable 窗口的 Name 域中输入 unitedOffer 。 选择 Message Type ,其值为从 UnitedLoanService Message Types 树选择的 LoanServiceResultMessage

单击 OK

StarLoan Web 服务创建贷款意向输出变量,选择 Variables ,然后单击 Create

Create Variable 窗口的 Name 域中输入 starOffer 。 选择 Message Type ,其值为从 StarLoanService Message Types 树选择的 LoanServiceResultMessage

单击 OK

选择 File > Save All 保存对这些项目文件所做的更改。

返回主题列表

设计贷款流流程

在创建该 BPEL 流程期间,您应该定期保存对 MyLoanProcess.bpel 文件和项目所做的更改。 每完成一个新 BPEL 活动的所有步骤都要选择 File > Save All 保存所做的更改。

本节包括下列子主题:

要命名新的 Scope ,双击 Diagram View 中的 Scope_1 。 在 Scope 对话框的 General 页面中,在 Name 域中输入值 GetCreditRating

单击 OK

接下来,创建一个复制规则,使得 SSN 值从 inputVariable 进入 crInput 变量,以传递给 CreditRatingService 。 为此,双击 Assign_1 活动,显示 Assign 属性:

单击 Copy 页面上的 Create

单击 Create Copy Rule 窗口 From 部分中的 XPath Query 域。 使用 XPath Building Assistant 输入 XML 路径 /ns1:loanApplication/ns1:SSN

然后按 [Ctrl]+[Space] 调用 XPath Building Assistant 并显示 inputVariable XML 模式类型的根元素:

双击 /ns1:loanApplication 元素。

检查 Assign 属性部分中的新复制规则的详细信息:

注意: 在您单击 Apply OK 之前, Invalid Settings 错误消息没有意义。 如果输入的详细信息有效,则清除错误消息。

单击 OK

注意: Fault Name 的名称必须为 NegativeCredit ,该名称与 CreditRatingService Web 服务的 WSDL 中定义的名称相同。 命名空间前缀 ns2 必须与用于限定该 BPEL 流程中 crError 变量的命名空间前缀相匹配。 如果您单击 Browse Variables 图标,则可以从 Variable Chooser 中选择 Fault Variable 值。

单击 OK

要添加表明不在 outputVariable 中批准贷款意所需的复制规则,双击 Assign_3 。 在 Assign 属性中。 然后单击 Create Copy 页面上添加第一个复制规则。

Create Copy Rule 窗口的 From 部分,通过下列操作将 Expression
设置为值 string('None - rejected because of bad credit')

Assign 属性中,单击 Create 添加第二个复制规则。

Create Copy Rule 窗口的 From 部分,使用 XPath Building Assistant Expression 域值设置为函数 false()

To 部分中,设置下列域值:

Assign 属性中,单击 Create 添加第三个复制规则。

Create Copy Rule 窗口的 From 部分,使用 XPath Building Assistant Expression 域值设置为函数 false()

To 部分中,设置下列域值:

Assign 属性中,单击 Create 添加第四个即最后一个复制规则。

Create Copy Rule 窗口的 From 部分,使用 XPath Building Assistant Expression 域值设置为 number(100)

To 部分中,设置下列域值:

要因为发生 NegativeCredit 错误而终止 BPEL 流程,将 Terminate 活动从 Component Palette 拖至 ns2:NegativeCredit Catch 分支中 badCreditClientCallback invoke 活动的后面:

注意: 单击 GetCreditRating 范围左上角的折叠图标 ,将使用的区域最小化。

选择 File < Save All 保存对该 BPEL 项目所做的更改。

要设置 assign 活动属性,双击 Assign_4 活动。单击 General 选项卡。 将 Name 域内容更改为 InitializeInput

单击 Copy 选项卡。

Copy 页面中,单击 Create 打开 Create Copy Rule 窗口。 使用下列值填充 From 部分中的域:

Switch Case 属性中,使用 XPath Building Assistant Expression 域中构建下列条件:

bpws:getVariableData('unitedOffer', 'payload', '/ns1:loanOffer/ns1:APR') > 
bpws:getVariableData('starOffer', 'payload', '/ns1:loanOffer/ns1:APR')

单击 Expression 域。 按 [Ctrl]+[Space] 调用 XPath Building Assistant

双击 XPath Building Assistant 列表中的 bpws:getVariableData 条目,其中带有三个 String 参数。

Expression 域中输入 bpws:getVariableData() 函数调用之后, XPath Building Assistant 为第一个 String 参数提供选项:

双击 unitedOffer

Expression 域中输入 unitedOffer 参数字符串值之后, XPath Building Assistant 将提供 payload 作为第二个 String 参数的值:

双击 payload

Expression 域中输入 payload 参数值之后, XPath Building Assistant 将提供 /ns1:loanOffe r 作为最后一个 String 参数的值:

双击 / ns1:loanOffer

Expression 域中输入 /ns1:loanOffer 参数值之后, XPath Building Assistant loanOffer 结构中提供一个子元素列表:

双击 ns1:APR 完成该条件表达式的第一部分。

要完成 Expression 域中的条件分支表达式,按 [Ctrl] + [Space] 调用 XPath Building Assistant 将下列函数调用插入该条件运算符的右侧:

bpws:getVariableData('starOffer', 'payload', '/ns1:loanOffer/ns1:APR')

单击 OK

如果 条件表达式为真,则处理它的分支。 因此,应该选择 StarLoan 贷款意向,这是因为它比 UnitedLoan 贷款意向更好(更低)。 要选择 starOffer ,将 Assign 活动拖至 分支的 Drop Activity Here 区域:

双击 Assign_4

要将 starOffer 复制到 outputVariable 中,在 Assign 属性中单击 General 选项卡。 在 Name 域中输入 selectStarOffer

单击 Copy 选项卡,然后单击 Create 打开 Create Copy Rule 窗口。

Create Copy Rule 窗口的 From 部分中,填充下列域值:

Assign 属性中,单击 General 选项卡。 在 Name 域中输入 selectUnitedOffer

单击 Copy 选项卡,然后单击 Create 打开 Create Copy Rule 窗口。

Create Copy Rule 窗口的 From 部分中,填充下列域值:

确认 ChooseLoanOffer 范围的 switch 活动在 分支中包含了 selectStarLoan 活动,在 分支中包含了 selectUnitedLoan 活动:

选择 File > Save All 保存对该 BPEL 项目所做的更改。

在 JDeveloper Applications - Navigator 中,右键单击 MyLoanProcess 项目节点:

选择 Deploy > BPEL_conn > Deploy to default domain

注意: 您要使用在本教程第一部分中创建的 BPEL Process Manager 服务器链接来部署该 BPEL 流程。 JDeveloper 会自动编译该 BPEL 流程。 在编译过程中,JDeveloper 会以 Java Archive(JAR 文件)的形式创建一个 BPEL 包,该包将被部署到 BPEL Process Manager 服务器中。

BPEL Processes 页面的 Initiate 选项卡上,在 loanApplication SSN HTML 表单域中输入 123454321 。 将所有其他域保持为空:

单击 Post XML Message 启动该 BPEL 流程。

要手动批准 StarLoan 意向,打开一个新的浏览器窗口。 输入下列 URL 启动 StarLoanUI Web 应用程序。

http://localhost:9700/StarLoanUI

单击 Assign APR Task 链接。

在已刷新的 Instances 页面上向下滚动到到 Flow 选项卡的底部,查看 ChooseLoanOffer 范围是否包含 selectUnitedOffer assign 活动:

单击 client (onResult) 链接或图标,查看返回给该客户的贷款意向文档。

Activity Audit Trail 窗口显示 client (onResult) outputVariable 内容:

United Loan 显示在 元素中,其中的 APR 元素值为 5.7

关闭 Activity Audit Trail 窗口。

BPEL Processes 页面的 Initiate 选项卡上,在 loanApplication SSN HTML 表单域中输入 012345678 。 将所有其他域保持为空:

CreditRatingService Web 服务生成一个 NegativeCredit 错误,这是因为 loanApplication 的 SSN 值开头为零。

单击 Post XML Message 启动该 BPEL 流程。

Instances Flow 选项卡上,向下滚动直到从 creditRatingService (process) 一直看到 terminate 活动:

creditRatingService (process) 活动以红色标出,表示发生了错误。

单击 creditRatingService (process) 活动链接或图标详细查看生成的错误。

creditRatingService (process) Activity Audit Trail 窗口显示抛出了 NegativeCredit 错误:

注意: 元素包含文本值 Bankruptcy Report

关闭 Activity Audit Trail 窗口。

client (onResult) 活动的 Activity Audit Trail 窗口中, outputVariable 包含一个 元素,其中包含了一个值为 None - rejected because of bad credit 元素,以及一个值为 false 元素。

的所有其他子元素都按 Assign_3 活动的指定进行了设置。 该 BPEL 流程已被设计到该流程中的错误处理所终止。

关闭 Activity Audit Trail 窗口。

关闭 JDeveloper BPEL Designer。

关闭包含 BPEL Console 的浏览器窗口。

启动一个命令行窗口,输入下列命令关闭 BPEL Process Manager 服务器:

cd \JDeveloper\JDevBPEL\integration\bpm\orabpel\bin shutdownorabpel.bat