FeaturesDocs & SupportCommunityBlogsPartners

BPEL 设计器开发人员指南:BPEL 映射器

目录

本页面内容适用于 NetBeans 6.0 IDE

BPEL 设计器开发人员指南

关于 BPEL 映射器

BPEL 映射器为处理和定向 BPEL 流程数据提供了一个框架。本框架由以下几个部分组成:

  • 菜单栏。菜单栏提供了所有用来创建 BPEL 映射的 BPEL 映射器的 XPath 函数。还可以通过加入包含 XPath 函数的谓词来改进或扩展 BPEL 映射。
    在菜单栏的右侧,可以使用以下按钮来操作函数框,或函数 ID:
    • 自动布局。自动在映射窗格中安排函数框。
    • 展开所有函数 ID。展开函数框。
    • 折叠所有函数 ID。折叠所有函数框。当映射窗格中有大量的函数框时,该命令非常有用。
    • 删除选择。删除选中的函数框。
  • 源树窗格。源树窗格包含一个树组件,用于提供对 BPEL 流程的数据变量的访问。
  • 映射窗格。映射窗格包含用来创建 BPEL 映射的画布。在菜单栏中选择函数时,将在映射窗格中显示一个函数框。如果该函数接受任何参数,则在函数框的左侧会为每个数提供一个连接器。如果参数是可选的,则会在参数名称后面显示一个问号。并且在函数框的右侧会为结果提供一个连接器。您可以在以下 BPEL 流程元素中使用 BPEL 映射器:
    • 分配活动。可以定义一个或多个分配副本。
    • If 活动。 您可以定义条件
    • If 活动内的 ElseIf 元素。 您可以定义条件
    • ForEach 活动 您可以定义条件
    • RepeatUntil 活动 您可以定义条件
    • While 活动。 您可以定义条件
    • 等待活动。可以指定截止期限或持续时间。
  • 目标树窗格。目标树窗格的树组件将依赖于要映射的 BPEL 流程元素。目标树窗格包含以下组件:
    • 对于分配活动,右窗格包含的树组件与左窗格相同。
    • 对于 If 活动、ElseIf 元素、ForEach 活动、RepeatUntil 活动以及 While 活动,右窗格都包含“结果”节点。
    • 对于等待活动,右窗格包含了“截止期限”或“持续时间”节点。

选择“设计”视图中列出的元素将会打开“BPEL映射器”窗口。如果该窗口不可见,则从主菜单中选择“窗口”>“其他”>“BPEL映射器”选项。

回到顶部

 

创建 BPEL 映射

您可以直接创建源树窗格到目标树窗格的映射,而无需使用任何函数。此类映射包含以下几种方式:

  • 变量到变量
  • 部件到部件
  • XSD 元素到 XSD 元素
  • XSD 属性到 XSD 属性

还可以在 BPEL 映射器的菜单栏中,创建使用一个或多个 XPath 函数 的映射。例如,如果 BPEL 流程中包含了等待一段时间的等待活动,则可以使用 Duration Literal 函数来指定持续时间。

在不使用任何函数的情况下创建映射:

  1. 在源树窗格中,展开树组件,直至出现要映射的源节点。
  2. 如果目标树窗格也包含了树组件,则展开树组件,直至出现要映射的目标节点。
  3. 在源树窗格中选择该节点,并将指针拖到目标树窗格中的节点。
    将出现一个连接两个节点的链接。

在映射中使用函数:

  1. 单击包含该函数的下拉菜单。
  2. 单击该函数。
    函数框将出现在映射窗格中。
  3. 将任何参数映射到函数框左侧的相应连接器。源可以是源树窗格中的节点,也可以是另一个函数框的输出。如果参数是可选的,则会在参数名称后面显示一个问号。
  4. 从函数框右侧映射结果。目标可以是目标树窗格中的节点,也可以是另一个函数框的输入。

删除映射中的链接或函数:

  1. 选择该链接或函数。
  2. 按下“删除” 键。

回到顶部

 

使用谓词

您可以使用 BPEL 映射器来创建由 XPath 函数组成的谓词。

谓词将条件应用于可能具有多个值的节点。结果是满足条件的一部分节点。

例如,假定节点表示某种产品的数量。如果要选择数量大于 50 件的所有产品,则可以使用 greater thannumber literal 函数来定义条件。

