Perform节点表示工作流中的一点,在这一点上要编写自定义Java代码。在向工作流添加Perform节点时,在JWF文件中就会创建一个JWF文件。随后要在Source View中定制这个方法的签名。
注:还可以在工作流的其他位置编写自定义Java代码。要了解JWF文件中的代码是如何组织的,参见工作流源代码。
在Decision节点中创建Perform节点
1. 在Application窗格中,单击 RequestQuote.jwf以确保工作流显示在Design View中。
2. 单击Palette中的 Perform。然后将Perform节点拖到Design View中的工作流上,将它释放到工作流中Sales Tax Calculation Needed? (Decision)节点的默认分支上。
Design View会更新以包含Perform节点,如下图所示:
3. 单击Perform节点以打开节点构造器,在这里可以命名节点及其相关的Java方法。
a. 双击Perform并输入No Sales Tax以改变节点的名字。
b. 在Java Method 域中输入setNoSalesTax。
c. 单击Apply,然后单击View Code。JWF文件的源代码中添加了perform方法的部分显示在Source View中。
d. 可以用任何Java代码任意定制这个perform方法。在本教程中,我们只是将taxRate值设置为零。为此,编辑setNoSalesTax()方法,使得方法与下面代码段相同:
public void setNoSalesTax() throws Exception
{
taxRate = (new Float(0)).floatValue();
}
4. 单击Design View选项卡
5. 单击Apply,然后单击Perform节点构造器中的Close。JWF文件会更新以反映在节点构造器中所做的改变。
这样就完成了对工作流的Perform节点和Decision节点的设计。现在有了一个简单的工作流,可以在进入下一步向工作流中添加计算价格和可用性数据的业务逻辑之前运行并测试它。
测试工作流
要运行及测试到目前为止创建的工作流,需要完成下面的步骤:
1. 如果WebLogic服务器还没有运行的话,就启动它。从WebLogic Workshop菜单中选择Tools —> WebLogic Server —> Start WebLogic Server 。
当WebLogic服务器运行的时候,在WebLogic Workshop可视化开发环境底部的状态栏上可以看到下面的指示:
2. 从WebLogic Workship菜单中单击Build —> Build Application。WebLogic Workship会编译应用程序。
3. 编译完成时,单击菜单栏上的开始按钮 以运行工作流。这会启动一个Web浏览器以显示Test View,通过它可以用测试输入值测试工作流。
4. 在Test Form页提供的文本框中,输入工作流会作为客户请求的一部分接收的数据。在这里,输入下列XML消息:
<?xml version="1.0"?>
<quoteRequest xmlns="http://www.example.org/request">
<customerName>Acme Inc</customerName>
<shipAddress street="2315 North First" city="San Jose" state="CA" zip="95131"/>
<widgetRequest>
<widgetId>12</widgetId>
<quantity>10</quantity>
</widgetRequest>
<widgetRequest>
<widgetId>134</widgetId>
<quantity>345</quantity>
</widgetRequest>
<widgetRequest>
<widgetId>211</widgetId>
<quantity>100</quantity>
</widgetRequest>
</quoteRequest>
注:在测试XML消息中,state="CA"。即订单发送到的州是CA。这个XML消息用于使执行流程通过Sales Tax Calculation Needed? 节点的Yes分支。
5. 单击以工作流的方法名 (quoteRequest) 标记的按钮以调用这个方法,并以粘贴的XML作为方法的输入。而Test Form会刷新以在Message Log中显示请求参数和工作流响应的汇总:
Message Log中的项对应于工作流的方法:
· 开始工作流的quoteRequest方法。
· 工作流对taxCalculation Web服务的的调用: taxCalculation.requestTaxRate
· 服务对工作流的响应: taxCalculation.returnTaxRate
· Conversation ID—工作流完成时,在Message Log中显示与下面类似的消息:
Conversation conversationID is finished.
其中conversationID表示工作流中调用quoteRequest方法时生成的ID。
6. 可以在Message Log中单击任何方法以打开该调用的细节。例如,如果单击quoteRequest,那么Service Request面板就显示调用这个方法时客户(你)发送的XML消息。如果单击taxCalculation.returnTaxRate,那么可以看到来自taxCalculation服务的响应——在这里,是根据输入值CA计算的税率。
遵循这些步骤可以运行并测试包含Start节点和Decision节点的简单工作流,在运行时,它有一个通过控件对Web服务的异步调用。