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中国
作者
相关推荐
-
保险公司如何能从BPEL中获益
对于保险业整合不同系统是一件寻常的工作。但保险公司经常会面临监管条例改变和应对不同的顾客需求。为了解决这些系统问题,软件专家正在使用一种强大的工具——BPEL。
-
2013年业务流程执行语言(BPEL)现状
在SOA领域中,BPEL拥有属于自己的集成系统和自动化工作流,为协调完全异构系统而提供一致的流程。
-
如何开发BPEL复合应用
大多数软件架构师对应用的组件化、SOA和工作流或者服务总线流程非常熟悉,也对组合应用如何将这些基本元素结合在一起非常熟知。
-
如何在SOA中执行BPEL测试?
几乎所有面向服务架构(SOA)用户都在使用业务流程执行语言(BPEL)。作为编排粗粒度的业务流程流工具,BPEL实际上是行业的标准,但是还是会引起测试问题。