只有某些类型的节点才允许创建谓词。这些节点的上下文菜单包含“新建谓词”选项。展开源树窗格中的树组件时,可以创建谓词的节点将标记有星号(*)。

创建谓词后,您可以在赋值中使用谓词。例如,可以将数据从源树窗格中的谓词复制到目标树窗格中的节点。

您可以编辑或删除现有的谓词。

创建谓词:

  1. 在源树窗格中,右键单击某个节点,然后选择“新建谓词”。
    将显示谓词编辑器。
  2. 使用 XPath 函数来创建谓词条件。将结果映射到标树窗格中的谓词节点。
  3. 单击“确定”。
    编辑器将在紧靠原始节点的下面添加谓词节点。条件将显示在方括号中。

编辑谓词:

  1. 在源树窗格中,右键单击该谓词节点,然后选择“编辑谓词”。
  2. 修改条件。
  3. 单击“确定”。

删除谓词:

  1. 在源树窗格中,右键单击该谓词节点,然后选择“删除谓词”。
  2. 单击“确定”。

回到顶部

 

XPath 函数引用

BPEL 映射器的菜单栏中提供了 XPath 函数集合。这些函数均基于 XPath 1.0 规范。

每个函数具有零个或多个参数。每个函数都返回单个结果。

该页面显示的下拉菜单选项如下所示:菜单栏中的下拉菜单包括:日期时间运算符布尔值字符串节点数值

日期时间

“日期时间”菜单包含了以下函数:

  • Duration Literal 用于输入持续时间类型。请使用 XML 架构规范中指定的格式。
  • Current Time 提供当前时间。
  • Current Date 提供当前日期。
  • Current Date and Time 提供当前日期和时间。

运算符

“运算符”菜单包含了以下函数:

  • Greater Than
  • Greater or Equal
  • Less Than
  • Less or Equal
  • Addition
  • Subtraction
  • Multiplication
  • Divdivision 运算符返回给定被除数和除数的商。
  • Modmodulus 运算符返回给定被除数和除数的余数。
  • Negative
  • Not Equal
  • EQUAL

布尔值

“布尔值”菜单包含了以下函数:

  • True 返回 true。
  • False 返回 false。
  • AND 使用以下逻辑:如果两个参数均为 true,则该函数返回 true。如果有一个参数为 false,则该函数返回 false。
  • OR 使用以下逻辑:如果有一个参数为 true,则该函数返回 true。如果两个参数均为 false,则该函数返回 false。
  • Not 使用以下逻辑:如果参数为 false,则该函数返回 true。如果参数为 true,则该函数返回 false。
  • Lang 返回 true 或 false,具体取决于上下文节点的语言与参数中指定的语言相同,还是属于参数中指定语言的子语言。
  • Boolean 将参数转换为布尔值。有关此逻辑的详细信息,请参见 XPath 1.0 规范。

字符串

“字符串”菜单包含了以下函数:

  • Contains 使用以下逻辑:如果第一个参数字符串不包含第二个参数字串,则该函数返回空字符串。否则,函数返回 false。
  • Normalize Space 返回包含空白的参数字符串,这些空白将按照以下方法进行规格化:去除前导和结尾的空白并使用单个空格替换一系列空白字符。
  • String 将对象转换为字符串。
  • Starts With 使用以下逻辑:如果第一个参数字符串以第二个参数字符串开头,则该函数返回 true。否则,函数返回 false。
  • String Length 返回字符串中的字符数。
  • Substring 返回第一个参数的子串,该子串的起始位置由第二个参数指定,其长度由第三个参数指定。第一个字符的位置为 1,第二个字符的位置为 2,依此类推。第三个参数是可选的。如果未指定第三个参数,则该函数返回的子串由第二个参数指定的位置开始,一直延续到字符串结束。
  • Substring Before 返回第一个参数字符串的子串,当第一个参数字符串中首次出现第二个参数字符串时,子串即为该位置前面的内容。如果第一个参数字符串不包含第二个参数字串,则该函数返回空字符串。
  • Substring After 返回第一个参数字符串的子串,当第一个参数字符串中首次出现第二个参数字符串时,子串即为该位置后面的内容。如果第一个参数字符串不包含第二个参数字串,则该函数返回空字符串。
  • Translate 返回第一个参数字符串,如果该字符串含有第二个参数字符串中的字符,则这些字符将被第三个参数字符串中相应位置的字符所替换。
  • Concat 返回连接的参数。
  • String Literal 用于输入字符串类型。

