FeaturesPluginsDocs & SupportCommunityPartners

BPEL 设计器开发人员指南

维护

最后更新:2008 4
本文适用于 NetBeans IDE 6.1 发行版

目录

本页中的内容适用于 NetBeans IDE 6.1

Process 元素

Process 元素已存在于图中。“新建项目”向导始终会创建一个框架 BPEL 文件,其中包含至少一个 Process 元素。因此,Process 元素不是组件面板的一部分。Process 元素应该是默认存在的,因为它是 BPEL 文件的最低要求配置。

以下屏幕快照显示了旅行预订服务样例中的 Process 表示形式。

Process 元素

用法

  1. 右键单击该元素,然后从弹出式菜单中选择“添加”以添加以下内容:

  2. 在“属性”窗口中指定 Process 元素的属性。要调用该窗口,右键单击该元素并选择“属性”或从主菜单中选择“窗口”>“属性”(Ctrl-Shift-7)。

流程

BPEL 流程可以是同步的,也可以是异步的。同步 BPEL 流程会阻止执行使用该流程的客户端,直至流程执行完毕并将结果返回给客户端为止。异步流程不会阻止执行客户端。而是用回调来返回结果(如果有)。通常,异步流程用于持续时间较长的流程,而同步流程用于返回结果时间相对较短的流程。如果 BPEL 流程使用异步 Web 服务,则流程本身通常也是异步的。

使用调用元素

业务流程可以使用调用元素在合作伙伴提供的 portType 上调用单向操作或请求-响应操作,并且还向合作伙伴发送消息。它支持业务流程将合作伙伴发送消息。

用法

  1. 在“设计”视图中,将调用元素从组件面板拖到图中。

  2. 请执行以下某项操作将调用元素与合作伙伴元素关联在一起:

    • 直接从调用元素拖动一个消息流到目标合作伙伴链接。

    • 双击调用元素(或右键单击它并选择“编辑”)。这将打开“属性编辑器”对话框,您可以在其中检查或更改以下内容:

      • 调用元素的名称。

      • 调用的合作伙伴链接

      • 与调用元素关联的操作
        注意,操作定义在合作伙伴的 WSDL 文件中。

      • 与调用元素关联的输入和输出变量。

      调用元素的属性编辑器的“主要”选项卡

    在“属性编辑器”对话框中,您可以创建一个变量或者使用已有变量保存输入和输出数据。单击“创建”按钮可以为调用元素创建一个变量,单击“浏览”按钮可以选择已有变量。

    注意,单击“浏览”按钮时将会打开输入变量选择器或输出变量选择器对话框。这些对话框中会出现了一个复选框,它将使用合适的类型来显示变量。该对话框将可用变量列表限定为正在配置的 Web 服务操作所适用的类型。这样,“设计”视图即可帮助您开发有效的 BPEL。

    关联

    调用活动(处理出站操作)上的关联集用于验证传出消息包含的数据是否与指定关联集实例中含的数据相一致。

    可以使用接收元素属性编辑器上的“关联”选项卡来检查或指定关联集。

    该选项卡将显示:

    • 关联集名称

    • 关联器启动

    • 与关联相关联的模式

    有关更多信息,请参阅 理解关联。使用关联向导

使用接收元素

接收元素可以使业务流程处于等待状态,直至接收到特定的消息。

用法

  1. 在“设计”视图中,将接收元素从组件面板拖到图中。

  2. 双击回复元素(或者单击鼠标右键并选择“编辑”)以打开回复元素的属性编辑器。此处提供了旅行预订服务示例。

    • 元素的名称(ReceiveItinerary)。

    • 合作伙伴链接 (Travel)。

    • 与接收元素关联的操作 (buildItinerary)。

    • 接收元素的输入变量 (ItineraryIn)。

      单击“输入变量”的“浏览”按钮可打开输入变量选择器,您可以在其中选择与此流程关联的其他变量。选择“创建”可创建新的变量。

    • 创建实例复选框。如果选定该选项,则在关联消息到达时,将创建一个 BPEL 流程实例。注意,如果接收活动是业务流程中的第一个活动,那么必须选中“创建实例”复选框。

      接收元素的属性编辑器的“主要”选项卡

    关联

    可以使用接收元素属性编辑器上的“关联”选项卡来检查或指定关联集。

    该选项卡将显示:

    • 关联集名称

    • 关联器启动

    有关更多信息,请参阅 理解关联。使用关联向导

