化。缺省值为no。
当调用的操作是同步的请求/响应时,一个 pattern 属性被用来指出相关性是应用到出站的(请求)消息(pattern=“out”)还是应用到入站的(响应)消息(pattern=“in”)还是应用到两者(pattern=“out-in”)。
3. catch动作
被定义的每个 catch 动作都能拦截某种故障(由全局唯一的故障 QName 和有与该故障关联的数据的变量来定义)。如果没有故障名,那么 catch 将拦截全部有适合类型的故障数据变量的故障。故障变量是可选的,这是因为故障可能没有与之关联的额外数据。如果只有故障QName,那么 catch动作将拦截全部有适合类型的故障QName的故障。
Activity,catch子句下的活动,这个是唯一的,但是activity里面是可以嵌套的。
4. catchall动作
activity
catchAll 子句可被用来捕获所有未被特定的 catch 处理程序捕获的故障,可有可无。 Activity,catchAll子句下的活动,这个是唯一的,但是activity里面是可以嵌套的。
5. compensationHandler动作
补偿处理程序,在目前的 BPEL4WSv1.1 版本中,补偿处理程序仅仅是补偿活动的包装,即补偿处理程序里的activity就是补偿活动,补偿处理程序(一旦被安装后)可被看作完全独立的操作,业务流程实例的全局状态既不影响它也不受它的影响。它只影响外部的实体。
Activity,compensationHandler子句下的活动,这个是唯一的,但是activity里面是可以嵌套的。 5.1.2
语言结构:
receive:主要用于(接收请求)等待客户端通过发送消息调用业务流程。 除了活动的标准属性(见A)和标准元素(见B)之外,receive活动还包含:
Page 22 项目名称:
1. 基本属性如下:
A. createInstance 流程实例创建与否,值为yes时,创建流程实例,值为no时不创建,缺省
值为no;
B. partnerLink=\描述两个web services之间的接口关系; C. portType=\端口类型; D. operation=\调用操作; E. variable=\变量;
2. 相关集
相关集属性组:correlation:单个相关集;set=“ncname”:相关集集合名称;initiation:是否实例化该相关集,值为yes时,相关集被实例化,为no时,不实例化。缺省值为no。 业务流程通过 receive 活动和相应的 reply 活动把服务提供给它的伙伴。receive 活动指定了它期望从哪个伙伴那里接收,还指定了它期望伙伴调用的端口类型和操作。receive活动可以用来实例化一个流程,即把 createInstance 属性设置为 \,该属性的缺省值是no。一个业务流程实例绝不可以为相同的伙伴、portType 和操作同时启用两个 receive 活动,如果执行该操作则抛出标准故障 bpws:conflictingReceive。receive 是阻塞操作,其含义是它的执行在流程实例接收到匹配的消息后才完成。 5.1.3 语言结构: reply:主要用于生成同步操作的响应。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,reply活动还包含: 1. 基本属性如下: A. partnerLink=\描述两个web services之间的接口关系; B. portType=\端口类型; C. operation=\调用操作; D. variable=\变量; E. faultName=\,暗含的一个相应错误名称; 2. 相关集. Page 23 项目名称: 相关集属性组:correlation:单个相关集;set=“ncname”:相关集集合名称;initiation:是否实例化该相关集,值为yes时,相关集被实例化,为no时,不实例化。缺省值为no。 reply 活动被用来发送对先前通过 receive 活动被接受的请求的响应。这种响应一般只对同步交互有意义。异步响应的发送方式基本是调用伙伴的服务上的相应的单向操作。在流程中可以定义多个 reply 活动来回答该伙伴的调用;但是,一次只可能有一个匹配的 portType、操作和伙伴。如果出现该规范错误,则抛出标准故障 bpws:conflictingRequest。如果响应正常,则faultName属性不会被使用,变量variable响应一个正常的消息类型。反之,如果隐含一个错误的响应,则faultName属性有用,变量variable暗含一个错误的消息类型。 5.1.4 语言结构: assign:主要用于操作数据变量。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,assign活动还包含: 1. copy +把数据从一个变量复制到另外一个变量 A. from-spec 赋值数据的源,是以下形式中的一种: I. II. B. to-spec 赋值数据的目的地,是以下形式中的一种: I. III. 在各种形式中,variable属性提供变量名;part属性提供该变量中的一部分的名称;query 的属性值是用于识别 源变量部分或目标变量部分中的单个值的查询字符串(在抽象流程中禁止使用query),BPEL4WS 为用于这些查询的语言提供了可扩展的机制。该语言由 from和to的匹配,应该注意: 1. from的关联类型和to的关联类型要相同; 2. from和to都是变量时,两个变量必须属于相同的消息类型; 3. from和to中,不允许一个是变量,另外一个不是变量; Page 24 项目名称: 如果上述几种方式不匹配,抛出标准故障 bpws:mismatchedAssignmentFailure。 Assign 活动可以把数据从一个变量复制到另一个变量,也可使用表达式来构造和插入新数据。使用表达式的主 要动机是为了进行简单的计算(例如递增序列号)以用于描述业务协议行为。表达式对消息选择、属性和文字常数进行运算以产生变量属性或选择新的值。最后,这个活动还可把服务引用复制到伙伴链接,或把伙伴链接复制到服务引用。 throw:主要用于抛出相关的故障和异常。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,throw活动还包含: 1. faultName =\每个故障的一个全局唯一的 QName,故障名称; 2. faultVariable =\可选的数据变量,包含有关故障的更多信息; 当业务流程需要显式地发出内部故障信号时可以使用 throw 活动,每个故障需要有一个全局唯一的QName,throw 活动必须提供故障这样的名称(faultName),还可以提供可选的数据变量(faultVariable),数据变量包含有关故障的更多信息。故障处理程序可以使用这种数据,以分析和处理该故障,并植入需被发送到其它服务的所有故障消息。 5.1.5 语言结构: throw:主要用于抛出相关的故障和异常。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,throw活动还包含: 1. faultName =\每个故障的一个全局唯一的 QName,故障名称; 2. faultVariable =\可选的数据变量,包含有关故障的更多信息; 当业务流程需要显式地发出内部故障信号时可以使用 throw 活动,每个故障需要有一个全局唯一的QName,throw 活动必须提供故障这样的名称(faultName),还可以提供可选的数据变量(faultVariable),数据变量包含有关故障的更多信息。故障处理程序可以使用这种数据,以分析和处理该故障,并植入需被发送到其它服务的所有故障消息。 5.1.6 语言结构: wait:主要用于等待一段时间。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,wait活动还包含: 1. for=\: 等待的时间长度,是一个长度表达式; 2. until=\: 等待时间截止期限; wait活动使流程能够等待一段特定的时间间隔;或者一直等到某个截止期限为止。 5.1.7 语言结构: Page 25 项目名称: empty:不做任何事情。 empty活动只有活动的标准属性(见3.1.5)和标准元素(见3.1.6)。 empty活动不会执行任何动作,是个空活动,目的是为了结构的完整性。如果为了捕获一个异常并抑制它,就可以使用这个活动。 5.1.8 语言结构: terminate:主要用于终止整个流程。 terminate活动只有活动的标准属性(见3.1.5)和标准元素(见3.1.6)。 语言结构: compensate:主要用于构造被用来在已正常完成执行的内层作用域上调用补偿。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,compensate活动还包括: 1. scope=\?:用于compensate活动的scope名称。 Page 26 项目名称: