wf8

来源:互联网 发布:固态硬盘优化设置不了 编辑:程序博客网 时间:2024/05/22 10:38
作为Parallel节点设计工作的结果,在工作流退出For Each节点时,价格报价数据赋值给priceList变量(参见设计Create PriceList Node),而可用数量数据赋值给availList变量(参见设计Creat AvailList节点)。priceList和availList变量的数据类型都是XmlObjectList,就是说,它们是non-typed的一组XML数据。

在这一步中,首先将priceList和availList变量的数据从non-typed XML data (XmlObjectList)转换为typed XML (即转换为对项目中提供的 XML Schema有效的XML)。然后,结合 XML-typed 的价格和可用性数据以生成一个报价文档,这个文档构成了工作流对调用它的客户的响应。 关于Transformation控件的说明

WebLogic Workshop允许以下面的步骤创建Transformation控件:

· 通过工作流的节点构造器——您已经熟悉了以这种方式创建Transformation控件和transformation方法。在需要将数据类型从Request for Quote消息映射为taxCalculation控件的输入时创建Transformations.dtf(要回顾有关内容,参见从工作流中调用Tax Calculation Web服务)。然后在设计好的Parallel节点中的Control节点上的Transformations.dtf上添加几种transformation方法。

· 从WebLogic Workshop菜单中选择File —> New —> Choose File Type —> Workflow DTF File。以这种方式创建的DTF文件可以在工作流中通过Control节点调用。

要在这一步中创建报价,设计工作流中的Control节点调用在项目中提供的下列Transformation控件: PriceAvailTransformations.dtf 和TutorialJoin.dtf。

注:对如何创建这些DTF文件的描述超出了本教程的范围。不过要了解如何创建本教程中使用的TutorialJoin.dtf Transformation控件,可参见教程:构建第一个数据转换。

在这一步中为客户创建一个报价文档,必须完成下列任务:

1. 将价格列表转换为XML报价文档

2. 将可用性列表转换为XML报价文档

3. 结合价格和可用性报价

 

将价格列表转换为XML报价文档

完成下列任务:

· 创建工作流控件节点

· 创建工作流变量

· 设计与转换控件的交互

创建工作流控件节点

1. 在Palette中,单击 Control Send with Return,并将节点拖到Design View中的工作流上,将它放到For Each块外面紧靠它的位置。

2. 右击Control Send with Return并从下拉菜单中选择Rename。输入Convert PriceList to PriceQuote XML作为节点名。

创建工作流变量

创建工作流变量,工作流会在将XmlObjectList (non-typed XML) 转换为 typed XML后,将它赋值这个变量:

1. 在Variables选项卡中,单击Add —> Variable 以显示Create Variable 对话框。

2. 在 Variable Name域中输入priceQuote。

3. 在 Select Variable Type域中单击XML Types列表中priceQuote.xsd旁边的+,然后选择列表中的priceQuote。Variable Type 域中会填入org.example.price.PriceQuoteDocument。



4. 单击OK以保存新变量。

设计与Transformation控件的交互

在这一步中,设计节点将(作为For Each循环的枚举的结果创建的)价格列表转换为数据类型为typed-XML的变量。为此,使用PriceAvailTransforms Transformation控件上的方法。

1. 双击 Convert PriceList to PriceQuote XML节点以打开其节点构造器。节点构造器会在General Settings中打开。

2. 单击Control域旁边的箭头以显示项目中可用控件实例的列表。

3. 选择PriceAvailTransforms。Method面板中会显示这个Transformation控件上的ynchronous methods 列表。

4. 从列表中选择下列方法:

 

PriceQuoteDocument convertPriceListtoXML()

5. 单击Send Data以打开节点构造器中的第二个选项卡。

Method Expects 域中填入了PriceAvailTransforms Transformation控件上的convertPriceListtoXML() 方法所期待的数据类型。


注:PriceAvailTransforms控件上的convertPriceListtoXML()方法设计为实现两个目的:首先,将XmlObjectList价格数据转换为 typed XML,然后将客户名、发货地址和widgets(价格列表)包括在一个工作流变量中。convertPriceListtoXML() 方法接收XmlObjectList中的价格列表和QuoteRequestDocument中的客户名和发货地址。要了解有关PriceAvailTransforms控件的更多内容,参见有关这个节点的转换。

6. 在Send Data选项卡中,单击 Select Variable以显示项目中的变量。从变量列表中选择priceList (XmlObjectList)

7. 再次单击Select Variable,并从变量列表中选择 requestXML (QuoteRequestDocument)

注意在Select Variable窗格中选择的变量数据类型与convertPriceListtoXML()方法的输入参数所预期的数据类型相匹配。

 


8. 单击Apply。

9. 单击Receive Data以打开节点构造器中的第三个选项卡。