您还可以在“属性”窗口中编辑一些元素的属性。要打开该窗口,右键单击接收元素并选择“属性”或从主菜单中选择“窗口”>“属性”(Ctrl-Shift-7)。

接收属性窗口

使用回复元素

使用此活动可以将消息从流程返回到启动操作的相同合作伙伴。指定消息模式,它可以是请求、响应和请求-响应操作。

此活动在同步(请求/响应)操作中使用,它与调用流程的接收活动所指定的合作伙伴、端口类型和操作相同。

用法

  1. 在“设计”视图中,将回复元素从组件面板拖到图中。

  2. 双击回复元素(或者单击鼠标右键并选择“编辑”)以打开回复元素的属性编辑器。此属性编辑器指定了以下内容:

    • 元素的名称。

    • 合作伙伴链接。

    • 操作。

    • 响应类型:“正常响应”或“错误响应”

      • 如果将回复元素用于正常响应消息类型,则选择“正常响应”。(可选)指定输出变量:(可选)指定输出变量:创建新的输出变量或浏览现有的变量。

      • 如果将回复元素用于发送错误消息,则选择“错误响应”。请选择一个错误名称,并(可选)指定错误变量:创建新的输出变量或浏览现有的变量。

      回复属性编辑器

    关联

    可以使用回复元素属性编辑器上的“关联”选项卡来检查或指定关联集。

    该选项卡将显示:

    • 关联集名称

    • 关联器启动

    有关更多信息,请参阅 理解关联。使用关联向导

您还可以在“属性”窗口中编辑一些元素的属性。要打开该窗口,右键单击接收元素并选择“属性”或从主菜单中选择“窗口”>“属性”(Ctrl-Shift-7)。

回复属性窗口

使用合作伙伴链接元素

合作伙伴链接指定与业务流程进行交互的各方。每个链接是由合作伙伴链接类型和角色名称定义的。

合作伙伴链接类型和角色

此类型通过定义每个服务在对话中所扮演的角色来确定流程及其合作伙伴之间的关系。可通过指定每个服务为接收消息而提供的端口类型来进一步确定这种关系。每个角色会在 WSDL 文件中指定一种端口类型。

角色确定了此流程或其合作伙伴的对话特征。使用此活动可以将消息从流程返回到启动操作的相同合作伙伴。使用此活动可以将消息从流程返回到启动操作的相同合作伙伴。

合作伙伴链接和合作伙伴链接类型是很容易混淆的,但请注意:

  • 合作伙伴链接类型和角色是由 BPEL 规范定义的特殊 WSDL 扩展。因此,它们是在 WSDL 文件中定义的,而不是在流程 BPEL 文件中定义的。

  • 合作伙伴链接是 BPEL 2.0 元素。它是在流程 BPEL 文件中定义的。

合作伙伴链接类型是合作伙伴链接元素定义的先决条件。只能通过引用特定的合作伙伴链接类型和角色(正如上面提到的那样,它们必须在 WSDL 中进行定义)来定义合作伙伴链接元素。

用法

要在 BPEL 项目中添加合作伙伴链接元素,请执行以下某项操作:

  • 将退出元素从组件面板拖到图中。

  • 将 WSDL 文件节点从“项目”窗口的相同项目拖到图中。

  • 将 WSDL 文件节点从“项目”窗口的其他项目拖到图中。

  • 将 Web 服务节点从“项目”窗口的 EJB 项目拖到图中。

注意:注意:在拖动 Web 服务节点时,BPEL 设计器将从应用服务器中检索 WSDL 文件。要成功检索 WSDL 文件,应用服务器必须正在运行并且必须部署了 Web 服务项目。

将合作伙伴链接元素、WSDL 文件节点或 Web 服务节点拖到图中时,将显示合作伙伴链接属性编辑器。

合作伙伴链接

在合作伴链接属性编辑器中,您可以为 BPEL 流程建立合作伙伴链接。

要调用合作伙伴链接属性编辑器,请双击图中的合作伙伴链接元素,或者右键单击合作伙伴链接元素并选择“编辑”。同样在您将合作伙伴链接元素、WSDL 文件节点或 Web 服务节点拖到图中时,也会显示合作伙伴链接属性编辑器。