节点

“节点”菜单包含了以下函数:

  • Local Name 返回参数节点集(最初使用文档顺序排列)中的节点展开名称的本地部件(展开的名称包含本地部件和名称空间 URI)。(展开的名称包含本地部件和名称空间 URI。)
  • Name 返回表示参数节点集(最初使用文档顺序排列)中的节点展开名称的限定名称(展开的名称包含本地部件和名称空间 URI)。
  • Namespace URI 返回参数节点集(最初使用文档顺序排列)中的节点展开名称的名称空间 URI(展开的名称包含本地部件和名称空间 URI)。
  • Position 返回上下文位置。
  • Last 返回上下文大小。
  • Count 返回参数节点集中的节点数。

数值

“数值”菜单包含了以下函数:

  • Number 将参数转换为数值。有关此逻辑的详细信息,请参见 XPath 1.0 规范。
  • Number Literal 用于输入数值类型。
  • Round 返回与参数最接近的整数数字。
  • Sum 对于参数节点集中的每个节点,返回将节点字符串值转换为数值后所得结果的和。
  • Floor 返回不大于该参数的最大整数值。
  • Ceiling 返回不小于该参数的最小整数值。

回到顶部

 

映射示例

这些示例说明了多种不同的映射用例:

 

分配活动用例

假定您希望 BPEL 流程复制从合作伙伴接收的数据。请执行以下任务:

  1. 在接收活动后面添加一个分配活动。
  2. 选择该分配活动,并使用编辑器定义一个或多个分配副本。

以下示例说明了不使用任何 XPath 函数的分配副本。ItineraryIn 变量的 itinerary 部分将被复制到 ItineraryOut 变量的 itinerary 部分。请注意,左窗格和右窗格都包含相同的树组件。

使用直接映射的分配活动映射的屏幕截图
单击以放大

以下示例说明了使用 concat XPath 函数的分配副本。输入变量 paramA 将连接至字符串型 Parameter A: 的结尾,并被复制到输出变量 paramA

使用 concat XPath 函数的分配活动映射的屏幕截图
单击以放大

If 活动用例

假定您希望仅当某个条件为 true 时才执行一系列步骤。请执行以下任务:

  1. 在 BPEL 流程中添加一个 If 活动。
  2. 选择该分配活动,并使用编辑器定义一个或多个分配副本。
  3. 在 If 活动内添加一些步骤。

以下示例说明了该条件的映射。此映射使用 Not XPath 函数,该函数位于菜单栏的“布尔值”部分中。如果此航线包含机票预订,则 Not XPath 函数将返回 true。结果将被映射到右窗格中的“结果”节点。

If 活动映射的屏幕截图
单击以放大

谓词用例

假定您希望 BPEL 流程复制客户方(不超过 2 人)行程的行程数据。则输入记录会包含一个变量,用于指定客户方的旅客人数。请执行以下任务:

  1. 在“BPEL映射器”窗口的左窗格中,右键单击标记为星号(*)的重复节点,然后选择“新建谓词”。
    将显示“谓词编辑器”窗口。
  2. 在中间窗格中添加 Less Than XPath 函数。
  3. 在中间窗格中添加 number literal XPath 函数。将值设置 3
  4. 将变量节点映射到 Less Than XPath 函数的第一个参数。
  5. number literal XPath 函数的结果映射到 Less Than XPath 函数的第二个参数。
  6. Less Than XPath 函数的结果映射到右窗格中的“结果”节点。单击“确定”。
  7. 单击“确定”。

以下示例说明了映射在“谓词”窗口中的显示方式。单击“确定”后,您就可以在分配副本中使用谓词节点了。

谓词映射的屏幕截图
单击以放大

如果 BPEL 流程收到了以下 XML,则谓词将选择第一个 Air 标记。

<Air>
<NumberInParty>2</NumberInParty>
</Air>
<Air>
<NumberInParty>4</NumberInParty>

</Air>
<Air>
<NumberInParty>6</NumberInParty>
</Air>

回到顶部

Companion
Projects:
                  Powered by: