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

日期: 2008-07-14 作者:jameshu999 来源:TechTarget中国 英文

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


  其基本关系如下图所示: 





 
  数据类型和MessageType的声明    


  在对数据类型的声明,一般在创建BPEL工程的时候会自动在Schema目录下生成一个,比如“VactationApplyProcess.xsd”文件,如下所示: 



       


  在VactationApplyProcess.xsd中默认会构造一个Request和Resonse元素,如下所示:(其中蓝色斜字体表示是为此流程扩展的) view plaincopy to clipboardprint?
<schema attributeFormDefault=”unqualified”  
  
      elementFormDefault=”qualified”  
  
      targetNamespace=”http://>  
  
      <element name=”VacationApplyProcessProcessRequest”>  
  
          <complexType>  
  
              <sequence>  
  
                  <element name=”input” type=”string”/>  
  
              </sequence>  
  
          </complexType>  
  
      </element>  
  
      <element name=”VacationApplyProcessProcessResponse”>  
  
          <complexType>  
  
              <sequence>  
  
                  <element name=”result” type=”string”/>  
  
              </sequence>  
     
          </complexType>  
  
      </element>  
  
      <element name=”VacationApplyProcessForm”>  
  
          <complexType>  
  
              <sequence>  
  
                 <element name=”Apply_User” type=”string”/>  
  
                 <element name=”Apply_Reason” type=”string”/>  
  
                 <element name=”Approve_Manager” type=”string”/>  
  
                 <element name=”Approve_Comment” type=”string”/>  
  
                 <element name=”Approve_Status” type=”boolean”/>  
  
            </sequence>  
  
      </complexType>  
  
      </element>     
  
  <schema>  
 
  <schema attributeFormDefault=”unqualified”


 elementFormDefault=”qualified”


 targetNamespace=”http://>


 


 <element name=”VacationApplyProcessProcessRequest”>


  <complexType>


   <sequence>


    <element name=”input” type=”string”/>


   </sequence>


  </complexType>


 </element>


 <element name=”VacationApplyProcessProcessResponse”>


  <complexType>


   <sequence>


    <element name=”result” type=”string”/>


   </sequence>


  </complexType>


 </element>


    <element name=”VacationApplyProcessForm”>


     <complexType>


      <sequence>


                 <element name=”Apply_User” type=”string”/>


                 <element name=”Apply_Reason” type=”string”/>


                 <element name=”Approve_Manager” type=”string”/>


                 <element name=”Approve_Comment” type=”string”/>


                 <element name=”Approve_Status” type=”boolean”/>


      </sequence>


   </complexType>


    </element> 


  <schema>在与BPEL对应的VactationApplyProcess.wsdl文件中,则声明了MessageType: view plaincopy to clipboardprint?
<types>  
  
                     <schema >  
  
        <import namespace=”http:// />  
  
    </schema>  
  
  </types>  
  
  <message name=”VacationApplyProcessRequestMessage”>  
  
    <part name=”payload”   element=”client:VacationApplyProcessProcessRequest”/>  
  
  </message>  
  
  <message name=”VacationApplyProcessResponseMessage”>  
  
    <part name=”payload”   element=”client:VacationApplyProcessProcessResponse”/>  
  
  </message>  
  
  <message name=”VacationApplyProcessFormInputMessage”>  
  
      <part name=”payload” element=”client:VacationApplyProcessForm”/>  
  
  </message>  


  <types>


                     <schema >


  <import namespace=”http:// />


 </schema>


  </types>


  <message name=”VacationApplyProcessRequestMessage”>


 <part name=”payload”   element=”client:VacationApplyProcessProcessRequest”/>


  </message>


  <message name=”VacationApplyProcessResponseMessage”>


 <part name=”payload”   element=”client:VacationApplyProcessProcessResponse”/>


  </message>


  <message name=”VacationApplyProcessFormInputMessage”>


      <part name=”payload” element=”client:VacationApplyProcessForm”/>


  </message>      


  当然,开发人员可以定义自己的schema。但定义的schem必须放于%Project_Home%/bpel目录下才能够被schema目录识别。 Process Variables的声明    


  为了便于对“请假单”流程中变量进行统一声明,声明了一个ApplyForm的variable,类型是MessageType,指明到刚刚在wsdl定义的message。其实,就是索引到我们在schema中声明的表单元素。   



  一般来讲,流程变量并不一定需要很多很复杂。因为Oracle BPEL在设计流程的时候,会为每一个Human Task产生一个相应的全局的variable,来绑定到其taskservice:taskMessage上,根据这个variable可以获取到客户端所提交进来的数据。


  原文出处:http://gocom.primeton.com/blog11112_16519.htm

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 保险公司如何能从BPEL中获益

    对于保险业整合不同系统是一件寻常的工作。但保险公司经常会面临监管条例改变和应对不同的顾客需求。为了解决这些系统问题,软件专家正在使用一种强大的工具——BPEL。

  • 2013年业务流程执行语言(BPEL)现状

    在SOA领域中,BPEL拥有属于自己的集成系统和自动化工作流,为协调完全异构系统而提供一致的流程。

  • 如何开发BPEL复合应用

    大多数软件架构师对应用的组件化、SOA和工作流或者服务总线流程非常熟悉,也对组合应用如何将这些基本元素结合在一起非常熟知。

  • 如何在SOA中执行BPEL测试?

    几乎所有面向服务架构(SOA)用户都在使用业务流程执行语言(BPEL)。作为编排粗粒度的业务流程流工具,BPEL实际上是行业的标准,但是还是会引起测试问题。