Method Returns域中填入了 PriceAvailTransforms Transformation 控件上的 convertPriceListtoXML() 方法返回的数据类型:PriceQuoteDocument。

10. 在Receive Data选项卡上,单击Select Variable以显示项目中的变量。

11. 选择已创建的、用以接收该数据的变量: priceQuote (PriceQuoteDocument)

12. 单击Apply,然后单击Close以保存所做的规定并关闭节点构造器。

这一步完成了对Convert PriceList to PriceQuote XML节点的设计。在运行时,报价数据(为XML格式)以及客户名和发货地址赋值给priceQuote变量。

关于该节点上转换的说明

在前面步骤中PriceAvailTransforms控件上的convertPriceListtoXML()方法负责创建报价XML数据的工作。

简单说,Transformation方法的输入包括由客户发送的原始数据(在requestXML变量中)和由PriceProcessor控件在完成For Each节点中的枚举后返回的价格数据(在priceList变量中)。

convertPriceListtoXML()方法从requestXML变量中提取客户名和发货地址,从priceList变量中提取widget ID和价格清单,并将数据映射到新变量(priceQuote)。

作为练习,请读者查看PriceAvailTransforms控件上的这个和其他转换方法。例如,可以双击Application窗格中的 PriceAvailTransforms.dtf以在Design View中显示Transformation控件。右击convertPriceListtoXML方法,并选择Configure XQuery Transform Method以打开映射工具。下图显示了映射工具中的 convertPriceListtoXML() 方法的映射。

 



单击映射工具中的XQuery选项卡以查看相应的XQuery

相关主题

数据转换指南

教程:构建第一个数据转换

 

将可用性列表转换为XML报价文档

完成下列任务

· 创建工作流控件节点

· 创建工作流变量

· 设计与转换控件的交互

创建工作流控件节点

1. 在Palette中,单击 Control Send with Return,并将它拖到Design View中的工作流上,释放到紧靠边onvert PriceList to PriceQuote XML节点下面的位置。

2. 重命名这个节点为: Convert AvailList to AvailQuote XML。



创建工作流变量

创建一个工作流变量,工作流在将可用性数据类型转换为XML类型后会赋值给这个变量:

1. 在Variables选项卡中,单击 New -> Variable以显示对话框。

2. 在Variable Name 域中输入availQuote

3. 在Select Variable Type 域中,单击 XML Types中的availQuote.xsd 旁边的+以展开列表,然后选择列表中的availQuote。 Variable Type域中会填入org.example.price.AvailQuoteDocument。



4. 单击OK以保存新的变量。

设计与Transformation控件的交互

在这一步中,设计节点为将AvailProcessor控件(在For Each循环的每一次枚举)返回的可用性数据附加到一个变量中。为此,使用PriceAvailTransforms Transformation控件中的方法。

1. 双击Convert AvailList to AvailQuote XML节点以打开其节点构造器。会在General Settings选项卡中打开并显示节点构造器。

2. 单击Control域旁边的箭头以显示项目中可用的控件实例的下拉列表。

3. 选择PriceAvailTransformsMethod面板中会显示这个Transformation控件的synchronous methods列表。

4. 从列表中选择下列方法:
AvailQuoteDocument convertAvailListtoXML()


5. 单击Send Data以打开节点构造器中的第二个选项卡。
Method Expects域中填入了PriceAvailTransforms控件上的convertAvailListtoXML() 方法所期待的数据类型:XmlObjectList。

6. 在Send Data选项卡中,单击Select Variable 以显示项目中的变量。从变量列表中选择availList (XmlObjectList) 。
注意所选择的变量的数据类型与convertAvailListtoXML()方法的输入参数所期待的数据类型相匹配。
注:要了解有关转换方法convertAvailListtoXML()的内容,参见有关该节点上的转换的说明。

7. 单击Apply。然后单击Receive Data以在节点构造器中打开第三个选项卡。
在Receive Data选择卡中,Method Returns域已经填入了由convertAvailListtoXML()方法返回的数据类型:AvailQuoteDocument。

8. 单击 Select Variable并选择创建好的、接收该数据的变量:availQuote (AvailQuoteDocument)。

9. 单击Apply,然后单击Close以保存所做的规定并关闭节点构造器。

这一步完成了对Convert AvailList to AvailQuote XML节点的设计。在运行时,XML格式的可用性报价数据将赋值给availQuote变量。
关于该节点上的转换的说明

PriceAvailTransforms控件上的 convertAvailListtoXML()方法负责创建可用性报价XML数据的任务。convertAvailListtoXML()的输入是由AvailProcessor控件在For Each节点的枚举完成后返回的可用性数据。

可以双击Application窗格中的PriceAvailTransforms.dtf以在Design View中显示转换控件。右击convertAvailListtoXML()方法,并选择Configure XQuery Transform Method以打开映射工具。下图显示了映射工具中convertAvailListtoXML()方法的映射:



上图显示了将类型为XmlObjectList的变量中的数据(包含一组重复的non-typed XML数据)映射为XML-typed变量中的重复元素。注意要实现这种映射,目标schema中的重复元素必须是根元素的单个子元素--在这里,availRequest是重复元素,并且它是availQuote元素的单一子元素。单击映射工具中的XQuery选项卡以查看相应的XQuery。

结合价格和可用数量

完成下列任务:

· 在项目中创建TutorialJoin控件的实例
· 创建工作流控件节点
· 创建工作流变量
· 设计与Transformation控件的交互

在项目中创建TutorialJoin控件实例

在Tutorial项目中提供了TutorialJoin.dtf控件。完成下列任务以将这个控件的实例添加到工作流中。

1. 单击Controls选项卡上的Add并选择Transformation。将会显示Insert Control对话框。

2. 在 Insert Control对话框中:

a. 在Step 1中,输入JoinQuoteTransform作为这个控件的变量名。



b. 在Step 2中,确保选中了下列选项: Use a Transformation control already defined by a DTF file

c. 单击DTF file域旁边的Browse,选择/Tutorial/requestquote 文件夹中的TutorialJoin.dtf,然后单击Select以关闭文件浏览器。

3. 单击Create以关闭 Insert Control 对话框。

在项目中创建了一个名为JoinQuoteTransformTransformation控件实例,并显示在Controls选项卡中。

4. 选择 File -> Save以保存所做的工作。

可以在Controls选项卡中查看Transformation控件及它们的方法,它们这时应该与下图相同:



创建工作流节点

1. 在Palette中,单击 Control Send with Return,并将它拖到Design View中的工作流上,释放到紧靠 Convert AvailList to AvailQuote XML节点的下面的位置。

2. 重命名这个节点为:Combine Price and Avail Quotes

创建工作流变量

创建工作流变量,工作流将会把返回给调用工作流的客户的、结合好的报价赋值给这个变量。

1. 在Variables选项卡中,单击Add -> Variable 以显示Create Variable 对话框。

2. 在 Variable Name域中输入Quote

3. 在Select Variable Type域中,单击 XML Types中Quote.xsd旁边的+,然后选择列表中的quote。



Variable Type域中会填入org.example.quote.QuoteDocument

4. 单击OK以保存新变量

设计与Transformation控件的交互

在这一步中,设计工作流为调用JoinQuoteTransform控件上的 join (PriceQuoteDocument arg1, AvailQuoteDocument arg 2, float arg3) 方法。这个join方法负责将从不同的系统返回的数据结合在一起并创建一个将返回给工作流客户的XML响应文档(quote)的工作。

1. 双击Combine Price and Avail Quotes节点以打开其节点构造器。节点构造器会在General Settings中打开。

2. 单击Control域旁边的箭头并选择JoinQuoteTransform

3. 在Method面板中选择下列方法:

join (PriceQuoteDocument arg1, AvailQuoteDocument arg 2, float arg3)

4. 单击Send Data 以打开节点构造器中的第二个选项卡。

Method Expects域中填入了JoinQuoteTransform控件上的join方法所期待的数据类型,如下图所示:




5. 在Send Data选项卡中:

a. 单击Select Variable并选择priceQuote (PriceQuoteDocument)

b. 再次单击 Select Variable,并选择availQuote (AvailQuoteDocument)

c. 第三次单击Select Variable ,并选择 taxRate (float)

注意选择变量的顺序要使其数据类型与join()方法的输入参数所其待的数据类型相匹配。

完成了这些工作流的设计工作后,指定向join()方法提供输入数据的变量将包含下列数据:

d. 由工作流中的For Each循环中的PriceProcessor服务返回的报价数据赋值给priceQuote变量。

e. 由工作流中的For Each循环中的AvailProcessor服务返回的可用数量数据赋值给availQuote变量。

f. 从taxCalculation服务返回给工作流的、根据发货地址确定的报价所用的销售税率赋值给taxRate变量。

6. 单击Apply,然后单击Receive Data 以打开节点构造器中的第三个选项卡。

在Receive Data选项卡中,Method Returns域填入了由join()方法返回的数据类型:QuoteDocument

7. 单击Select Variable,然后选择为包含该数据所创建的变量:Quote (QuoteDocument)

8. 单击Apply,然后单击Close以保存所做的规定并关闭节点构造器。

这一步完成了对Combine Price and Avail Quotes节点的设计。在运行时,XML格式的可用数量数据将赋值给Quote变量。

要完成这一工作流教程,唯一剩下的工作是将报价写入文件系统(一个可选的步骤),并在工作流中创建Client Response节点。工作流从Client Response节点向工作流的客户返回所创建的报价。