通过合作伙伴链接属性编辑器,您可以指定:

  • 合作伙伴链接名称

  • 与合作伙伴链接关联的 WSDL 文件

您可以进一步选择是使用现有的合作伙伴链接类型,还是创建新的合作伙伴链接类型。

如果选择的 WSDL 文件包含合作伙伴链接类型,则“使用现有的合作伙伴链接类型”选项将处于选中状态,并使用 WSDL 文件中的合作伙伴链接类型来填充“合作伙伴链接类型”下拉列表。您可以使用其中的一个现有合作伙伴链接类型,或者选择“使用新建的合作伙伴链接类型”选项以创建新的合作伙伴链接类型。

如果 WSDL 文件不包含合作伙伴链接类型,则“使用新建的合作伙伴链接类型”选项将处于选中状态。

  • 使用现有的合作伙伴链接类型

    1. 从下拉列表中选择合作伙伴链接类型。并自动填充“我的角色”和/或“合作伙伴角色”字段。

    2. 要交换业务流程本身的角色(我的角色)和合作伙伴角色(合作伙伴角色),请单击“交换角色”按钮。

  • 使用新建的合作伙伴链接类型

    1. 指定在其中添加合作伙伴链接类型的 WSDL 文件。可以执行以下操作:

      • 将合作伙伴链接类型添加到包装器 WSDL 文件中。如果选择此选项,则 IDE 将自动在项目结果中创建包装器 WSDL 文件。如果原始 WSDL 文件为只读,或者不希望修改原始 WSDL 文件,那么可以使用包装器 WSDL 文件。原始 WSDL 文件将导入到新建的包装器 WSDL 文件中。

      • 将合作伙伴类型添加到项目的 WSDL 文件中。单击“浏览”按钮找到要添加合作伙伴链接的 WSDl 文件。

    2. 指定合作伙伴链接类型的名称。

    3. 指定业务流程本身的角色(我的角色)和/或合作伙伴角色(合作伙伴角色)。

      • 选中相应的复选框。

      • 指定角色名称。

      • 从下拉列表中选择端口类型。

合作伙伴链接属性编辑器

也可以在属性窗口中查看和修改合作伙伴链接的属性;要调用此窗口,请右键单击该元素,然后选择“属性”。

合作伙伴链接布局

合作伙伴链接位于流程图的左侧或右侧边缘。服务请求程序位于左侧,服务提供程序位于右侧。要定义角色并选择各合作伙伴链接的适当端,IDE 将使用在 WSDL 文件中为 partnerLinkType 定义的角色顺序。WSDL 文件中定义的第一个 partnerLinkType 角色被认为是一个服务角色,第二个定义的角色被认为是请求程序和回调接收程序的角色。如果 WSDL 中定义的角色顺序为反序(回调接收程序角色定义在第一个位置,服务角色则为第二个位置),则会在 BPEL 流程图中获取不正确的合作伙伴链接布局,但操作并不会被破坏。如果合作伙伴链接出现在错误端,则可能需要打开 WSDL 文件并交换 partnerLinkType 中的角色定义的位置。

动态寻址

有时,您需要与未知端点的合作伙伴服务通信,或者需要在流程执行过程中修改端点引用(EPR)。动态合作伙伴链接特性允许您动态为合作伙伴链接分配端点引用。这意味着,您可以使用一个合作伙伴链接与多个 Web 服务通信,只要这些服务拥有相同的接口。

各合作伙伴链接都定义了抽象信息和具体信息。抽象信息描述 Web 服务接口应为静态,而地址和端口等具体访问信息则可以动态搜索和使用。

注意:对于流程的成功部署,应该完整定义合作伙伴链接。这意味着,当您部署项目时,合作伙伴的 WSDL 文件应该包含合作伙伴链接定义的抽象和具体信息,包括地址和端口。但随后,可以独立于 WSDL 文件对具体信息进行修改。

注意:BPEL 规范规定只能动态修改合作伙伴 EPR。在 BPEL 术语中,只有合作伙伴链接元素的 partnerRole 可以拥有新值。部署 BPEL 之后,myRole 值将保持不变。

要将新 EPR 分配给合作伙伴链接,您可以使用标准的 Assign 活动和 BPEL 映射器。

