BPEL 设计器开发者指南:BPEL“设计”和“源”视图
最新更新日期:2006 年 10 月 23 日
目录
BPEL 设计器开发者指南
了解 BPEL“设计”和“源”视图
本指南提供了有关 BPEL 设计器的信息,该设计器允许您以可视方式编写流程图,同时设计器将自动为流程图生成符合 WS-BPEL 2.0 规范的 BPEL 源代码。
当双击某个 BPEL 文件时,IDE 将打开可视设计器组件面板、“导航”窗口、“属性”窗口以及一个多视图编辑器。此编辑器包含两个视图:“设计”视图和“源”视图。
“设计”视图
“设计”视图是业务流程可视设计器。在此视图中,业务流程编写人员可以按可视方式对业务流程进行建模。BPEL 设计器将自动生成对应于可视化设计的 BPEL 代码。可视设计器中使用的表示法并非严格基于 BPMN(Business Process Modeling Notation,业务流程建模表示法)。
“源”视图
“源”视图是 BPEL 源文件编辑器。在“源”视图中,业务流程编写人员可以按文本方式编辑业务流程源代码。您可以执行源代码级别编辑以及可视化设计。BPEL 项目将执行双向工程以确保“设计”视图和“源”视图彼此保持同步。
每次对源文件执行手动编辑时,IDE 都会自动重新解析 BPEL 源文件并重新生成图。
返回页首
导航
“导航”窗口伴随 BPEL 编辑器出现。如果未显示“导航”窗口,可通过从主菜单中选择“窗口”>“导航”或使用 Ctrl+7 组合键来手动调用此窗口。
“导航”窗口提供了两个不同的 BPEL 流程视图。第一个视图是“XML 视图”,它是 BPEL 源代码的 NetBeans 标准概要视图。
XML 视图
“XML 视图”与为 NetBeans 中打开的所有 XML 文档提供的“导航”视图相同。“XML 视图”伴随 BPEL“源”视图出现。双击任何导航节点时,源代码编辑器将调整当前的代码行以显示选定的元素。
BPEL 逻辑视图
“导航”还提供了另外一个视图,即 BPEL 流程的逻辑视图。“导航”的“BPEL 逻辑视图”伴随 BPEL“设计”视图出现。在“设计”视图中选择可视元素时,“导航”的“BPEL 逻辑视图”将显示选定的相同元素。或者,在“BPEL 逻辑视图”的树中选择某个节点时,也将在图中选定对应的元素。
右键单击“BPEL 逻辑视图”中的节点可调用弹出式菜单,其中包含与特定节点有关的操作。例如,对于分配元素,这些操作是“转至源”、“切换断点”、“删除”和“属性”。“转至源”和“删除”操作(可用于大多数节点)具有关联的快捷键:Alt+O 组合键用于“转至源”;Del 键用于“删除”。
通常,“导航”窗口中的节点对应于图中的元素。此外,该窗口还包含一些节点(如“变量”和“关联集”),它们与不能从图中直接访问的功能有关。
“导入”节点是一个特别实用的节点,它列出了借助于 BPEL 文件中的导入元素引用的 XSD 和 WSDL 文件。要添加其他对 XSD 或 WSDL 文件的引用,请右键单击该节点,然后从弹出式菜单中选择“添加导入”。只能引用位于项目文件夹中的文件。执行此操作后,将在 BPEL 文件中添加一个新的 <import> 行。
您可以在 BPEL 文档中引用的 WSDL 文件中添加 BPEL 可扩展性元素(属性和属性别名)。
在 WSDL 文件中添加属性:
-
右键单击“导入”节点下面的 WSDL 文件,然后从弹出式菜单中选择“添加属性”。
-
在“创建新的关联属性”对话框中,指定属性名称。
-
选择属性类型,然后单击“确定”。
在 WSDL 文件中添加属性别名:
-
右键单击“导入”节点下面的 WSDL 文件,然后从弹出式菜单中选择“添加属性别名”。
-
在“创建新属性别名”对话框中,单击“属性”字段旁边的“浏览”以指定属性。
-
在“属性选择器”对话框中,选择要创建别名的属性,然后单击“确定”。将使用该属性的类型来填充“创建新属性别名”对话框中的“属性类型”字段。
-
在“将属性映射到”树中,展开 WSDL 文件节点,然后选择消息或消息部件。
-
要添加查询,请在“查询”文本字段中输入查询字符串。
-
单击“确定”。
有关使用 WSDL 编辑器定义属性和属性别名的详细信息,请参见定义属性和属性别名。
您可以使用位于“导航”窗口上面部分中的下拉菜单在“XML 视图”和“BPEL 逻辑视图”之间进行切换。
返回页首
了解可视设计器
当“设计”视图处于活动状态时,还可以看到可视设计器组件面板。
注意:如果未自动显示可视设计器组件面板,可通过从主菜单中选择“窗口”>“组件面板”来手动调用该面板。
组件面板提供了一组可视化元素,开发者可使用这些元素对业务流程进行建模。组件面板中的元素集对应于业务流程编写人员可能希望以拖放方式添加到图中的那些 BPEL 元素。
组件面板包含大多数 BPEL 元素(但不是全部)的图标。组件面板不包含仅在父元素上下文中有意义的 BPEL 元素的图标。可视设计器支持通过不同的设计方式(不基于组件面板拖放式功能)来构造这些额外的 BPEL 元素。
可视设计器
在“设计”视图内,您可以执行许多任务,这些任务构成了所谓的正向工程:
-
在图中创建元素、连接和活动结构。将元素从组件面板拖到图中。可视设计器支持“放置点”概念,这意味着,在拖放元素时,您必须将它们与这些放置点对齐。并非所有元素都是通过从组件面板执行拖放式操作来创建的。这些额外的元素是通过在右键单击现有图元素时调用的上下文菜单操作来创建的。
-
选择图中的元素。单击元素时可将其选定。选择元素是执行一些其他操作的必需步骤,如删除、移动或编辑元素。
-
查看和修改图元素属性。所有元素都具有属性。当选择某个元素时,标准 NetBeans“属性”窗口将显示特定于该元素的属性。某些 BPEL 元素具有较复杂的属性编辑器,这些编辑器显示在模式弹出式对话框中。对于支持此类编辑器的那些元素,可通过几种方法来调用模式属性编辑器。您可以通过双击可视化元素来显示模式属性编辑器。或者,也可以右键单击该元素并从弹出式菜单中选择“编辑”来显示模式属性编辑器。并非所有 BPEL 元素都具有模式弹出式属性编辑器。对于没有模式弹出式属性编辑器的那些元素,只能使用标准 NetBeans“属性”窗口来调整元素属性。此外,还可以右键单击该元素并从弹出式菜单中选择“属性”来调用“属性”窗口。
-
对图元素执行弹出式菜单操作。每个 BPEL 元素都具有一个弹出式菜单。通过右键单击该元素可以调用此弹出式菜单。此弹出式菜单将提供一组与选定元素有关的操作。
-
保存图更改。对创建和/或修改的图进行更改后,您可以对其进行保存。
-
重新打开保存的图。您可以通过在“项目”窗口中双击相应的 BPEL 源文件来重新打开任何保存的图。
-
移动图元素。您可以通过选择图元素并将其拖到新位置来移动这些元素。
-
如果移动容器元素,容器的所有子元素将会与其一起移动。
-
在本发行版本中,不能选择多个元素并将其一起移动。上面所述的是一种例外情况,即可以将单个容器元素与其所有子元素一起移动。
-
打印源文件或图。您可以打印 BPEL 源文件和 BPEL 图。要打印 BPEL 图,必须将 BPEL“设计”视图打开。要打印源文件,必须将 BPEL“源”视图打开。要进行打印,请从主菜单中调用“文件”>“打印”命令,或者调用“文件”>“打印预览”命令。
-
放大和缩小图。您可以移动编辑器工具栏上的缩放滑块来缩小或放大图尺寸。要查看整个图,请单击“适当地调整图大小”按钮。要查看完整宽度的图,请单击“适当地调整宽度大小”按钮。
-
在可视设计器图中直接编辑元素名称。双击图中的元素名称可对其进行编辑。
-
调用 XML 验证。您可以通过单击“设计”视图编辑器工具栏上的“验证 XML”按钮来调用 XML 验证。有关详细信息,请参见验证部分。
-
将过滤器应用于图元素。“设计”视图编辑器工具栏包含“显示合作伙伴链接”和“显示序列”切换按钮。缺省情况下,将显示合作伙伴链接元素和 Sequence 元素。单击“显示合作伙伴链接”按钮可隐藏图中的合作伙伴链接元素。单击“显示序列”按钮可隐藏图中的 Sequence 容器。第二次单击这两个按钮时,将分别再次显示图中的合作伙伴链接元素或 Sequence 元素。
注意:如果选择不显示合作伙伴链接元素或 Sequence 元素,则无法在图中添加新的合作伙伴链接元素或 Sequence 元素。
使用可视设计器
使用可视设计器时,请切记以下事项:
-
可视设计器可以使用快捷键。快捷键包括:
-
Del 键相当于从弹出式菜单中调用“删除”命令,用于删除当前选定的元素。
-
Esc 键用于取消当前的拖放式操作。
-
Alt+O 组合键用于打开 BPEL 文件的源代码,并将光标放在对应于选定图元素的代码的第一行。
-
一个操作可以由多个活动使用。
-
如果图较大而不能放在当前视窗界限内,您可以将元素拖到视窗界限以外的占位符上。拖动元素时,将会滚动图。
-
您可以使用鼠标滚轮或方向键来滚动查看图。
-
您可以使用组件面板管理器来启用、禁用和重新排列组件面板元素。要调用组件面板管理器,请右键单击组件面板,然后选择“组件面板管理器”。
引用完整性
请注意,可视设计器自动在可视设计器中支持引用完整性,但在源代码编辑器中却不支持。
定义元素和活动属性
通过使用属性编辑器或“属性”窗口,可以为所有元素定义属性。
要打开元素的属性编辑器,
-
请右键单击该元素,然后选择“编辑”,或者
-
请双击该元素
要打开元素的“属性”窗口,请右键单击该元素,然后选择“属性”。
标准 NetBeans“属性”窗口对应于选定的元素;如果未打开标准 NetBeans“属性”窗口,请从主菜单中选择“窗口”>“属性”(Ctrl-Shift-7)。
保存更改
BPEL 设计器按如下方式保持“设计”视图与“源”视图同步:
-
在图中所做的更改将在对应的源代码中立即反映出来。
-
切换至“设计”视图时,在源代码中所做的更改将在图中反映出来。
逆向工程
您可以使用 BPEL 设计器直接编辑源文件,并在可视设计器中反映这些更改。
在以下情况中,您可能需要编辑源文件:
-
如果要使用特定于供应商的 BPEL 扩展(不是标准 BPEL 元素集的一部分),则必须使用源代码编辑器。
-
如果需要添加“设计”视图没有为其提供代码生成功能的 BPEL 结构。当前属性编辑器不适用于某些边缘情况下的 BPEL 结构(如为变量分配的静态 XML)。
-
使用源代码编辑器时,如果修改并保存了格式不正确的 BPEL 源代码,“设计”视图将无法为此“破坏的”BPEL 呈现图。“设计”视图将显示一个页面,指出“无法显示图”。请返回至源代码编辑器以纠正错误,然后在源代码编辑器中运行 XML 验证器以验证所做的更改。在将 BPEL 源代码恢复为有效状态后,“设计”视图将重新能够呈现图。
配置消息流
活动是用于表示消息流中涉及的 BPEL 活动的图元素。
消息流是用于连接 Web 服务活动(调用、接收和回复)与其在合作伙伴链接中的对应活动的虚线。这种关系称为消息流,因为它指明了信息在流程中的流动情况。
如果通过“属性”窗口对 Web 服务活动进行全面配置,IDE 将在活动和合作伙伴活动之间呈现消息流连接器。
但是,也可以直接绘制消息流。做法是:
-
选择一个 Web 服务活动。活动图标左侧将显示一个小信封。
-
开始拖动该信封。IDE 将显示一条虚线,用于链接源活动与拖动的信封。
-
将鼠标移至目标活动。如果目标活动与源活动相匹配,鼠标光标将指示这一情况,此时,您可以松开鼠标按钮。两个活动之间将建立连接。
请注意,不能直接删除消息流。您可以通过在 Web 服务活动中取消设置某些属性来间接地删除消息流。但通常情况下,您将更改消息流以创建不同的关系。
另请注意:只能在一个方向上使用绘制工具,即从 BPEL 流程内的 Web 服务活动到其在合作伙伴链接中的对应活动。
更改消息流
如果要更改现有消息流连接并与不同的目标活动建立新连接,所使用的方法与第一次为首选配对建立连接完全相同。创建新的配对后,IDE 将自动删除旧连接。
可视设计器组件面板元素
下表列出了编制组件面板上显示的基本元素。并非所有 BPEL 元素都位于组件面板上;某些元素是通过右键单击图并从弹出式菜单中选择相应的操作来创建的。
元素具有以下类型:
-
Web 服务:此类元素用于以对话方式与合作伙伴 Web 服务交换消息。
-
基本活动:执行某项任务的活动。
-
结构化活动:此类元素用于精确地对一组活动进行排序。结构化活动可以包含其他活动。
|
图标
|
元素
|
定义
|
|
Web 服务
|
|
调用
|
使得业务流程能够在合作伙伴提供的 portType 上调用单向操作或请求-响应操作;允许此流程向合作伙伴发送消息。该操作是在合作伙伴的 WSDL 中定义的。
|
|
接收
|
使得业务流程处于等待状态,直至接收到特定的消息。
|
|
合作伙伴链接
|
标识将与业务流程交换消息的那些 Web 服务。每个合作伙伴链接包含一些子元素,这些元素对应于该合作伙伴链接的接口所支持的可用 Web 服务活动。 注意:请不要直接在合作伙伴链接容器中添加元素。“设计”视图将自省(检查)合作伙伴的 WSDL,并使用相应的子元素自动填充合作伙伴链接容器。如果需要修改合作伙伴链接,请编辑合作伙伴 WSDL 文件,以便在“设计”视图中重新呈现合作伙伴链接,从而反映修改的接口。
|
|
回复
|
使得业务流程能够发送消息以回复通过接收元素接收到的消息。
|
|
基本活动
|
|
空
|
此活动不执行任何操作,当您需要捕获和禁止错误时,此活动非常有用。
|
|
等待
|
在某一时刻来临之前或者在指定的时间期限内,一直处于等待状态。
|
|
抛出
|
从业务流程内生成错误。
|
|
分配
|
使用新数据更新变量值。
|
|
退出
|
立即终止执行业务流程实例。
|
|
结构化活动
|
|
Flow
|
指定一个活动或多个并发执行的活动。
|
|
Sequence
|
定义一组按词法顺序执行的活动。
|
|
If
|
从一组选项中选择一个活动分支。
|
|
Pick
|
阻止执行并等待合适的消息到达,或者等到指定的时间超时。当 Pick 主体中指定的事件发生时,Pick 才会结束。实际上,仅发生 Pick 主体中的一个活动。
|
|
Scope
|
使用自身的关联局部变量、事件和错误处理程序以及消息交换来定义嵌套活动。
|
|
While
|
当条件为 true 时,重复执行某个活动。在执行活动之前,将检查该条件。
|
|
Repeat Until
|
重复执行某个活动,直至条件为 true 时结束。它不同于 While,原因是它在执行后检查条件。
|
|
For Each
|
重复执行某个活动 N+1 次,其中 N 等于最终计数器值减去起始计数器值。
|
返回页首