XPath 表達式編輯器用於處理一些業務過程元素。對每個元素允許使用下列表達式:復制表達式、條件表達式或時間函數用法。
用戶界面
BPEL 映射器具有一個易於使用的直觀的用戶界面。當選擇可以包含 XPath 表達式的 BPEL 圖元素時,將出現BPEL 映射器窗口。BPEL 映射器用於下列業務過程元素:Assign、If、If 的 ElseIf 元素、ForEach、RepeatUntil、While 和 Wait。每個元素都具有允許使用的表達式,包括復制表達式、條件表達式、時間函數用法。條件表達式是為 If、If 的 ElseIf 元素、While 和 RepeatUntil 元素定義的。復制表達式是為 Assign 元素定義的。持續時間表達式是為 Wait 元素定義的。帶有參數的條件表達式是為 ForEach 元素定義的。使用BPEL 映射器界面,可以進行計算:將上述 XPath 運算和函數分配給本地和全局變量、XSD 元素和屬性以及各個部分。
在 BPEL 設計器設計視圖的上下文菜單中,上述業務過程元素都具有“顯示BPEL 映射器”項。關閉BPEL 映射器窗口時,上下文菜單可用。還可以通過從主菜單中選擇“窗口”>“BPEL 映射器”打開 XPath 表達式編輯器窗口。
可以編輯 BPEL 文件的源文本中的 XPath 表達式,如圖 1 所示。BPEL 映射器顯示正確的修改,如圖 2 所示。
圖 1:BPEL 文件的源代碼視圖
圖 2:Assign1 的添加操作
BPEL 映射器中使用的函數和運算符
BPEL 映射器支持 1.0 版的 XML Path 語言(XPath 1.0)。XPath 語言是 XML 平台的關鍵部分。由 W3C 聯盟開發的 XPath 語言是用於解決 XML 文檔結構部分的一種語言。此語言具有用於操作字符串、數字和布爾值的函數。XPath 的主要語法構造是表達式。作為處理表達式的結果,屬於下列四種基本類型之一的對象將顯示:
節點集合 - 沒有重復項的無序的節點集合
布爾 - 真或假
數字 - 帶浮點的數字
字符串 - UCS 符號序列
XPath 語言支持數字表達式、等式和比較運算,以及布爾表達式。BPEL 映射器支持部分 XPath 操作和函數。
數字表達式和運算
BPEL 映射器的 Operator 菜單如下所示。
圖 3:BPEL 映射器“運算符”菜單
數字表達式
數字表達式用於對數字執行算術運算。等式性運算用於檢查兩個值的相等性。XPath 語言中的任何數字都具有帶浮點的表示形式。數字可以接受 64 位格式的任何 IEEE 754 DP 值。這包括特殊的“非數字”(NaN) 值、正無窮和負無窮,以及正零和負零。
表 1:數字表達式中使用的運算符
運算符 描述 示例 結果 + 兩個數字相加 2 + 3 5 - 一個數字減去另一個數字 5 - 2 3 * 一個數字乘以另一個數字 2 * 5 10 div 一個數字除以另一個數字 10 div 2 5 mod 一個數字除以另一個數字得到的余數 11 mod 3 2 - 一元減 -2 -2相等運算
注意,length = 5.50 是下表的初始數據。
表 2:相等運算中使用的運算符
運算符 描述 示例 結果 = 相等運算 length=5.50 true != 不相等運算 length!=5.50 false比較運算
注意,length = 5.50 是下表的初始數據。
表 3:比較運算中使用的運算符
運算符 描述 示例 結果 < 小於 length<5.50 false <= 小於或等於 length<=5.50 true > 大於 length>5.50 false >= 大於或等於 length>=5.50 true注意:如果進行比較的對象都不是 node-set,並且運算符是 <=、<、=> 或 >,則所比較的對象首先轉換為數字,然後才進行比較。
布爾表達式和函數
BPEL 映射器的“布爾”菜單如下所示。
圖 4:BPEL 映射器“布爾”菜單
布爾表達式
answer = true
表 4:布爾表達式中使用的運算符
運算符 描述 示例 結果 or 如果至少一個布爾操作數等於 true,則返回 true false() or answer true and 如果兩個布爾操作數都等於 true,則返回 true true() and answer true布爾函數
注意,answer = true 和 XML:lang="en" 上下文節點語言是下表的初始數據。
表 5:布爾函數用法
名稱 描述 示例 結果 boolean 將參數轉換為布爾類型 boolean(2) true false 返回 false false() or answer true true 返回 false true() or answer true not 返回否定 not(false()) true lang 返回 true 或 false,這取決於 XML:lang 屬性中定義的上下文節點語言是否與屬性字符串中定義的語言相同(或子語言相同) lang('en') true數字函數
BPEL 映射器的“數字”菜單如下所示。
圖 5:BPEL 映射器“數字”菜單
表 6:數字函數用法
名稱 描述 示例 結果 round 取整為最接近的整數 round (3.14) 3 ceiling 函數返回大於或等於參數的最小整數 ceiling (3.14) 4 floor 函數返回小於或等於參數的最大整數 floor (3.14) 3 number 將參數轉換為數字 number(length) length 元素的數字值 sum 函數將節點集合中的每個節點轉換為數字並對其求和 sum(/apple/count) 所有 count 節點之和 Number Literal 數字(在 XPath 中,數字具有帶浮點的表示形式) 1.2 1.2字符串函數
BPEL 映射器的“字符串”菜單如下所示。
圖 6:BPEL 映射器“字符串”菜單
表 7:字符串函數用法
名稱 描述 示例 結果 string 將參數轉換為字符串 string(3.14) '3.14' string-length 返回字符串長度 string-lenght('MyString') 8 substring 返回第一個參數字符串的一部分,以第二個參數設置的位置開始,並具有第三個參數中設置的長度。 substring('1234',2,3) '234' substring-after 返回第一個參數字符串的一部分,即在第二個參數字符串第一次出現之後的部分。 substring-after('20-30','-') '30' substring-before 返回第一個參數字符串的一部分,即在第二個參數字符串第一次出現之前的部分。 substring-before('14-30','-') '14' contains 如果第一個字符串包含第二個字符串,則返回 true contains('XPath','X') true starts-with 如果第一個字符串以第二個字符串開始,則返回 true starts-with('XPath','X') true concat 返回兩個字符串的連接 concat('String1 ','String2') 'String1 String2' normalize-space 返回空格符號正常化的參數字符串 normalize-space(' 1 2 ') '1 2' translate 返回第一個參數字符串,其中第二個參數字符串中設置的符號替換為第三個參數字符串中相應位置的符號 translate('black','kcalb','etihw') 'white' String Literal 字符串常量;字符串由在 XML 引用中定義的一系列空符號和其他符號組成 'String' 'String'節點集合函數BPEL 映射器的“節點”菜單如下所示。
圖 7:BPEL 映射器“節點”菜單
下列代碼是 SOAP 消息的示例。
代碼示例 1:SOAP 消息示例<soapenv:Envelope
xsi:schemaLocation="http://schemas.XMLsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenv="http://schemas.XMLsoap.org/soap/envelope/"
xmlns:syn="http://XML.Netbeans.org/schema/SynchronousSample">
<soapenv:Body>
<syn:typeA>
<syn:paramA>String1</syn:paramA>
<syn:paramA>String2</syn:paramA>
<syn:paramA>String3</syn:paramA>
</syn:typeA>
</soapenv:Body>
</soapenv:Envelope>
表 8:節點集合函數用法
名稱 描述 示例 結果 count 返回參數中節點集合的個數 count($inputVar.inputType/xs:paramA) 3 last 返回最後一個元素在集合中的編號 $inputVar.inputType/paramA[last()] String3 position 返回元素在集合中的位置 local-name 返回第一個標記在無名稱空間的集合中的名稱 local-name($inputVar.inputType/xs:paramA) paramA name 返回第一個標記在集合中的完整名稱 name($inputVar.inputType/xs:paramA) syn:paramA namespace-uri 返回對定義名稱空間的 url 的引用 namespace-uri($inputVar.inputType/xs:paramA) http://XML.Netbeans.org/schema/SynchronousSample用於操作日期和時間的函數
BPEL 映射器允許您在圖形界面的幫助下設置常量並使用時間函數。
BPEL 映射器的 Datetime 菜單如下所示。
圖 8:BPEL 映射器 Datetime 菜單
表 9:用於操作日期和時間的函數用法
名稱 描述 current-time 返回當前時間 current-date 返回當前日期 current-dateTime 返回當前日期和時間 Duration Literal 字符串;允許以 'P1Y2M3DT4H5M6S' 格式設置時間間隔。結束語
圖形表示形式提供了對 XPath 表達式的方便分析和查看。BPEL 映射器是一種允許在可視模式下創建和編輯 XPath 表達式的工具。BPEL 映射器圖形界面允許設置常量、使用時間函數並處理謂詞。BPEL 映射器界面允許使用本文列出的 XPath 操作和函數對本地和全局變量、XSD 元素和屬性、以及各部分執行計算。