可以通过不同的方法提供 EPR 信息:

  • 可以将它作为字面值(手动将端点信息输入为字面值)提供,并将它映射到合作伙伴链接

  • 使用传入消息提取端点地址

  • 使用 Service Reference 类型的变量

  • 将某个合作伙伴链接中的 EPR 复制到另一个合作伙伴链接中

如果您使用传入消息,应该将 EPR 模式定义为 WSDL 中的消息的一部分。要将 EPR 分配给合作伙伴链接,请使用消息变量。

将新端点引用分配给变量中的合作伙伴链接:

  1. 在流程中创建一个新 Assign 活动。

  2. 打开 BPEL 映射器。

  3. 在右侧的目标树中,找到要交付新具体部分的合作伙伴链接。

  4. 在源树中,找到包含新端点地址的变量。

    可以依据不同的模式来定义 Web 服务的地址,并且 JBI 容器需要一种特殊的数据类型(即 ServiceRefType),该类型是任何端点描述数据类型的简单包装器。

    包装数据:

    • 在映射器工具栏中,选择“BPEL”>“使用服务引用包装”。
      该函数是一个使用预定义 XSL 样式表的 doXslTranform 函数。

      选择“BPEL”>“使用服务引用包装”。

  5. 从变量画一条传入连接到该函数。然后,画一条传出连接到合作伙伴链接。

  6. 新具体部分已分配给合作伙伴链接。

    将新 EPR 分配给合作伙伴链接

注意:运行时支持仅支持包含在 WS-BPEL 2.0 规范中的模式。WS-Addressing 模式未包含在 BPEL 规范中,因此不受 BPEL 运行时支持。初次使用 WS-Addressing 模式时,它是从 NetBeans 全局目录复制到 BPEL 模块项目的副本,并且项目引用模式的本地副本。adressing.xsd 模式也出现在“项目”窗口的 Module procees 文件中。

使用分配元素

Assign 活动将分配值给变量或合作伙伴链接。您使用分配元素从元素复制数据、计算表达式的值,以及将新数据存储在目标元素中。需要表达式执行简单计算或处理消息选择、属性和字面常量,以生成新值。分配活动可以包含一个或多个基本赋值。

用法

使用 BPEL 映射器可以为分配活动定义复制规则,或者添加表达式。有关详细信息,请参见本指南的分配活动用例部分。

BPEL 映射器视图是 BPEL 编辑器中的一个可用的选项卡。

BPEL 映射器选项卡

您还可以通过双击图中的分配活动或按 Ctrl-Shift-F9 来打开映射器。

分配元素属性

分配元素的属性窗口(可通过右键单击该元素并选择“属性”来调用)包含了以下两个属性:

  • 名称。这是元素的名称。

  • 分配计数。这是为元素指定的分配规则数。

    分配属性窗口

使用空元素

空元素没有关联的操作。它通常在流程中用作占位符以捕获和禁止错误,或者帮助同步 flow 活动内并发执行的操作。

可以在以下情况使用空元素:其他人将实现业务流程,或者需要同步 flow 活动内的活动。

用法

将空元素从组件面板拖到图中。

使用等待元素

使用等待元素可以基于时间单位或持续时间来指定等待条件。

用法

将等待从组件面板拖到图中。与其他元素一样,必须将该元素放在流程流中的正确位置,否则,在图中将看不到该元素。

在图中右键单击该元素,然后选择“属性”以调用属性窗口。通过使用属性窗口,您可以指定:

  • 元素的名称。

  • 报警类型:可用的选项包括:

    • For - 指定流程等待的持续时间

    • Until - 指定流程的截止期限。

  • 日期/持续时间。单击省略号按钮(...),您可以在调用的对话框中根据所选截止类型指定时间。等待属性窗口

使用抛出元素

使用此活动来发出内部错误信号。

用法

定义此元素的属性时,您可以指定错误名称和错误变量。然后,这些详细信息可以传递到配置为处理此类异常的错误处理程序。

抛出元素属性

可以通过属性窗口来配置抛出元素的属性;要调用此窗口,请右键单击该元素,然后选择“属性”。选项有:

  • 名称

  • 错误名称。单击省略号按钮 (...) 可调用错误名称对话框,您可以从包含系统错误和 WSDL 和 BPEL 文件中定义的错误的列表中选择该错误。

    可以使用 WSDl 编辑器将错误定义添加到 WSDL 文件中。有关更多信息,请参阅 Developer Guide to the WSDL 编辑器的 Configuring Port Types Using the WSDL View 一节。

  • 错误变量。单击省略号按钮 (...) 可指定已在 BPEL 文件中声明的变量(它将包含错误消息)的名称。

    抛出属性窗口

