本教程讲述了如何使用 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 。
如果
双击 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 活动在
选择 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
显示在
关闭 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 错误:
注意:
关闭 Activity Audit Trail 窗口。
在
client (onResult)
活动的
Activity Audit Trail
窗口中,
outputVariable
包含一个
关闭 Activity Audit Trail 窗口。
关闭 JDeveloper BPEL Designer。
关闭包含 BPEL Console 的浏览器窗口。
启动一个命令行窗口,输入下列命令关闭 BPEL Process Manager 服务器:
cd \JDeveloper\JDevBPEL\integration\bpm\orabpel\bin shutdownorabpel.bat