jameshu999

构客网首页  博客  论坛

 
  SOA我有话说
  本文的标签
SOA (收录4249篇)BPEL (收录146篇)SOA我有话说 (收录205篇)SOA实践 (收录84篇)Oralce (收录5篇)
  用户信息
 
帐号:  新手必读
密码: 保存密码
 
  分类列表
全部类别(133 篇)
产品管理(7 篇)
SOA研究(10 篇)
BPM研究(14 篇)
工作流研究(24 篇)
Portal研究(8 篇)
技术架构(14 篇)
软件应用(15 篇)
研发感悟(13 篇)
OpenWorkflow(14 篇)
随笔随感(14 篇)
  按月归档
2003年-10月(4 篇)
2004年-09月(2 篇)
2004年-12月(6 篇)
2005年-07月(17 篇)
2006年-08月(21 篇)
2006年-12月(13 篇)
2007年-07月(33 篇)
2007年-10月(14 篇)
2008年-02月(22 篇)
2008年-11月(1 篇)
  SOA2007 - SOA实践
我们何时迈向SOA
——SOA在中国的整体发展现状究竟如何?
我们如何迈向SOA
——中国企业如何迈出实施SOA的第一步?
我们应采用何种技术
——SOA国际标准SCA/SDO的具体内涵?
我们还需要何种技能
——SOA将如何改变系统架构设计以及项目管理过程?

Oracle BPEL的研究(5)流程变量和Human Task数据交互说明

发布时间:2008年07月11日 作者:jameshu999

阅读次数:1252次 类别:工作流研究 永久链接 Trackback 
参加SOA我有话说

Oracle BPEL Workflow Service的“Human Task的数据交互”稍微有些复杂,有几个地方要注意,其基本处理思路围绕:数据类型和Message Type的声明;流程变量的声明;任务参数的定义;任务参数与流程变量之间的映射;任务提交后数据的处理和提取。

Oracle BPEL Workflow Service的“Human Task的数据交互”稍微有些复杂,有几个地方要注意,其基本处理思路围绕:数据类型和Message Type的声明;流程变量的声明;任务参数的定义;任务参数与流程变量之间的映射;任务提交后数据的处理和提取。
       其基本关系如下图所示:
 
类型
说明
Schema
一般是在shema目录下的.xsd文件,用于声明流程中所涉及的数据类型
Client MessageType
一般是在bpel流程所对应的client partner link所对应的wsdl中声明,用于定义与外界交互的消息类型。
BPEL Variables
流程全局变量,可以是简单类型、复杂类型和消息类型
Customer Variable
开发人员自定义的流程变量,用于处理流程活动之间的数据交互和转换
Task Message Variable
每个Human Task都有产生一个全局的变量,用于索引到任务消息对象,从而可以在其它活动获取与此human task相关的一些信息,包括任务实例的状态信息、任务提交的数据等等。其中表单提交的数据,都会写在“/task:task/task:payload”这个元素下,比如“/task:task/task:payload/task:ApplyUser”。
Human Task Parameter
Human Task会声明当前任务相关的参数,这些参数需要在Display Form中被显示或引用。在BPEL流程中,每个Human Task的参数都需要告知其数据是从哪个bpel variable取值的(或者初始值为空)。
  数据类型和MessageType的声明     在对数据类型的声明,一般在创建BPEL工程的时候会自动在Schema目录下生成一个,比如“VactationApplyProcess.xsd”文件,如下所示:        VactationApplyProcess.xsd中默认会构造一个RequestResonse元素,如下所示:(其中蓝色斜字体表示是为此流程扩展的)
  1. <schema attributeFormDefault="unqualified"  
  2.   
  3.     elementFormDefault="qualified"  
  4.   
  5.     targetNamespace="http://xmlns.oracle.com/VacationApplyProcess"  
  6.   
  7.     xmlns="http://www.w3.org/2001/XMLSchema">  
  8.   
  9.        
  10.   
  11.     <element name="VacationApplyProcessProcessRequest">  
  12.   
  13.         <complexType>  
  14.   
  15.             <sequence>  
  16.   
  17.                 <element name="input" type="string"/>  
  18.   
  19.             </sequence>  
  20.   
  21.         </complexType>  
  22.   
  23.     </element>  
  24.   
  25.     <element name="VacationApplyProcessProcessResponse">  
  26.   
  27.         <complexType>  
  28.   
  29.             <sequence>  
  30.   
  31.                 <element name="result" type="string"/>  
  32.   
  33.             </sequence>  
  34.   
  35.         </complexType>  
  36.   
  37.     </element>  
  38.   
  39.     <element name="VacationApplyProcessForm">  
  40.   
  41.         <complexType>  
  42.   
  43.             <sequence>  
  44.   
  45.                  <element name="Apply_User" type="string"/>  
  46.   
  47.                  <element name="Apply_Reason" type="string"/>  
  48.   
  49.                  <element name="Approve_Manager" type="string"/>  
  50.   
  51.                  <element name="Approve_Comment" type="string"/>  
  52.   
  53.                  <element name="Approve_Status" type="boolean"/>  
  54.   
  55.             </sequence>  
  56.   
  57.       </complexType>  
  58.   
  59.     </element>     
  60.   
  61. <schema>  
在与BPEL对应的VactationApplyProcess.wsdl文件中,则声明了MessageType
  1. <types>  
  2.   
  3.                      <schema xmlns="http://www.w3.org/2001/XMLSchema">  
  4.   
  5.         <import namespace="http://xmlns.oracle.com/VacationApplyProcess"    
  6.   
  7.                    schemaLocation="VacationApplyProcess.xsd" />  
  8.   
  9.     </schema>  
  10.   
  11. </types>  
  12.   
  13.   
  14.   
  15. <message name="VacationApplyProcessRequestMessage">  
  16.   
  17.     <part name="payload" element="client:VacationApplyProcessProcessRequest"/>  
  18.   
  19. </message>  
  20.   
  21. <message name="VacationApplyProcessResponseMessage">  
  22.   
  23.     <part name="payload" element="client:VacationApplyProcessProcessResponse"/>  
  24.   
  25. </message>  
  26.   
  27. <message name="VacationApplyProcessFormInputMessage">  
  28.   
  29.     <part name="payload" element="client:VacationApplyProcessForm"/>  
  30.   
  31. </message>  
       当然,开发人员可以定义自己的schema。但定义的schem必须放于%Project_Home%/bpel目录下才能够被schema目录识别。 Process Variables的声明      为了便于对“请假单”流程中变量进行统一声明,声明了一个ApplyFormvariable,类型是MessageType,指明到刚刚在wsdl定义的message。其实,就是索引到我们在schema中声明的表单元素。  
       一般来讲,流程变量并不一定需要很多很复杂。因为Oracle BPEL在设计流程的时候,会为每一个Human Task产生一个相应的全局的variable,来绑定到其taskservice:taskMessage上,根据这个variable可以获取到客户端所提交进来的数据。

本文参加了“SOA中国的关键任务”博客大赢家,评论文章即可参与活动,赢取万元奖金!

 评论 查看全部评论