使用 Rethrow 元素

Rethrow 活动只可以在故障处理程序中使用。Rethrow 活动用于重新抛出故障处理程序捕获的故障。在将 Rethrow 元素添加到 BPEL 流程之前,您应该添加一个故障处理程序元素到流程或 Scope 元素中,或添加一个捕获或捕获所有元素到故障处理程序容器中。

用法

  • 如果您未将故障处理程序容器添加到图中,请在设计视图中右键单击 Scope 或 Process 元素,并选择“添加” >“添加故障处理程序”。

  • 右键单击故障处理程序窗口,并选择“添加”>“添加捕获”或“添加”>“捕获所有”。

  • 从组件面板中拖动一个 Rethrow 元素到图中,并将它放置在故障处理程序容器的捕获或捕获所有元素内部。

Rethrow 元素没有任何属性可以定义,它只是重新抛出故障处理程序捕获到的故障。

使用退出元素

用此活动可以停止执行活动或流程:在流程、结构化活动或处理程序内。

用法

在“设计”视图中,将退出元素从组件面板拖到图中。

注意: BPEL 运行环境在 Flow 和活动警报元素内不支持退出元素,在事件处理程序元素的活动事件子元素内也不支持该元素。

使用 Compensate 元素

Compensate 活动只可以在捕获、捕获所有、补偿处理程序或终端处理程序元素中使用。

Compensate 活动只造成所有域补偿直接包括在包含故障处理程序、补偿处理程序或终端处理程序的域中。

用法

从组件面板中,拖出一个 Compensate 活动并将它放置在图中获、捕获所有、补偿处理程序或终端处理程序元素的内部。Compensate 活动不需要属性配置,它的行为是预先定义的。

使用 CompensateScope 元素

CompensateScope 活动只可以在捕获、捕获所有、补偿处理程序或终端处理程序元素中使用。

通过调用补偿处理程序或域和调用元素,Compensate Scope 活动支持指定域或调用元素的补偿包括在包含 Compensate Scope 处理程序的域中。

用法

  • 从组件面板中,拖出一个 Compensate Scope 活动并将它放置在图中获、捕获所有、补偿处理程序或终端处理程序元素的内部。

  • 右键单击 Compensate Scope 元素并选择“属性”。

  • 在“属性对话框”中,配置以下参数:

    • 名称。输入任意名称。

    • 目标。从下拉列表中,选择要补偿的范围或调用活动。

    • 文档。输入活动注释(可选)。

使用 If 元素

If 活动支持业务流程实例的条件行为。If 活动是由 If 和 ElseIf 元素定义的条件分支组成的,后面跟有可选的 Else 分支。If 和 ElseIf 分支条件的执行顺序是按照其出现的顺序依次进行的。在执行过程中,将执行第一个条件为 true 的分支,并提供为 If 活动指定的活动。换句话说,如果几个 ElseIf 分支的条件都为 true,则会首先执行第一个分支。

如果条件分支的计算结果均不为 true,则会选择 Else 路径。如果未显式指定 Else 分支,则将此分支视为包含空活动。当选定分支的活动完成时,If 活动才会结束。

用法

  1. 在“设计”视图中,将 If 元素从组件面板拖到图中。

  2. 在图中选择 If 元素。将在 IDE 底部显示“BPEL 映射器”窗口。如果没有显示“BPEL 映射器”窗口,请右键单击 If 元素并选择“显示BPEL映射器”。

  3. 使用 BPEL 映射器为 If 元素指定条件。有关详细信息,请参见本指南的 If 活动用例 部分。也可以在属性窗口中手动指定条件;要调用此窗口,请右键单击该元素,然后选择“属性”。

  4. (可选)在属性窗口中,输入 If 元素的名称。

    If 属性窗口

  5. 在 If 元素中,添加条件为 true 时将执行的元素。配置嵌套的元素。如果在 If 元素中添加其他元素,则嵌套元素会自动包含在 Sequence 元素中。

  6. 按如下方式添加其他分支(ElseIf 和 Else)。

在 If 元素中添加 Else 分支

  1. 右键单击 If 元素,然后选择“添加 Else If”。

  2. 为 ElseIf 添加 ElseIf 定义条件为 true 时将执行的活动。要定义一个条件,请使用 BPEL 映射器。

  3. (可选)选择“添加 Else If”以添加更多的 ElseIf 活动,然后在其中添加活动。

在 If 元素中添加 Else 分支

将要在 Else 分支上执行的活动拖到标有斜杠标记的连接器路径上。配置嵌套的活动。

对 ElseIf 分支重新排序

在“设计”视图中,将要重新排序的 ElseIf 分支拖放到另一个 ElseIf 分支旁边显示的占位符上。

使用 While 元素

只要在每次开始迭代时满足特定的条件,就可以使用 While 元素来重复执行一或多个活动。此元素包含了在满足指定的成功条件时重复执行的其他元素。如果指定的条件为 false,则不会执行列出的任何活动。

注意:While 元素先检查条件的有效性,然后再执行迭代活动。相反,使用 Repeat Until 元素 首先执行活动,然后才检查条件的有效性。

用法

  1. 在“设计”视图中,将接收元素从组件面板拖到图中。

  2. 将必须重复执行的活动拖到 While 元素中。如有需要,配置此活动的属性。

  3. 使用属性窗口来指定 While 元素的名称和条件。您可以手动输入条件或使用 BPEL 映射器 生成条件。如果没有显示“BPEL 映射器”窗口,请右键单击 If 元素并选择“显示BPEL映射器”。

使用 Repeat Until 元素

只要在每次执行迭代后满足特定的条件,就可以使用 Repeat Until 元素来重复执行一个或多个活动。此元素包含了在满足指定的成功条件之前重复执行的其他元素。如果指定的条件为 true,则会将列出的活动执行一次。

注意:Repeat Until 元素先执行迭代活动,然后再检查条件的有效性。相反,While 元素先检查条件的有效性,然后再执行活动。用法

用法

  1. 在“设计”视图中,将回复元素从组件面板拖到图中。

  2. 将必须重复执行的活动拖到 While 元素中。如有需要,配置此活动的属性。

  3. 使用属性窗口来指定 Repeat Until 元素的名称和条件。您可以手动输入条件或使用 BPEL 映射器 生成条件。如果没有显示“BPEL 映射器”窗口,请右键单击 If 元素并选择“显示BPEL映射器”。

使用 For Each 元素

使用 For Each 元素可以将其包含的 Scope 活动正好重复执行 N+1 次,其中 N 等于最终计数器值减去起始计数器值。

用法

  1. 在“设计”视图中,将 Pick 元素从组件面板拖到图中。

  2. 将要重复执行的元素从组件面板添加到 For Each 元素中。添加的元素将自动包含在 Scope 元素中。

  3. 右键单击 For Each 元素,然后选择“属性”以打开其属性窗口。

For Each 元素的属性窗口包含了下面列出的属性。

  • 名称。指定 For Each 元素的名称。

  • 计数器变量名称。声明计数器变量名称。

  • 起始计数器值。设置起始计数器值。使用 BPEL 映射器 生成整型值表达式。

  • 最终计数器值。设置最终计数器值。使用 BPEL 映射器 生成整型值表达式。

    当启动 For Each 活动时,将首次(仅一次)计算起始计数器值和最终计数器值中的表达式值。即,当返回这两个值后,它们将在该活动的生命周期内保持不变。如果起始计数器值大于最终计数器值,则不会执行任何迭代。

  • 完成条件(可选)。指定一个整型值表达式。在执行每个直接引用之后,会用完成的次数与这个值做检查。当完成的次数等于指定表达式的值时,不会有进一步的动作。当表达式的值大于可用的迭代数时,迭代将不会开始。

  • 仅计算完成的支数量 (可选)。如果选中此复选按钮,它会让运行时只计算成功完成的分支。如果清除此复选按钮,所有的分支,成功或未成功完成的,都将被计算。

使用 Pick 元素

Pick 元素会阻止流程的执行,并一直等到发生一个指定的事件时为止。发生特定的事件后,将执行与该事件关联的活动。可能发生的事件是消息或基于计时器的警报的到达。这些事件的发生是互斥的。如果发生了多个事件,则会根据先发生的事件来选择要执行的活动。

Pick 活动提供了两个分支:活动消息和活动警报。将执行先满足条件的分支(即,收到消息或到达指定的计时器时间)。在图中添加 Pick 元素时,它会自动包含一个 onMessage 语句,您可以在其中指定流程等待合作伙伴服务发送的消息的属性。每个 Pick 素至少要包含一个 onMessage 语句。活动警报分支包含一个计时器,可用来指定流程等待的时间期限。

用法

  1. 在“设计”视图中,将 Pick 元素从组件面板拖到图中。

  2. 对于活动消息分支,请配置流程正在等待的消息的属性。配置类型与 使用 元素。

  3. 将要执行的活动从组件面板拖放到活动消息分支内。配置此活动的属性。

  4. (可选)通过从弹出式菜单中选择“添加”>“活动消息”来添加更多的活动消息分支,并按照上述方法对其进行配置。

  5. (可选)执行以下步骤来添加一个或多个活动警报分支。

    Pick 元素

添加活动警报分支

  1. 右键单击 Pick 元素,然后从弹出式菜单中选择“添加”>“活动警报”。

  2. 通过属性窗口来配置计时器;要调用此窗口,请右键单击该元素,然后选择“属性”。可用的选项包括:

    • 报警类型 — 用于选择报警的类型。可以为以下某种类型:

      • For — 指定等待流程的持续时间。

      • Until — 指定流程的终止时间。

    • 日期/持续时间 - 用于为选定的警报类型配置截止期限或持续时间。单击省略号按钮 (...) 可指定该时间。您还可以使用 BPEL 映射器

  3. 查找要在时间到期后执行的活动,然后将其从组件面板拖到活动警报元素内的占位符上。

  4. (可选)按照上述操作,添加一个或多个活动警报分支。

Pick 元素属性

Pick 元素的属性窗口(可通过右键单击该元素并选择“属性”来调用)包含了以下字段:

  • 创建实例。如果设置为 yes,在发生指定的事件时,将创建一个新的流程实例。如果不打算启动新的流程实例,请保留默认值 N/A

  • 名称。它用于指定元素的名称。

Pick 属性窗口

使用 Flow 元素

使用 Flow 元素可以定义一组将并发(并行)执行的活动。

Flow 活动是一个结构化的活动,其中包含了使用单独的控制路径或分支进行划分的其他活动。您可以在该活动中嵌入任意数量的路径,这些路径将会同时执行。

在执行过程中,将并发执行每个路径,并按照每个路径中的活动的出现顺序来执行这些活动,除非这些活动是链接源。如果活动是链接源,则必须计算链接条件和活动的连接条件。如果引发活动的链接条件与其连接条件发生冲突,则会在该活动上抛出错误。

用法

在“设计”视图中,将接收元素从组件面板拖到图中。

将某个元素拖到 Flow 元素内的占位符上。如果要在 Flow 元素的同一个分支中添加另一个元素,则该分支内的元素将会自动包含在 Sequence 元素中。

在 Flow 元素中添加分支

您可以在 Flow 元素中添加一个或多个分支。Flow 元素具有特殊的用户交互方式。它始终为您希望添加的下一个分支显示一个占位符。 要添加新的分支,请将元素从组件面板拖到立即可用的“下一个分支”占位符上。

元素的名称 (ReceiveItinerary)。

将某个元素拖到 Flow 元素内的占位符上。

  1. 在“设计”视图中,右键单击 Process 元素,然后选择“添加”>“关联集”。

  2. 上面所述的是一种例外情况,即可以将单个容器元素与其所有子元素一起移动。

使用 Sequence 元素

使用 Sequence 元素可以在流程中嵌套一系列活动。Sequence 中的活动将严格按顺序执行。当嵌套内的最后一个活动完成时,流程执行将返回到业流程中。

用法

将空元素从组件面板拖到图中。

在 Sequence 中添加子活动

您可以在 Sequence 中添加一个或多个子活动。Sequence 元素具有特殊的用户交互方式。它始终为您希望添加的下一个活动显示一个或多个有效占位符。 要添加新的子活动,请将元素从组件面板拖放到立即可用的下一个或上一个活动占位符上。

元素的名称 (ReceiveItinerary)。

将某个元素拖到 Flow 元素内的占位符上。

  1. 在“设计”视图中,右键单击 Process 元素,然后选择“添加”>“关联集”。

  2. 上面所述的是一种例外情况,即可以将单个容器元素与其所有子元素一起移动。

使用 Scope 元素

Scope 活动实质上是一组子活动,它们可以具有自己的消息交换、变量、错误和事件处理程序。Scope 活动为子元素提供了行为环境。为父 Scope 定义的属性在该 Scope 内具有局部可视性。例如,为 Scope 声明的变量仅在该 Scope 以及所有嵌套的 Scope 内可见。这些变量可随后用于此 Scope 的子活动。

用法

  1. 在“设计”视图中,将 Scope 元素从组件面板拖到图中。

  2. 右键单击该元素,然后从弹出式菜单中选择“添加”以添加以下内容:

  3. 在“设计”视图中,将 Scope 元素从组件面板拖到图中。

  4. 配置这些元素。

  5. (可选)在属性窗口中指定 Scope 元素的名称;要调用此窗口,请右键单击该元素,然后选择“属性”。

变量

BPEL 编程中使用变量的方式与其他软件语言相同:这些变量用来保存临时值、构成表达式的一部分,或者作为参数传递给外部合作伙伴。通常,发送到合作伙伴服务或从中接收的每条消息都需要一个变量。BPEL 设计器支持以下类型的变量:

  • 消息类型。这种类型的变量与流程导入的 WSDL 文件中定义的 Web 服务消息类型相对应。在 BPEL 文件(.bpel))中,这些变量必须为 messageType 属性指定值。消息类型变量用于保存流程与其合作伙伴服务之间交互的数据。

  • XML 架构类型。这些变量对应于简单复杂 XML 模式数据类型。XML 架构类型本身是在导入到流程的 XML 架构文件 (.xsd) 或 WSDL 文件中定义的。在 BPEL 文件中,这种类型的变量必须为类型属性指定值。

  • XML 架构元素。这种类型的变量与 XML 架构元素相对应。XML 架构元素本身是在导入到流程的 XML 架构文件 (.xsd) 或 WSDL 文件中定义的。在 BPEL 文件中,这种类型的变量必须为类型属性指定值。

  • 内置类型。这种类型的变量是在 XML 架构规范中定义的标准简单类型。

全局变量和局部变量

在 Process 根元素中定义的变量是全局变量,它们在整个流程中具有全局可视性。在特定的 Scope 内定义的变量仅在该 Scope 以及所有嵌套的 Scope 内可见。这些变量称为局部变量。为内部 Scope 元素定义的变量将隐藏上一级定义的同名变量。

在同一个 Scope 内定义的所有变量名称中,每个变量名称都必须是唯一的。

定义变量:

  1. 右键单击 Process 或 Scope 元素,然后选择“添加”>“变量”。

  2. 在“创建新变量”对话框中,命名该变量。在此 Scope 元素中名称应是唯一的。

  3. 在列表中,展开 Built-in Types 节点,然后选择 string 节点。您应该看到以下内容:

    • 内置类型。展开“内置类型”文件夹,选择变量的 QName,然后单击“确定”。

    • 消息类型。展开 .wsdl 文件节点,选择一种消息类型,然后单击“确定”。

    • XML 架构元素。展开包含嵌入架构的 .xsd 文件节点或 .wsdl 文件。展开“简单类型”文件夹,选择一种简单类型,然后单击“确定”。

      考虑到方便性,全局类型的变量显示为黑体。

  4. (可选)清除“仅显示导入的文件”复选框标记以查看未导入的 WSDL 和 XML 架构文件的内容。

  5. 单击“确定”。

    默认情况下,“创建新变量”对话框仅显示已导入到流程中的那些文件。但是,项目可以包含尚未导入到流程中的其他 .wsdl 和 .xsd 文件。如果根据未导入的某个文件中定义的类型来定义新变量,则 IDE 会将所需的导入自动添加到 BPEL 流程中。

    您还可以通过 The Navigator Window 窗口添加变量。要添加变量,请在“导航”中选择“BPEL 逻辑视图”,展开 BPEL 模块项目节点,右键单击“变量”节点,然后选择“添加变量”。

编辑变量:

  1. 在“导航”窗口中,选择“BPEL 逻辑视图”。

  2. 展开 BPEL 模块项目节点 >“变量”并双击要编辑的变量。

  3. 在变量的属性编辑器中,修改变量的类型和名称。

  4. 单击“确定”。

返回顶部

将反馈发送给我们


Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by