この付録では、Oracle SOA Suite、Oracle BPEL Process Manager、Oracle Mediatorおよびヒューマン・ワークフロー用のXPath拡張関数について説明します。また、より高度なXPath関数、Oracle JDeveloperにおける式ビルダーでのXPath式の作成方法およびユーザー定義XPath拡張関数の作成方法についても説明します。Oracleには、新しい関数を追加するためにOracle SOA SuiteおよびXPath標準に組み込まれた機能を使用する、XPath関数が用意されています。
項目は次のとおりです。
XPath関数の詳細は、次のURLを参照してください。
http://www.w3.org
この項では、次のタイプのSOA XPath拡張関数について説明します。
データベース関数
日付関数
算術関数
文字列関数
この項では、次のデータベース関数について説明します。
この関数は、パラメータから生成されたSQL問合せに基づいて文字列を返します。
文字列は、次の問合せを実行することによって取得されます。
SELECT outputColumn FROM table WHERE inputColumn = key
それを、JDBC接続文字列(jdbc:oracle:thin:username/password@host:port:sid)、またはデータソースJNDI識別子のいずれかのデータソースに対して実行します。JDBC接続文字列を使用する場合は、Oracle Thinドライバのみがサポートされます。
例:
oraext:lookup-table('employee','id','1234','last_name','jdbc:oracle:thin:xyz/xyz@localhost:1521:ORCL')
シグネチャ:
oraext:lookup-table(table, inputColumn, key, outputColumn, data source)
引数:
table: - データの抽出元の表。
inputColumn: 表内の列。
key: 入力列のキーの値。
outputColumn: データを出力する列。
data source: データのソース。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、指定されたデータベースに対してSQL問合せを実行して、ノードセットを返します。
シグネチャ:
oraext:query-database(sqlquery as string, rowset as boolean, row as boolean, data source as string)
引数:
sqlquery: 実行するSQL問合せ。
rowset: 行を要素で囲むかどうかを指定します。
row: 各行を要素で囲むかどうかを指定します。
data source: データベースのJDBC接続文字列(jdbc:oracle:thin:username/password@host:port:sid)またはJNDI名。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、Oracleの順序の次の値を返します。
次の値は、次の問合せを実行することによって取得されます。
SELECT sequence.nextval FROM dual
それを、JDBC接続文字列(jdbc:oracle:thin:username/password@host:port:sid)、またはデータソースJNDI識別子のいずれかのデータソースに対して実行します。JDBC接続文字列を使用する場合は、Oracle Thinドライバのみがサポートされます。
例:
oraext:sequence-next-val('employee_id_sequence','jdbc:oracle:thin:xyz/xyz@localhost:1521:ORCL')
シグネチャ:
oraext:sequence-next-val(sequence as string, data source as string)
引数:
sequence: データベース内の順序番号。
data source: JDBC接続文字列またはデータソースJNDI識別子。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この項では、次の関数について説明します。
この関数は、指定された期間にdateTimeを加算した新しい日時の値を返します。
期間の値が負の場合、返される値はdateTimeより前の日時になります。
シグネチャ:
xpath20:add-dayTimeDuration-from-dateTime(dateTime as string, duration as string)
引数:
dateTime as string: 期間を加算するdateTime(文字列書式)。
duration as string: dateTimeに加算する期間、または期間が負の場合は減算する期間(文字列書式)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、現在の日付をISO書式YYYY-MM-DDで返します。
シグネチャ:
xpath20:current-date(object)
引数:
Object: 標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、現在の日時の値をCCYY-MM-DDThh:mm:ss.sTZDのISO書式(sはミリ秒単位の時間を示す)で返します。
たとえば、時間が、タイムゾーンzの2004年5月12日の午後(PM)の6時17分15秒125ミリ秒である場合、current-dateTimeは次の値を返します。
2004-05-12T18:17:15.125Z
setDomainEnvファイルでcom.oracle.soa.xpath.datetimeWithoutMillisがtrueに設定されている場合、この関数によって次の書式で現在の日時の値が返されます(ssは秒単位の時間を示します)。
CCYY-MM-DDThh:mm:ss.TZD
秒単位で日時の値を表示する手順は、次のとおりです。
次のファイルを開きます。
UNIXオペレーティング・システムでは、$MIDDLEWARE_HOME/user_projects/domains/domain_name/bin/setDomainEnv.shを開きます。
Windowsオペレーティング・システムでは、MIDDLEWARE_HOME\user_projects\domains\domain_name\bin\setDomainEnv.batを開きます。
JAVA_OPTIONSセクションにcom.oracle.soa.xpath.datetimeWithoutMillisを追加して、値をtrueに設定します。たとえば、JAVA_OPTIONSは、現在、次のように設定されています。
JAVA_OPTIONS="${JAVA_OPTIONS} ${JAVA_PROPERTIES}
-Dwlw.iterativeDev=${iterativeDevFlag} -Dwlw.testConsole=${testConsoleFlag}
-Dwlw.logErrorsToConsole=${logErrorsToConsoleFlag} "
変更後、JAVA_OPTIONSは次のようになります。
JAVA_OPTIONS="${JAVA_OPTIONS} ${JAVA_PROPERTIES}
-Dwlw.iterativeDev=${iterativeDevFlag} -Dwlw.testConsole=${testConsoleFlag}
-Dwlw.logErrorsToConsole=${logErrorsToConsoleFlag}
-Dcom.oracle.soa.xpath.datetimeWithoutMillis=true"
サーバーを再起動します。
IBM WebSphereでのこのプロパティの設定の詳細は、Oracle Fusion Middlewareサード・パーティ・アプリケーション・サーバー・ガイドを参照してください。
シグネチャ:
xpath20:current-dateTime(object)
引数:
object: 標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、現在の時間をISO書式で返します。書式はhh:mm:ssTZDです。
シグネチャ:
xpath20:current-time(object)
引数:
object: 標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから日を返します。デフォルトの日は1です。
シグネチャ:
xpath20:day-from-dateTime(object)
引数:
object: 文字列としての標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、指定された書式を使用して書式設定したdateTimeの文字列を返します。日時書式文字列の例は、W3C XSL Transformationsドキュメントを参照してください。たとえば、[Y0001]-[M01]-[D01]です。
シグネチャ:
xpath20:format-dateTime(dateTime as string, format as string)
引数:
dateTime: 書式設定の対象となるdateTime。
format: 出力の書式。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから時間を返します。デフォルトの時間は0です。
シグネチャ:
xpath20:hours-from-dateTime(dateTime as string)
引数:
dateTime: 日時の文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、現在のタイムゾーンを協定世界時(UTC)からの偏差を示すISO書式+/- hh:mmで返します。
シグネチャ:
xpath20:implicit-timezone
引数:
この関数は引数を使用しません。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから分を返します。デフォルトの分は0です。
シグネチャ:
xpath20:minutes-from-dateTime(dateTime as string)
引数:
dateTime as string: 日時。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから月を返します。デフォルトの月は1 (1月)です。
シグネチャ:
xpath20:month-from-dateTime(dateTime as string)
引数:
dateTime as string: 書式設定の対象となるdateTime。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから秒を返します。デフォルトの秒は0です。
シグネチャ:
xpath20:seconds-from-dateTime(dateTime as string)
引数:
dateTime as a string: 文字列としてのdateTime。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから期間を減算して、新規のdateTimeを返します。
期間の値が負の場合、返されるdateTime値は指定したinput-dateTimeより後の日時になります。
シグネチャ:
xpath20:subtract-dayTimeDuration-from-dateTime(dateTime as string, duration as string)
引数:
dateTime as string: 期間を減算するdateTime(文字列書式)。
duration as string: dateTimeから減算する期間、または期間が負の場合は加算する期間(文字列書式)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xp20
この関数は、dateTimeからタイムゾーンを返します。デフォルトのタイムゾーンはGMT+00:00です。
シグネチャ:
xpath20:timezone-from-dateTime(dateTime as string)
引数:
dateTime as string: タイムゾーンを返す対象となるdateTime。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この項では、次の関数について説明します。
この関数は、inputNumberの絶対値を返します。inputNumberが負でない場合は、inputNumberを返します。inputNumberが負の場合は、inputNumberからマイナス符号をとった値を返します。
例:
abs(-1)は、1を返します。
シグネチャ:
xpath20:abs(inputNumber as number)
引数:
inputNumber as number: 絶対値を返す対象となる数値。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この項では、文字列関数について説明します。
この関数は、inputStringとcompareStringの各文字のUnicode値を比較して、これらの文字列間の辞書的な差異を返します。
inputStringがcompareStringより辞書的に前にある場合は、-1を返します。
inputStringとcompareStringが等しい場合は、0を返します。
inputStringがcompareStringより辞書的に後にある場合は、1を返します。
例:
xpath20:compare('Audi', 'BMW') returns -1
シグネチャ:
xpath20:compare(inputString as string, compareString as string)
引数:
variableName: データのソース変数。
propertyName: プロパティの修飾名(QName)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、大/小文字を無視してinputStringとcompareStringの各文字のUnicode値を比較して、これらの文字列間の辞書的な差異を返します。表B-1に詳細を示します。
表B-1 戻り値
| この関数からの戻り値 | 条件 |
|---|---|
|
|
|
|
|
|
|
|
|
例:
oraext:compare-ignore-case('Audi','bmw')は、-1を返します。
シグネチャ:
xp:compare-ignore-case(inputString as string, compareString as string)
引数:
inputString: 検索されるデータの文字列
CompareString: 入力文字列と比較される文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: oraext
この関数は、nodeSetから作成されたデリミタ付き文字列を返します。
シグネチャ:
oraext:create-delimited-string(nodeSet as node-set, delimiter as string)
引数:
nodeSet: デリミタ付き文字列に変換するノードセット。
delimiter: 出力文字列の項目を区切る文字(例 - カンマ、セミコロン)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputStringがsearchStringで終わる場合にtrueを返します。
例:
xpath20:ends-with('XSL Map','Map')は、trueを返します。
シグネチャ:
xpath20:ends-with(inputString as string, searchString as string)
引数:
inputString: 検索されるデータの文字列
searchString: 検索する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、渡された引数で書式設定されたメッセージを返します。引数は、少なくとも1つが必須で最大10個までサポートされます。
例:
oraext:format-string('{0} + {1} = {2}','2','2','4')は、'2 + 2 = 4'を返します。
シグネチャ:
oraext:format-string(string,string,string...)
引数:
string: 書式設定された出力に使用する文字列の1つ。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、入力要素のXML表現を返します。
シグネチャ:
oraext:get-content-as-string(element as node-set)
引数:
element as node-set: XML表現として返される入力要素。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、指定されているネイティブ・フォーマットのファイルを解析します。この関数は、BPELプロセスのassignアクティビティを設計する場合に使用します。
シグネチャ:
oraext:get-content-from-file-function(fileName, nxsdTemplate?, nxsdRoot?)
例:
oraext:get-content-from-file-function("file:/c:/Ftab.txt",
"file:/c:/Ftab_1.xsd","root")
引数:
fileName: ファイルの名前。
nxsdTemplate: 出力のネイティブXSD (NXSD)テンプレート。
nxsdRoot-: NXSDルート。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、キーに対しロケール固有の文字列を返します。この関数は言語、国、変数およびリソースのバンドルを使用して正しいリソース・バンドルを識別します。すべてのパラメータは文字列書式である必要があります。パラメータ値を、get-localized-stringに送信する前に文字列に変換するには、string()関数を使用します。
リソース・バンドルは、resourceLocationに対してresourceBaseURLを解決することによって取得されます。URLは、/で終わる場合にかぎりディレクトリとみなされます。
使用方法: oraext:get-localized-string(resourceBaseURL as string, resourceLocation as string, resource bundle as string, language as string, country as string, variant as string, key as string)
例: oraext:get-localized-string('file:/c:/','','MyResourceBundle','en','US','','MSG_KEY')は、C:\ディレクトリにあるリソース・バンドル'MyResourceBundle'からロケール固有の文字列を返します。
シグネチャ:
oraext:get-localized-string(resourceURL,resourceLocation,resourceBundleName,language,country,variant,messageKey)
引数:
resourceURL: リソースのURL。
resourceLocation: リソースのサブディレクトリの場所。
resourceBundleName: リソース・バンドルが含まれるZIPファイルの名前。
language: ローカライズされる出力の言語。
country: ローカライズされる出力の国。
variant: ローカライズされる出力の言語変数。
messageKey: リソース・バンドルのメッセージ・キー。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputString内で最初に出現するsearchStringのゼロから始まる索引を返します。
searchStringが見つからない場合は-1を返します。
例:
oraext:index-within-string('ABCABC, 'B') returns 1
シグネチャ:
oraext:index-within-string(inputString as string, searchString as string)
引数:
inputString: 検索されるデータの文字列
searchString: inputString内で検索する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputString内で最後に出現するsearchStringのゼロから始まる索引を返します。
searchStringが見つからない場合は-1を返します。
例:
oraext:last-index-within-string('ABCABC', 'B') returns 4
シグネチャ:
oraext:last-index-within-string(inputString as string, searchString as string)
引数:
inputString: 検索されるデータの文字列
searchString: inputString内で検索する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputStringから先頭の空白文字をすべて削除した値を返します。
例:
oraext:left-trim(' account ') returns 'account '
シグネチャ:
oraext:left-trim(inputString)
引数:
inputString: 先頭の空白を削除する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputStringのすべての文字を対応する小文字に変換した値を返します。
例:
xpath20:lower-case('ABc!D')は、'abc!d'を返します。
シグネチャ:
xpath20:lower-case(inputString)
引数:
inputString: 小文字にするデータの文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、intputStringが正規表現パターンregexPatternに一致する場合にtrueを返します。
例:
xpath20:matches('abracadabra', '^a.*a$') returns true
シグネチャ:
xpath20:matches(intputString, regexPattern)
引数:
inputString: 一致する必要のあるデータの文字列。
regexPattern: 正規表現パターン。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、inputStringから末尾の空白文字をすべて削除した値を返します。
例:
oraext:right-trim(' account ') returns ' account'
シグネチャ:
oraext:right-trim(inputString as string)
引数:
inputString: 末尾の空白を削除する入力文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputStringのすべての文字を対応する大文字に変換した値を返します。
例:
xpath20:upper-case('abCd0')は、'ABCD0'を返します。
シグネチャ:
xpath20:upper-case(inputString as string)
引数:
inputString: 大文字にするデータの文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この項では、次のBPEL XPath拡張関数について説明します。
この関数は、stringの内容を一重引用符で囲んで返します。
シグネチャ:
ora:addQuotes(string)
引数:
string: 引用符を追加する文字列。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数はLDAPユーザーを認証し、trueまたはfalseを返します。
authenticate、listUsers、lookupUser、searchのXPath関数は、LDAPサーバーからの情報(通常はLDAPユーザーの詳細)を取得する参照と検索の機能を提供します。
これらのXPath関数は、構成ファイルを使用してJNDIのサーバー・アクセス情報を取得します(たとえば、コンテキスト・ファクトリ、LDAPサーバーのプロバイダURL、認証タイプなど)。構成ファイルはdirectories.xmlという名前で、BPELプロジェクトの.bpelファイルと同じディレクトリに格納されている必要があります。これらのXPath関数をコールするには、このファイルを用意する必要があります。
例B-1に、directories.xmlファイルの形式を示します。
例B-1 directories.xmlファイルの形式
<?xml version="1.0" ?> <directories> <directory name='people'> <property name="java.naming.provider.url">ldap://servername:port</property> <property name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</property> <property name="java.naming.security.principal">[username]</property> <property name="java.naming.security.authentication">simple</property> <property name="java.naming.security.credentials">[passord]</property> <property name="entryDN">[entry dn]</property> </directory> </directories>
例B-2に、directories.xmlファイルの例を示します。
例B-2 directories.xmlファイルの例
<?xml version="1.0" ?> <directories> <directory name='people'> <property name="java.naming.provider.url">ldap://myhost.us.example.com:7001</property> <property name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</property> <property name="java.naming.security.principal">cn=admin</property> <property name="java.naming.security.credentials">weblogic</property> <property name="java.naming.security.authentication">simple</property> <property name="entryDN">ou=people,ou=myrealm,dc=soainfra</property> </directory> </directories>
シグネチャ:
ldap:authenticate('directoryName','userId','password')
パラメータ:
directoryName: directories.xmlファイルで指定されているディレクトリ名。
userId: LDAPサーバー・ログインのユーザーID。
password: LDAPサーバー・ログインのパスワード。
戻り値:
trueまたはfalse
例:
ldap:authenticate('people','weblogic','weblogic')
このXPath関数の場合、directories.xmlファイルで指定する必要があるプロパティは2つだけです。
java.naming.provider.url
java.naming.factory.initial
この関数はノード・リストに追加します。NULLまたは空のノード・リストは追加先にできません。
シグネチャ:
ora:appendToList('variableName', 'partName'?, 'locationPath'?, Object)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(オプション)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。
Object: リストまたは単一のアイテムを指定できます。リストを指定した場合は、リスト内の各アイテムが追加されます。追加される各アイテムは、要素、または作成されるノードの文字列値を持つ要素です。
プロパティID:
deprecated
リストに追加するには、bpelx:copyListまたはbpelx:append拡張アクティビティを使用してください。
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
|
注意:
|
この関数は、ノード・リストまたはノードをコピーします。NULLまたは空のノード・リストはコピー先にできません。
シグネチャ:
ora:copyList('variableName', 'partName'?, 'locationPath'?, Object)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(オプション)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。
Object: リストまたは単一のアイテムを指定できます。リストを指定した場合は、リスト内の各アイテムがコピーされます。コピーされる各アイテムは、要素、または作成されるノードの文字列値を持つ要素です。
プロパティID:
deprecated
リストに追加するには、bpelx:copyList拡張アクティビティを使用してください。
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
|
注意:
|
この関数は、要素のサイズを整数として返します。
シグネチャ:
ora:countNodes('variableName', 'partName'?, 'locationPath'?)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(オプション)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、XMLファイルのコンテンツを返します。
シグネチャ:
ora:doc('fileName','xpath'?)
引数:
fileName: XMLファイルの名前。
xpath: XMLファイルの一部(ノードセット、ノード・リスト、リーフ・ノードなど)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、ストリーミングXPath APIを使用して変換します。これは、バッチ処理と呼ばれる固有の概念を使用し、トランスフォーメーション・エンジンによってトランスフォーメーションの結果がメモリーにマテリアライズされないようにします。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。ただし、処理できるのは、for-eachなど、順方向のみのXSLコンストラクトのみです。targetTypeには、SDOMまたはATTACHMENTを指定できます。
シグネチャ:
ora:doStreamingTranslate('input SDOM or attachment element', 'streaming xpath context', 'SDOM or ATTACHMENT', 'attachment element?')
引数:
input SDOM or attachment element
streaming xpath context
SDOM or ATTACHMENT
attachment element
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
詳細は、「ora:doStreamingTranslate XPath関数を使用したアタッチメントの変換」を参照してください。
この関数は、入力データをXMLに変換します。入力データには、Base64エンコード・データが含まれる文字列、添付ファイルまたは要素を指定できます。targetTypeには、DOM、ATTACHMENTまたはSDOMを指定できます。
シグネチャ:
ora:doTranslateFromNative('input','nxsdTemplate','nxsdRoot','targetType','attachment element?')
引数:
input: XPath関数の入力データ。
nxsdTemplate: 入力データからXMLフォーマットへの変換に使用するNXSDスキーマ。
nxsdRoot: NXSDスキーマのルート要素。
targetType: XPath関数がネイティブ・データをXMLに変換する方法を指定します。
attachment element: 返されるXMLの添付ファイルです。このパラメータはオプションです。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、入力のDOMを文字列または添付ファイルに変換します。targetTypeは、STRINGまたはATTACHMENTです。
シグネチャ:
ora:doTranslateToNative('input','nxsdTemplate','nxsdRoot','targetType','attachment element?')
引数:
input: XPath関数の入力データ。このデータには、カンマ区切り値(CSV)などのネイティブ・フォーマットに変換する必要があるDOMまたはSDOMデータを使用できます。
入力ノードは通常、受信するDOMのルート要素です。例B-3に詳細を示します。
例B-3 doTranslateToNative関数
med:doTranslateToNative($in.request/inp1:Root-Element, 'xsd/address_csv.xsd',
@ 'Root-Element','STRING')"
ただし、入力ノードとして、受信するDOMのルート要素ではなくサブ要素を使用できます。例B-4に詳細を示します。
例B-4 doTranslateToNative関数
med:doTranslateToNative($in.request/inp1:requestToNative/ns1:Root-Element,
'xsd/address_csv.xsd', 'Root-Element','ATTACHMENT',
$in.request/inp1:requestToNative/inp1:attachment)
このような場合は、この関数を適切に実行するために、NXSDのスキーマ・ノードに次のプロパティを設定する必要があります。
nxsd:useArrayIdentifiers="true"
入力が大規模な場合は、この設定によってこの関数のパフォーマンスに悪影響を与える可能性があります(その場合は、dostreamingxlate関数を使用します)。
nxsdTemplate: 入力データからXMLフォーマットへの変換に使用するNXSDスキーマ。
nxsdRoot: NXSDスキーマのルート要素。
targetType: XPath関数がネイティブ・データをXMLに変換する方法を指定します。
attachment element: 返されるXMLの添付ファイルです。このパラメータはオプションです。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、XSLTの複数パラメータをサポートするWS-BPEL 2.0のdoXSLTransform機能を実装します。この関数を使用する場合は、XSL template matchをルート(/)に設定しないでください。ルート要素に設定する必要があります。
シグネチャ:
ora:doXSLTransform('url_to_xslt',input,['paramQname',paramValue]*)
引数:
url_to_xslt: XSLスタイルシートのURLを指定します。
input: 入力変数名を指定します。
paramQname: パラメータQNameを指定します。
paramValue: パラメータ値を指定します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、doXSLTransform()の補完XPath関数です。目的は、XSLTテンプレートがドキュメントに一致したときにトランスフォーメーションを実行することです。
例B-5に、doXSLTransformForDoc関数を示します。
例B-5 doXSLTransformForDoc Functions
<function name="ora:doXSLTransformForDoc">
<className>com.collaxa.cube.xml.xpath.functions.xml.DoXSLTransformForDocument
</className>
<return type="node-set"/>
<params>
<param name="template" type="string"/>
<param name="input" type="string"/>
<param name="properties" type="string" minOccurs="0" maxOccurs="unbounded"/>
</params>
<desc resourceKey="PI_FUNCTION_DESC_DOXSLTRANSFORM_FOR_DOC"></desc>
<detail resourceKey="PI_FUNCTION_DESC_LONG_DOXSLTRANSFORM_FOR_DOC">
This function is a complement xpath function to doXSLTransform(). It aims
to do the transformation when the xslt template matching the
document. The signature of this function is <i>ora:doXSLTransformForDoc('url_to_
xslt',input,['paramQname',paramValue]*)</i>.
</detail>
<group>BPEL XPath Extension Functions</group>
</function>
シグネチャ:
ora:doXSLTransformForDoc('url_to_xslt',input,['paramQname',paramValue]*)
引数:
url_to_xslt: XSLスタイルシートのURLを指定します。
input: 入力変数名を指定します。
paramQname: パラメータQNameを指定します。
paramValue: パラメータ値を指定します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
ora:doXSLTransformForDoc関数を使用すると、大きいXSLT/XQuery操作の結果をシステム・ディレクトリの一時ファイルに書き込むことができます。その後、ドキュメントは必要なときに一時ファイルからロードされます。これにより、ドキュメント全体をバイナリXMLとしてメモリーにキャッシュする必要がなくなります。
詳細は、第45.1.3.9項「XPath関数を使用し、大きいXSLT/XQuery出力をファイル・システムに書き込み」を参照してください。
この関数は、標準XSD日付書式を出力に適した文字に変換します。
シグネチャ:
ora:formatDate('dateTime', 'format')
引数:
dateTime: XSD書式の日付関連値を指定します。引数が文字列でない場合、この関数は、string()関数が適用された場合と同じように動作します。引数が日付でない場合、出力は空の文字列になります。引数が有効なXSD日付で、フィールドの一部が空の場合は、未指定のフィールドの充填が試みられます。たとえば、2003-06-10T15:56:00のようになります。
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
一意のGUIDを生成します。
シグネチャ:
ora:generateGUID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、アプリケーション名を返します。
シグネチャ:
ora:getApplicationName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、href関数から添付ファイルのコンテンツを取得します。
シグネチャ:
ora:getAttachmentContent(varName[, partName[, query]])
引数:
varName: データのソース変数を指定します。
partName: 変数から選択するパートを指定します(オプション)。
query: 絶対ロケーション・パスを指定して(/は、パート全体を表す文書フラグメントのルートを意味する)、パートを表す文書フラグメント内のサブツリーのルートを識別します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
詳細は、「SOAPアタッチメントのコンテンツの読取りおよびエンコード」を参照してください。
この関数は、コンポーネント名を返します。
シグネチャ:
ora:getComponentName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポーネント・インスタンスIDを返します。
シグネチャ:
ora:getComponentInstanceID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポジット名を返します。
シグネチャ:
ora:getCompositeName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELプロセスのコンポジット・インスタンスIDを返します。
シグネチャ:
ora:getCompositeInstanceID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポジットURLを返します。
シグネチャ:
ora:getCompositeURL()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、要素のコンテンツをXML文字列として返します。
シグネチャ:
ora:getContentAsString(element elementAsNodeList)
引数:
element: 要素(データのソース)。
elementAsNodeList: ノード・リストとしての要素。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、対話IDを返します。
シグネチャ:
ora:getConversationId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、インスタンスの作成者を返します。
シグネチャ:
ora:getCreator()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在の日付を文字列として返します。
シグネチャ:
ora:getCurrentDate('format'?)
引数:
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在の日時を文字列として返します。
シグネチャ:
ora:getCurrentDateTime('format'?)
引数:
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在の時間を文字列として返します。
シグネチャ:
ora:getCurrentTime('format'?)
引数:
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、実行コンテキストID (ECID)を返します。
シグネチャ:
ora:getECID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、要素の配列から、indexを使用して要素を返します。
シグネチャ:
ora:getElement('variableName', 'partName', 'locationPath', index)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(必須)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。必須です)。
index: 動的索引値。最初のノードの索引は1です。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、フォルトを文字列値として返します。
シグネチャ:
ora:getFaultAsString()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
詳細は、第12.6項「getFaultAsString XPath拡張関数によるフォルト詳細の取得」を参照してください。
この関数は、フォルト名を返します。
シグネチャ:
ora:getFaultName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されているグループ・エイリアスのユーザーIDのリストを返します。
シグネチャ:
ora:getGroupIdsFromGroupAlias(String aliasName)
引数:
aliasName: ユーザーまたはグループのリストのエイリアス。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、インスタンスIDを返します。
シグネチャ:
ora:getInstanceId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、DOMノードの値を文字列として返します。
シグネチャ:
ora:getNodeValue(node)
引数:
node: DOMノード。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、ノード・リストを取得します。これは、ノード・リストを返さないbpws:getVariableDataの代用として実装されます。
シグネチャ:
ora:getNodes('variableName', 'partName'?, 'locationPath'?)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(オプション)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、ノードに関連付けられているドキュメント・オブジェクトを返します。
シグネチャ:
ora:getOwnerDocument(node)
引数:
node: XMLノードを指定します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELプロセス・インスタンスの親コンポーネント・インスタンスIDを返します。
シグネチャ:
ora:getParentComponentInstanceID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELスーツケース・ディスクリプタのpreferencesセクションで指定されているプロパティの値を返します。
シグネチャ:
ora:getPreference(preferenceName)
引数:
preferenceName: BPELスーツケース・ディスクリプタで指定されているプリファレンスの名前。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在のBPELプロセスのIDを返します。
シグネチャ:
ora:getProcessId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、プロセスの所有者であるユーザーがBPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されている場合に、そのユーザーのIDを返します。
シグネチャ:
ora:getProcessOwnerId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在のBPELプロセスのルートURLを返します。
シグネチャ:
ora:getProcessURL()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在のプロセス・バージョンを返します。
シグネチャ:
ora:getProcessVersion()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されているエイリアスのユーザーIDを返します。
シグネチャ:
ora:getUserAliasId (String aliasName)
引数:
aliasName: ユーザーまたはグループのリストのエイリアス。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されているグループ・エイリアスのユーザーIDのリストを返します。
シグネチャ:
ora:getUserIdsFromGroupAlias( String aliasName )
引数:
aliasName - グループのエイリアス名。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、タイトルをコンポジット・インスタンスに設定します。このタイトルは、後でインスタンスの検索時に基準の1つとして使用できます。この関数は、引数として渡される文字列と同じ文字列を返します。
シグネチャ:
med:setCompositeInstanceTitle(title)
引数:
title: コンポジット・インスタンスのタイトルを指定します。このタイトルは、XPath式としてメッセージ・ペイロードに指定できます。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPEL変数から任意の値を抽出します。
シグネチャ:
ora:instanceOf(an_xpath_expression, 'typeQName')
引数:
an_xpath_expression: 要素を返すXPath式。
typeQName - グローバル宣言済XSDタイプのQName。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、ノードのコンテンツを整数として返します。
シグネチャ:
ora:integer(node)
引数:
node: 入力ノード。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数はLDAPユーザーのリストを返します。
シグネチャ:
ldap:listUsers('directoryName',filter')
引数:
directoryName: directories.xmlファイルで指定されているディレクトリ名。directories.xmlファイルの詳細は、B.2.2項「authenticate」を参照してください。
filter: 検索に使用するフィルタ式で、この値をnullにすることはできません。
戻り値:
ユーザーのリストを含むXML要素。このXPath関数の場合は、すべてのプロパティをdirectories.xmlファイルで指定する必要があります。
例:
ldap:listUsers('people','ou=people');
例B-6に、出力の例を示します。
例B-6 listUsersの出力
<users xmlns="http://schemas.oracle.com/bpel/ldap">
<user dn="uid=weblogic">
<uid>weblogic</uid>
<userpassword>
Unknown macro: {ssha}
bHDVJRfWVt/Uwlzb4TKU+QTOLB4FLySO</userpassword>
<objectclass>inetOrgPerson</objectclass>
<objectclass>organizationalPerson</objectclass>
<objectclass>person</objectclass>
<objectclass>top</objectclass>
<objectclass>wlsUser</objectclass>
<description>This user is the default administrator.</description>
<wlsMemberOf>cn=Administrators,ou=groups,ou=myrealm,dc=soainfra</wlsMember
Of>
<orclguid>8AC1B6206FDD11DEBF9A7F3D47003274</orclguid>
<sn>weblogic</sn>
<cn>weblogic</cn>
</user>
</users>
この関数はLDAPユーザー情報を返します。
シグネチャ:
ldap:lookupUser('directoryName','userId')
引数:
directoryName: directories.xmlファイルで指定されているディレクトリ名。directories.xmlファイルの詳細は、B.2.2項「authenticate」を参照してください。
userId: 検索するユーザーID。
戻り値:
ユーザー情報を含むXML要素です。
このXPath関数の場合は、すべてのプロパティをdirectories.xmlファイルで指定する必要があります。
例:
ldap:lookupUser('people','ou=people');
例B-7に、出力の例を示します。
この関数は、文字列をDOMに解析します。
シグネチャ:
oraext:parseEscapedXML(contentString)
引数:
contentString: DOMに解析する文字列。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: oraext
この関数の詳細は、第6.21.1項「文字列からXML要素への変換方法」を参照してください。
この関数は、文字列をDOM要素に解析します。
シグネチャ:
oraext:parseXML(contentString)
引数:
contentString: DOM要素に解析する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、XQueryトランスフォーメーションの結果を返します。
シグネチャ:
ora:processXQuery('template','context'?)
引数:
template: XSLTテンプレート。
input: 変換する入力データ。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、Oracle XDK XSLTプロセッサを使用してXSLTトランスフォーメーションの結果を返します。
例B-8に、11gバージョンのprocessXSLTを示します。
例B-8 11gバージョンのprocessXSLT
<function name="ora:processXSLT">
<className>com.collaxa.cube.xml.xpath.functions.xml.GetElementFromXDKXSLTFunction
</className>
<return type="node-set"/>
<params>
<param name="template" type="string"/>
<param name="input" type="string"/>
<param name="properties" type="string" minOccurs="0" maxOccurs="unbounded"/>
</params>
<desc resourceKey="PI_FUNCTION_DESC_PROCESSXSLT"></desc>
<detail resourceKey="PI_FUNCTION_DESC_LONG_PROCESSXSLT">
This function returns result of XSLT transformation by using Oracle XDK
XSLT processor.
</detail>
<group>BPEL XPath Extension Functions</group>
</function>
例B-9は、10gバージョンのprocessXSLTを示しています。これは、下位互換性のために提供されています。
例B-9 10gバージョンのprocessXSLT
<function name="xdk:processXSLT">
<className>com.collaxa.cube.xml.xpath.functions.xml.GetElementFromXDKXSLTFunction
</className>
<return type="node-set"/>
<params>
<param name="template" type="string"/>
<param name="input" type="string"/>
<param name="properties" type="string" minOccurs="0" maxOccurs="unbounded"/>
</params>
<desc resourceKey="PI_FUNCTION_DESC_PROCESSXSLT"></desc>
<detail resourceKey="PI_FUNCTION_DESC_LONG_PROCESSXSLT">
This is same as 11g, for backward compatiablity this function uses the
old 10.1.2 namespace. This function returns the result of XSLT transformation
by using Oracle XDK XSLT processor.
</detail>
<group>BPEL XPath Extension Functions</group>
</function>
シグネチャ:
11gバージョンのシグネチャ:
ora:processXSLT('template','input','properties'?)
10gバージョンのシグネチャ:
xdk:processXSLT('template','input','properties'?)
引数:
template: XSLTテンプレート。HTTP URLとファイルURLの両方がサポートされています。
input: 変換する入力データ。
properties: コンストラクト<xsl:param name="paramName"/>を使用してXSLマップ内でアクセスできるXSLパラメータに変換されるプロパティ。プロパティは次のように定義されます。
params.xsdファイルを作成し、名前/値ペアを定義します(どのプロパティも名前と値のペアです)。例:
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/service/bpel/common"
targetNamespace="http://schemas.oracle.com/service/bpel/common"
elementFormDefault="qualified">
<!-- Root Element for Parameters -->
<xsd:element name="parameters">
<xsd:complexType>
<xsd:sequence>
<!-- Each Parameter is represented by an "item" node that contains
one unique name and a string value
-->
<xsd:element name="item" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
SetParams.xslファイルを作成してプロパティを移入します。XSLT内では、パラメータにはその名前を通じてアクセスできます。この例では、パラメータ名がuserNameとlocationで、それぞれの値がjsmithとCAです。
<?xml version="1.0" encoding="UTF-8" ?>
<?oracle-xsl-mapper
<mapSources>
<source type="XSD">
<schema location="TestXSLParams.xsd"/>
<rootElement name="TestXSLParamsProcessRequest"
namespace="http://xmlns.oracle.com/TestXSLParams"/>
</source>
</mapSources>
<mapTargets>
<target type="XSD">
<schema location="params.xsd"/>
<rootElement name="ArrayOfNameAnyTypePairType"
namespace="http://schemas.oracle.com/service/bpel/common"/>
</target>
</mapTargets>
<!-- GENERATED BY ORACLE XSL MAPPER 10.1.3.1.0(build 061009.0802) AT [WED
APR 18 14:35:04 PDT 2007]. -->
?>
<xsl:stylesheet version="1.0"
xmlns:ns2="http://schemas.oracle.com/service/bpel/common"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services
.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.
headers.ESBHeaderFunctions"
xmlns:ns0="http://www.w3.org/2001/XMLSchema"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services
.functions.ExtFunc"
xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
xmlns:ns1="http://xmlns.oracle.com/TestXSLParams"
exclude-result-prefixes="xsl ns0 ns1 ns2 xp20 bpws ora ehdr
orcl ids hwf">
<xsl:template match="/">
<ns2:parameters>
<ns2:item>
<ns2:name>
<xsl:value-of select="'userName'"/>
</ns2:name>
<ns2:value>
<xsl:value-of select="'jsmith'"/>
</ns2:value>
</ns2:item>
<ns2:item>
<ns2:name>
<xsl:value-of select="'location'"/>
</ns2:name>
<ns2:value>
<xsl:value-of select="'CA'"/>
</ns2:value>
</ns2:item>
</ns2:parameters>
</xsl:template>
</xsl:stylesheet>
.bpelファイルからSetParams.xslを呼び出します。例:
assignアクティビティinitializeXSLParameters内で、XSLT内からアクセス対象の情報を持つ特定のBPEL変数から、パラメータ変数を初期化します。
assignアクティビティexecuteXSLT内で、パラメータを関数processXSLTのproperties (3番目)引数として、XSLTを呼び出します。
例:
<process name="TestXSLParams"
. . .
. . .
<sequence name="main">
<receive name="receiveInput" partnerLink="client"
portType="client:TestXSLParams" operation="initiate"
variable="inputVariable" createInstance="yes"/>
<assign name="initializeXSLParameters">
<bpelx:annotation>
<bpelx:pattern>transformation</bpelx:pattern>
</bpelx:annotation>
<copy>
<from expression="ora:processXSLT ('SetParams.xsl',
bpws:getVariableData('inputVariable','payload'))"/>
<to variable="propertiesXMLVar"/>
</copy>
</assign>
<assign name="executeXSLT">
<bpelx:annotation>
<bpelx:pattern>transformation</bpelx:pattern>
</bpelx:annotation>
<copy>
<from expression="ora:processXSLT('TestXSLParams.xsl',
bpws:getVariableData('inputVariable','payload'),
bpws:getVariableData('propertiesXMLVar'))"/>
<to variable="outputVariable" part="payload"/>
</copy>
</assign>
<invoke name="callbackClient" partnerLink="client"
portType="client:TestXSLParamsCallback"
operation="onResult"
inputVariable="outputVariable"/>
</sequence>
</process>
BPELプロセスでは、これらのプロパティを使用してXSLT関数にアクセスします。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora (11g)
namespace-prefix: xdk (10g)
ora:processXSLT関数を使用すると、大きいXSLT/XQuery操作の結果をシステム・ディレクトリの一時ファイルに書き込むことができます。その後、ドキュメントは必要なときに一時ファイルからロードされます。これにより、ドキュメント全体をバイナリXMLとしてメモリーにキャッシュする必要がなくなります。
詳細は、第45.1.3.9項「XPath関数を使用し、大きいXSLT/XQuery出力をファイル・システムに書き込み」を参照してください。
この関数は、ファイルからデータを読み取ります。
シグネチャ:
ora:readBinaryFromFile(fileName)
引数:
fileName: データの読取り元のファイル名。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
詳細は、「アタッチメント・ストリームの送信」を参照してください。
この関数は、ファイルのコンテンツを返します。
シグネチャ:
ora:readFile('fileName','nxsdTemplate'?,'nxsdRoot'?)
引数:
fileName: ファイルの名前。または、HTTP URLも指定できます。
この関数では、デフォルトで、プロセス用のスーツケースJARファイルからの相対パスでファイルが読み取られます。読み取るファイルが別のディレクトリ・パスにある場合は、絶対パスであることを示す追加のディレクトリのスラッシュ(/)を指定する必要があります。次に例を示します。
ora:readFile('file:///c:/temp/test.doc')
ディレクトリのスラッシュの指定が2つのみ(//)の場合は、例B-10に示すようなエラーを受け取ります。
nxsdTemplate: 出力用のNXSDテンプレート。
nxsdRoot - NXSDルート。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数はLDAPエントリのリストを返します。
シグネチャ:
ldap:search('directoryName','filter','scope')
パラメータ:
directoryName: directories.xmlファイルで指定されているディレクトリ名。directories.xmlファイルの詳細は、B.2.2項「authenticate」を参照してください。
filter: 検索に使用するフィルタ式で、この値をnullにすることはできません。
scope: 検索範囲。値は次のいずれかです。1: 1レベル、2: サブツリー、0: 指定したオブジェクト。このパラメータはオプションです。デフォルトでは、値は2です。
戻り値:
エントリのリストを含むXML要素。このXPath関数の場合は、すべてのプロパティをdirectories.xmlファイルで指定する必要があります。
例
ldap:search('people','cn=weblogic');
例B-11に、出力の例を示します。
例B-11 searchの出力
<searchResult xmlns="http://schemas.oracle.com/bpel/ldap">
<searchResultEntry dn="uid=weblogic" xmlns="urn:oasis:names:tc:DSML:2:0:core">
<attr name="uid">
<value>weblogic</value>
</attr>
<attr name="userpassword">
<value>
Unknown macro: {ssha}
bHDVJRfWVt/Uwlzb4TKU+QTOLB4FLySO</value>
</attr>
<attr name="objectclass">
<value>inetOrgPerson</value>
<value>organizationalPerson</value>
<value>person</value>
<value>top</value>
<value>wlsUser</value>
</attr>
<attr name="description">
<value>This user is the default administrator.</value>
</attr>
<attr name="wlsMemberOf">
<value>cn=Administrators,ou=groups,ou=myrealm,dc=soainfra</value>
</attr>
<attr name="orclguid">
<value>8AC1B6206FDD11DEBF9A7F3D47003274</value>
</attr>
<attr name="sn">
<value>weblogic</value>
</attr>
<attr name="cn">
<value>weblogic</value>
</attr>
</searchResultEntry>
<searchResultEntry xmlns="urn:oasis:names:tc:DSML:2:0:core"/>
</searchResult>
この関数は、変数(または変数のパート)のバイナリ・バイトを指定のファイル名のファイルに書き込みます。
シグネチャ:
ora:writeBinaryToFile(varName[, partName[, query]])
引数:
varName: 変数の名前。
partName: messageType変数のパートの名前。
query: ルート要素の子に対する問合せ文字列。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この項では、BPEL拡張関数について説明します。
表B-2に、BPEL仕様のバージョン1.1または2.0でサポートされているBPEL拡張関数をリストします。関数が特定のバージョンでサポートされている場合には、Oracle JDeveloperで「式ビルダー」ダイアログの「BPEL拡張関数」リストに選択対象として表示されます。それ以外の場合は表示されません。BPELバージョン1.1の関数は、ネームスペース接頭辞bpwsを使用します。BPELバージョン1.1の関数は、ネームスペース接頭辞bpelを使用します。
表B-2 BPEL 1.1またはBPEL 2.0でサポートされているBPEL拡張関数
| 関数 | BPEL 1.1でサポートされているか | BPEL 2.0でサポートされているか |
|---|---|---|
|
|
はい |
いいえ |
|
|
はい |
いいえ |
|
|
はい |
いいえ |
|
|
いいえ |
はい |
この関数は、リンクのステータスを示すブール値を返します。リンクのステータスが正の場合、この値はtrueになります。そうでない場合はfalseです。この関数はjoin条件でのみ使用できます。
linkName引数は、join条件に関連付けられたアクティビティの着信リンクの名前を表します。
シグネチャ:
bpws:getLinkStatus ('linkName')
引数:
variableName: データのソース変数。
propertyName: プロパティのQName。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpws
この関数は、BPEL変数から任意の値を抽出します。
第1引数のみが指定されている場合は、変数の値を抽出しますが、この場合、変数はXMLスキーマの単純型または要素を使用して定義されている必要があります。それ以外の場合、この関数の戻り値は、メッセージ・タイプのパート全体(第2引数が指定され、第3引数が指定されない場合)、またはlocationPathに基づく選択の結果(オプションの引数が両方とも指定されている場合)を表す単一ノードが含まれるノードセットです。
シグネチャ:
bpws:getVariableData ('variableName', 'partName'?, 'locationPath'?)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(オプション)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpws
Business Process Execution Language for Web Services Specification Version 1.1に従って、locationPath引数によって選択されるノードセットのサイズが実行時に選択されるノードセットのサイズと異なる場合は、準拠実装により標準のフォルトbpws:selectionFailureがスローされる必要があります。
たとえば、例B-12に示すcount()関数は、StoreRequestの下にproduct要素のエントリが複数ある場合に機能せず、selectionFailureフォルトがスローされます。
例B-12 count()関数のエラー
count(bpws:getVariableData('inputVariable',
'payload','/ns2:StoreRequest/ns2:product'))
この関数を機能させるには、構文を次のように変更します。
"count($inputVariable.payload/ns2:product)"
この関数は、BPEL変数から任意の値を抽出します。第1引数ではデータのソース変数を指定し、第2引数ではその変数から選択するプロパティのQNameを指定します。特定のプロパティが、実行中に1以外のサイズのノードセットを選択する場合、標準フォルトbpws:selectionFailureがスローされます。
シグネチャ:
bpws:getVariableProperty ('variableName', 'propertyname')
引数:
variableName: データのソース変数。
propertyName: プロパティのQName。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpws
この関数は、BPEL変数から任意の値を抽出します。第1引数ではデータのソース変数を指定し、第2引数ではその変数から選択するプロパティのQNameを指定します。特定のプロパティが、実行中に1以外のサイズのノードセットを選択する場合、標準フォルトbpws:selectionFailureがスローされます。
シグネチャ:
bpel:getVariableProperty ('variableName', 'propertyname')
引数:
variableName: データのソース変数。
propertyName: プロパティのQName。指定されたプロパティによって選択されるノードセットのサイズが実行時に選択されるノードセットのサイズと異なる場合は、標準のフォルトselectionFailureがスローされます。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpel
この項では、ユーティリティ関数について説明します。
この関数は、バッチ内のアクティブ・プロセス数を返します。
シグネチャ:
ora:batchProcessActive(String rootId, String processId)
引数:
rootId: ルートのID。
processId: プロセスのID。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、バッチ内の完了プロセス数を返します。
シグネチャ:
ora:batchProcessCompleted(String rootId, String processId)
引数:
rootId: ルートのID。
processId: プロセスのID。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、Javaのメッセージ書式を使用してメッセージを書式設定します。
シグネチャ:
ora:format(formatStrings, args+)
引数:
formatStrings: 書式設定するデータの文字列。
args+: 書式文字列の書式指定子によって参照される引数。引数が書式指定子よりも多い場合、余分な引数は無視されます。引数の数は変数で、0(ゼロ)の場合があります。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、指定されたQNameに対する空要素のリストを生成します。
シグネチャ:
ora:genEmptyElem('ElemQName',size?, 'TypeQName'?, xsiNil?)
引数:
ElemQName: 最初の引数は、空要素のQNameです。
size: 2番目の引数は整数型で、空要素の数を示します(オプション)。指定されていない場合、デフォルトのサイズは1です。
TypeQName: 3番目の引数は、生成される空の名前のxsi:typeとなるQNameです(オプション)。このxsi:typeパターンは、SOAPENC:Arrayに相当します。指定されていないか、空の文字列である場合、xsi:type属性は生成されません。
xsiNil: 4番目の引数はブール型で、生成される空の要素において、XSD-nillableである場合に、XSI - nilにするかどうかを指定します(オプション)。デフォルトはfalseです。指定されていないか、falseである場合、xsi:nilは生成されません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数の詳細は、第6.20.4.4項「空要素の配列と等価の機能の生成」を参照してください。
この関数は、指定された要素の子要素を取得します。
シグネチャ:
ora:getChildElement(element, index)
引数:
element: データのソース。
index: 子要素の索引の整数値。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、引数に基づいてメッセージを取得します。
シグネチャ:
ora:getMessage(locale, relativeLocation, resourceName, resourceKey, resourceLocation?)
引数:
locale: メッセージのロケール。
relativeLocation: メッセージのサブディレクトリ。
resourceName: メッセージ・リソースの名前。
resourceKey: リソースのキー。
resourceLocation: リソースの場所。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、入力数値のリストであるノードセットinputNumberから最大値を返します。
ノードセットinputNumberには、テキスト・ノードの集合、またはテキスト・ノードが含まれる要素の集合を指定できます。
要素の場合、最初のテキスト・ノードの値が対象になります。
シグネチャ:
oraext:max-value-among-nodeset(inputNumber as node-set)
引数:
inputNumber: 入力数値のノードセット。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、入力数値のリストであるノードセットinputNumbersから最小値を返します。ノードセットには、テキスト・ノードの集合、またはテキスト・ノードが含まれる要素の集合を指定できます。要素の場合、最初のテキスト・ノードの値が対象になります。
シグネチャ:
oraext:min-value-among-nodeset(inputNumbers as node-set)
引数:
inputNumber: 入力数値のノードセット。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この項では、Oracle Mediator XPath拡張関数について説明します。
この関数は、ストリーミングXPath APIを使用して変換します。これは、バッチ処理と呼ばれる固有の概念を使用し、トランスフォーメーション・エンジンによってトランスフォーメーションの結果がメモリーにマテリアライズされないようにします。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。ただし、処理できるのは、for-eachなど、順方向のみのXSLコンストラクトのみです。targetTypeには、SDOMまたはATTACHMENTを指定できます。
シグネチャ:
med:doStreamingTranslate('input','streaming xpath context','targetType','attachment element'?)
引数:
input: XPath関数の入力データ。これはSDOMまたはattachment elementになります。
streaming xpath context
targetType: XPath関数がネイティブ・データをXMLに変換する方法を指定します。
attachment element: 返されるXMLの添付ファイルです。このパラメータはオプションです。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: med
例:
med.doStreamingTranslate($in.request/inp1:request/inp1:sourceAttachmentElement,$in.request/inp1:request/inp1:streamingcontext, 'ATTACHMENT', $in.request/inp1:request/inp1:targetAttachmentElement)
この関数は、入力データをXMLに変換します。入力データには、変換する文字列、ファイルまたはFTPアダプタ添付ファイル、添付ファイル、またはBase64エンコード・データを含む要素を指定できます。targetTypeには、DOM、ATTACHMENTまたはSDOMを指定できます。
シグネチャ:
med:doTranslateFromNative('input','nxsdTemplate','nxsdRoot','targetType','attachment element'?)
引数:
input: XPath関数の入力データ。データは、カンマ区切り値(CSV)などのネイティブ・フォーマットです。
nxsdTemplate: 入力データからXMLフォーマットへの変換に使用するNXSDスキーマ。
nxsdRoot: NXSDスキーマのルート要素。
targetType: XPath関数がネイティブ・データをXMLに変換する方法を指定します。
attachment element: 返されるXMLの添付ファイルです。このパラメータはオプションです。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: med
例:
med:doTranslateFromNative(string($in.request/inp1:request/inp1:source),'xsd/address_csv.xsd','Root-Element','DOM')
この関数は、入力のDOMを文字列または添付ファイルに変換します。targetTypeは、STRINGまたはATTACHMENTです。
シグネチャ:
med:doTranslateToNative('input','nxsdTemplate','nxsdRoot','targetType','attachment element'?)
引数:
input: XPath関数の入力データ。このデータには、カンマ区切り値(CSV)などのネイティブ・フォーマットに変換する必要があるDOMまたはSDOMデータを使用できます。
入力ノードは通常、例B-13に示すように、受信するDOMのルート要素です。
例B-13 doTranslateToNative関数のルート要素としての入力ノード
med:doTranslateToNative($in.request/inp1:Root-Element, 'xsd/address_csv.xsd',
@ 'Root-Element','STRING')"
ただし、例B-14に示すように、入力ノードとして受信するDOMのルート要素ではなくサブ要素を使用することもできます。
例B-14 doTranslateToNative関数のサブ要素としての入力ノード
med:doTranslateToNative($in.request/inp1:requestToNative/ns1:Root-Element,
'xsd/address_csv.xsd', 'Root-Element','ATTACHMENT',
$in.request/inp1:requestToNative/inp1:attachment)
この場合、次に示すように、NXSDのスキーマ・ノードでuseArrayIdenitiferプロパティをtrueに設定する必要があります。
nxsd:useArrayIdentifiers="true"
入力が大規模な場合は、この設定によってこの関数のパフォーマンスに悪影響を与える可能性があります。その場合は、dostreamingxlate関数を使用できます。
nxsdTemplate: 入力データからXMLフォーマットへの変換に使用するNXSDスキーマ。
nxsdRoot: NXSDスキーマのルート要素。
targetType: XPath関数がネイティブ・データをXMLに変換する方法を指定します。
attachment element: 返されるXMLの添付ファイルです。このパラメータはオプションです。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: med
例:
med:doTranslateToNative($in.request/inp1:Root-Element,'xsd/address_csv.xsd','Root-Element','STRING')
この関数は、添付ファイルのコンテンツを取得してデータをBase64形式にエンコードします。
シグネチャ:
med:getAttachmentContent(xpathExpr)
引数:
xpathExpr: 受信アタッチメントを参照するXPath式。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: med
例:
med:getAttachmentContent($in.bin/bin)
この関数は、コンポーネント・インスタンスIDを返します。
シグネチャ:
mdhr:getComponentInstanceId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この関数は、コンポーネント名を返します。
シグネチャ:
mdhr:getComponentName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この関数は、コンポジット・インスタンスIDを返します。
シグネチャ:
mdhr:getComponentInstanceId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この関数は、コンポジット名を返します。
シグネチャ:
mdhr:getCompositeName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この関数は、Oracle Mediatorメッセージ・ヘッダーからXPath式の値を返します。
|
注意:
|
シグネチャ:
mdhr:getHeader(xpath as string, namespaces as string)
引数:
xpath: 横断するスキーマからのパスを表します。
namespaces: XPath式のコンテキストを格納する抽象コンテナを表します。この引数は必須です。ネームスペース宣言の形式は、次のとおりです。
'prefix=namespace;
ネームスペース宣言の後にセミコロンがあることに注意してください。例:
getHeader("in.header.ns9_name/ns9:name/ns9:first","ns9=http//exmaple.com;")
Oracle JDeveloperのXSLTマッパーで、getHeader関数をマッパーにドラッグします。
「関数の編集 - getHeader」ダイアログで、「追加」をクリックします。
namespaces引数が追加されるため、ここで必須情報を入力します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix:mdhr
この関数はECIDを返します。
シグネチャ:
mdhr:getECID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この関数は、Oracle Mediatorインスタンスの親コンポーネント・インスタンスIDを返します。
シグネチャ:
mdhr:getParentComponentInstanceId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この関数は、指定されたファイル名からバイナリ・データを読み取ることにより、添付ファイルを作成します。これは、作成された添付ファイルを保持する要素を返します。
シグネチャ:
med:readBinaryFromFile(location)
引数:
location: データを読み取るパスおよびファイル名。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この関数は、タイトルをコンポジット・インスタンスに設定します。このタイトルは、後でインスタンスの検索時に基準の1つとして使用できます。この関数は、引数として渡される文字列と同じ文字列を返します。
シグネチャ:
mdhr:setCompositeInstanceTitle(title)
引数:
title: コンポジット・インスタンスのタイトルを指定します。このタイトルは、XPath式としてメッセージ・ペイロードに指定できます。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
この項では、拡張関数について説明します。
この関数は、デリミタ付き文字列を入力としてとり、nodeSetを返します。
シグネチャ:
oraext:create-nodeset-from-delimited-string(qname, delimited-string, delimiter)
引数:
qname: 作成するノードセット内ノードのすべてに付ける修飾名。QNameは、次の2つの形式で表現できます。
task:assignee
{http://mytask/task}assignee
delimited-string: デリミタで区切られた複数の要素からなる文字列。
delimiter: 入力文字列内の項目を区切る文字(たとえば、カンマやセミコロン)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、一意のGUIDを生成します。
シグネチャ:
oraext:generate-guid()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、参照列の値に対応する単一または複数の値を相互参照列で参照します。
シグネチャ:
xref:lookupPopulatedColumns(tableName,columnName,value,needAnException)
引数:
xrefTableName: 参照表の名前。
xrefColumnName: 参照列の名前。
xrefValue: 参照列名に対応する値。
needAnException: 値がtrueに設定されると、参照列に値が見つからない場合に例外がスローされます。そうでない場合は、空のノードセットが返されます。
プロパティID:
namespace-uri:http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions
namespace-prefix: xref
この関数は、ソース列に指定のソース値を含むドメイン値マップでターゲット列の値をルックアップすることにより、文字列を返します。
シグネチャ:
dvm:lookupValue(dvmLocation,sourceColumnName,sourceValue,targetColumnName,defaultValue)
引数:
dvmLocation: ドメイン値マップのURI。
sourceColumnName: ソース列名。
sourceValue: ソース値(XSLTトランスフォーメーションのソース文書にバインドされるXPath式)。
targetColumnName: ターゲット列名。
defaultValue: 値が見つからない場合は、デフォルト値が返されます。
QualifierSourceColumn: 修飾子列の名前。
QualifierSourceValue: 修飾子の値。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue
namespace-prefix: dvm
詳細は、第47.4.1.1項「dvm:lookupValue」を参照してください。
この関数は、ソース列の値がソース値と等しいドメイン値マップの複数のターゲット列の値を格納する、XML文書フラグメントを返します。
シグネチャ:
dvm:lookupValue1M(dvmLocation,sourceColumnName,sourceValue,targetColumnName1,targetColumnName2...)
引数:
dvmMetadataURI: ドメイン値マップのURI。
SourceColumnName: ソース列名。
SourceValue: ソース値(XSLTトランスフォーメーションのソース文書にバインドされるXPath式)。
TargetColumnName: ターゲット列名。1つ以上の列名を指定する必要があります。疑問符記号(?)は複数のターゲット列名を指定できることを示します。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue
namespace-prefix:dvm
詳細は、第47.4.1.2項「dvm:lookupValue1M」を参照してください。
この関数は、参照列の値に対応する値を相互参照列で参照します。
シグネチャ:
xref:lookupXRef(tableName,referenceColumnName,referenceValue,columnName,needAnException)
引数:
xrefLocation: 相互参照URI。
xrefReferenceColumnName: 参照列の名前。
xrefReferenceValue: 参照列名に対応する値。
xrefColumnName: 値が参照される列の名前。
needAnException: 値がtrueに設定されると、値が見つからない場合に例外がスローされます。そうでない場合は、空の値が返されます。
プロパティID:
namespace-uri:http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions
namespace-prefix: xref
詳細は、第49.6.1項「xref:lookupXRef関数」を参照してください。
この関数は、参照列の値に対応する複数の値を相互参照列で参照します。
シグネチャ:
xref:lookupXRef1M(tableName,referenceColumnName,referenceValue,columnName,needAnException)
引数:
xrefLocation: 相互参照URI。
xrefReferenceColumnName: 参照列の名前。
xrefReferenceValue: 参照列名に対応する値。
xrefColumnName: 値が参照される列の名前。
needAnException: この値がtrueに設定される場合は、参照される値が見つからないときに例外がスローされます。そうでない場合は、空のノードセットが返されます。
プロパティID:
namespace-uri:http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions
namespace-prefix: xref
詳細は、第49.6.2項「xref:lookupXRef1M関数」を参照してください。
この関数は、XMLファイル(docURL)で、親XPath (parentXPath)、キーXPath (keyXPath)およびキー値(key)を指定されたlookupXPathで定義されている要素の文字列値を返します。
例:
oraext:lookup-xml('file:/d:/country_data.xml', '/Countries/Country', 'Abbreviation', 'FullName', 'UK')は、ファイルD:\country_data.xmlで、Abbreviation = 'UK'である/Countries/Countryの子要素FullNameの値を返します。
シグネチャ:
oraext:lookup-xml(docURL, parentXPath, keyXPath, lookupXPath, key)
引数:
docURL: XMLファイル。
parentXPath: 親XPath。
keyXPath: キーXPath。
lookupXPath: 参照XPath。
key: キー値。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、相互参照表の値を削除します。関数に渡された列値を含む行は、XREF_DATA表から削除され、XREF_DELETED_DATA表に移動されます。この関数は、削除に成功した場合はtrueを返します。それ以外の場合はfalseを返します。
シグネチャ:
xref:markForDelete(tableName,columnName,value)
引数:
xrefTableName: 相互参照表の名前
xrefColumnName: 削除対象の値を含む列の名前。
xrefValueToDelete: 削除する値。
プロパティID:
namespace-uri:http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions
namespace-prefix: xref
詳細は、第49.7.1項「相互参照表の値の削除方法」を参照してください。
この関数は、参照列に参照値がある相互参照表(XREF)に列名を移入します。
シグネチャ:
xref:populateXRefRow(tableName,referenceColumnName,referenceValue,columnName,value,mode)
引数:
xrefLocation: 相互参照URI。
xrefReferenceColumnName: 参照列の名前。
xrefReferenceValue: 参照列名に対応する値。
xrefColumnName: 値が参照される列の名前。
xrefvalue: 参照列名に対応する値。
xrefmode: XREFの移入モードの名前
プロパティID:
namespace-uri:http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions
namespace-prefix: xref
詳細は、第49.5.1項「xref:populateXRefRow関数」を参照してください。
この関数は、参照列に参照値がある相互参照表(XREF)の列に複数の値を移入します。
シグネチャ:
xref:populateXRefRow1M(tableName,referenceColumnName,referenceValue,columnName,value,mode)
引数:
xrefLocation: 相互参照URI。
xrefReferenceColumnName: 参照列の名前。
xrefReferenceValue: 参照列名に対応する値。
xrefColumnName: 値が参照される列の名前。
xrefvalue: 参照列名に対応する値。
xrefmode: XREFの移入モードの名前
プロパティID:
namespace-uri:http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions
namespace-prefix: xref
詳細は、第49.5.3項「xref:populateXRefRow1M関数」を参照してください。
この項では、ワークフロー・サービス関数について説明します。
この関数は、現在のタスク割当て先を消去します。
シグネチャ:
hwf:clearTaskAssignees(taskID)
引数:
task: タスクのタスクID。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、Microsoft Word ML文書をBase 64でエンコードされた文字列として作成します。
シグネチャ:
hwf:createWordMLDocument(node, xsltURI)
引数:
node: このノードは、トランスフォーメーションへの入力であるXMLノードです。
xsltURI: ノード(第1引数)からMicrosoft Word MLへの変換に使用されるXSLT。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、通知プロパティを取得します。通知ごとに対応する値に評価されます。この関数は、通知コンテンツのXPath式でのみ使用してください。他の場所で使用すると、nullが返されます。
シグネチャ:
hwf:getNotificationProperty(propertyName)
引数:
propertyName: 通知プロパティの名前。次のいずれかの値です。
recipient: 通知の受信者。
recipientDisplay: 受信者の表示名。
taskAssignees: タスクの割当て先。
taskAssigneesDisplay: タスク割当て先の表示名。
locale: 受信者のロケール。
taskId: 通知対象となるタスクのタスクID。
taskNumber: 通知対象となるタスクのタスク番号。
appLink: Oracle BPM Worklistのタスク詳細ページへのHTMLリンク。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、タスクが承認された回数を計算します。
シグネチャ:
hwf:getNumberOfTaskApprovals(taskId)
引数:
taskId: タスクのID
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、前のタスク承認者を取得します。
シグネチャ:
hwf:getPreviousTaskApprover(taskId)
引数:
taskId: タスクのID
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、指定された索引にあるタスクの添付ファイルを取得します。
シグネチャ:
hwf:getTaskAttachmentByIndex(taskId, attachmentIndex)
引数:
taskId: タスクのタスクID。
attachmentIndex: 添付ファイルの索引。索引は1から始まります。attachmentIndex引数には、値が索引番号の文字列として評価されるノードを指定できます(すべてのノード値は文字列です)。静的に指定する場合は、'1'として指定できます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、添付ファイル名でタスクの添付ファイルを取得します。
シグネチャ:
hwf:getTaskAttachmentByName(taskId, attachmentName)
引数:
taskId: タスクのタスクID。
attachmentName: 添付ファイルの名前。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、添付ファイル名でタスクの添付ファイルのコンテンツを取得します。
シグネチャ:
hwf:getTaskAttachmentContents(taskId, attachmentName)
引数:
taskId: タスクのタスクID。
attachmentName: 添付ファイルの名前。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、タスクの添付ファイル数を取得します。
シグネチャ:
hwf:getTaskAttachmentsCount(taskId)
引数:
taskId: タスクのタスクID。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、タスク定義に関連付けられているリソース・バンドルから国際化されたリソース値を返します。
シグネチャ:
hwf:getTaskResourceBundleString(taskId, key, locale?)
引数:
taskId: タスクのタスクID。
key: リソースへのキー。
locale: ロケール(オプション)。この値は、デフォルトでシステム・ロケールに設定されます。この場合、ネームスペースhttp://xmlns.oracle.com/bpel/services/taskServiceのresourceString XML要素が返されます。これにはリソース・バンドルからの文字列が含まれます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、指定の割当てパターンに従って選択されたアイデンティティ・サービス・グループの名前を取得します。グループは、指定したグループの下位グループ(単一のグループ名を指定した場合)またはグループ・リスト(ユーザー名リストを指定した場合)から選択されます。アイデンティティ・サービスが複数のレルムで構成されている場合は、グループのレルム名も指定する必要があります。追加の割当てパターン固有のパラメータも指定できます。これらの追加パラメータは、使用する特定の割当てパターンの詳細によってはオプションです。
この関数には2つのシグネチャがあります。
シグネチャ1:
hwf:wfDynamicGroupAssign('patternName','groupName','realmName'?,'patternParam1'?,'patternParam2'?,...,'patternParamN'?)
引数1:
patternName: 割当てパターン名(ROUND_ROBINなど)。
groupName: 下位グループの選択元となるグループの名前。
realmName: グループが属しているアイデンティティ・サービス・レルムの名前。
patternParam1...patternParamN: 割当てパターン実装に必要な追加パラメータ(パターンによってはオプション)。
シグネチャ2:
hwf:wfDynamicGroupAssign('patternName','groupList','realmName'?,'patternParam1'?,'patternParam2'?,...,'patternParamN'?)
引数2:
patternName: 割当てパターン名(ROUND_ROBINなど)。
groupList: グループの選択元となるグループ・リスト。
realmName: グループが属しているアイデンティティ・サービス・レルムの名前。
patternParam1...patternParamN: 割当てパターン実装に必要な追加パラメータ(パターンによってはオプション)。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、指定の割当てパターンに従って選択されたアイデンティティ・サービス・ユーザーの名前を返します。ユーザーは、指定したグループの下位ユーザー(単一のグループ名を指定した場合)またはユーザー・リスト(ユーザー名リストを指定した場合)から選択されます。アイデンティティ・サービスが複数のレルムで構成されている場合は、グループおよびユーザーのレルム名も指定する必要があります。追加の割当てパターン固有のパラメータも指定できます。これらの追加パラメータは、使用する特定の割当てパターンの詳細によってはオプションです。
この関数には2つのシグネチャがあります。
シグネチャ1:
hwf:wfDynamicUserAssign('patternName','groupName','realmName'?,'patternParam1'?,....,'patternParam2'?,...,'patternParamN'?)
引数1:
patternName: 割当てパターン名(ROUND_ROBINなど)。
groupName: 下位ユーザーの選択元となるグループの名前。
realmName: グループが属しているアイデンティティ・サービス・レルムの名前。
patternParam1 ... patternParamN: 割当てパターン実装に必要な追加パラメータ(パターンによってはオプション)。
シグネチャ2:
hwf:wfDynamicUserAssign(patternName,userList,realmName?,patternParam1?,patternParam2?,...,patternParamN?)
引数2:
patternName: 割当てパターン名(ROUND_ROBINなど)。
userList: ユーザーの選択元となるユーザー・リスト。
realmName: ユーザーが属しているアイデンティティ・サービス・レルムの名前。
patternParam1...patternParamN: 割当てパターン実装に必要な追加パラメータ(パターンによってはオプション)。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この項では、アイデンティティ・サービス関数について説明します。
この関数は、デフォルトのレルム名を返します。
シグネチャ:
ids:getDefaultRealmName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、指定したグループのプロパティ値を返します。グループまたは属性が存在しない場合は、nullを返します。
シグネチャ:
ids:getGroupProperty(groupName, attributeName, realmName)
引数:
groupName: 属性を取得するグループを含む文字列または要素。
attributeName: グループ属性の名前を含む文字列または要素。
アイデンティティ・サービスでLDAP providerTypeまたはJAZN LDAPベースのプロバイダが使用される場合は、これらの属性で検索できるようにLDAPサーバーを構成します。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルムが使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、指定したユーザーのマネージャを取得します。ユーザーが存在しない、またはこのユーザーにマネージャが存在しない場合は、nullを返します。
シグネチャ:
ids:getManager(userName, realmName)
引数:
userName: ユーザー名。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルムが使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、ユーザーの報告先を取得します。ユーザーが存在しない場合は、nullを返します。この関数はノードのリストを返します。リストの各ノードはuserです。
シグネチャ:
ids:getReportees(userName, upToLevel, realmName)
引数:
userName: ユーザー名。
upToLevel: 結果に含める間接報告先のレベル数を定義します。値が1の場合は、直接報告先のみが返されます。値が-1の場合は、全レベルの報告先が返されます。値xsd:numberを含む要素、または文字列(例: '1')のいずれかを指定できます。
realmName: レルム名。これはオプションで、指定しない場合はデフォルトのレルムが使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、サポートされるレルム名を返します。
シグネチャ:
ids:getSupportedRealms()
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、ユーザーのプロパティを返します。ユーザーが存在しない場合は、nullを返します。適切な属性が存在しない場合は、カスタム属性を使用します。
シグネチャ:
ids:getUserProperty(userName, attributeName, realmName)
引数:
userName: 属性を取得するユーザーを含む文字列または要素。
attributeName: user属性の名前。
アイデンティティ・サービスでLDAP providerTypeまたはJAZN LDAPベースのプロバイダが使用される場合は、これらの属性で検索できるようにLDAPサーバーを構成します。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
詳細は、第17.3.5項「電子メール・アドレスと電話番号を動的に選択する方法」を参照してください。
この関数は、ユーザー・ロールを取得します。roleTypeに応じて、アプリケーション・ロールまたはグループのいずれかのオブジェクト・リストを返します。ユーザーまたはロールが存在しない場合は、nullを返します。
シグネチャ:
ids:getUserRoles(userName, roleType, direct)
引数:
userName: ロールを取得するユーザーを含む文字列または要素。
roleType: ロール・タイプ。3つの値ApplicationRole、EnterpriseRoleまたはAnyRoleのいずれかです。
direct: 直接ロールをフェッチするか間接ロールをフェッチするかを示す文字列または要素。これはオプションです。指定しない場合は、直接ロールのみがフェッチされます。xsd:booleanまたは文字列true/falseを指定します。
プロパティID:
namespace-uri:http://xmlns.oracle.com/bpel/services/IdentityService
namespace-prefix: ids
この関数は、このアプリケーション・ロールを付与されているユーザーのリストを返します。入力として指定されたアプリケーション・ロール名またはアプリケーション名がNULLの場合は、NULLを戻します。
シグネチャ: ids:getUsersInAppRole(appRoleName, appName, direct, realmName)
引数:
appRoleName: 取得するメンバーが属しているアプリケーション・ロールを含む文字列または要素。
appName: アプリケーション・ロールを作成するアプリケーション名。
direct: 直接の権限受領者のみを取得するか、すべてのユーザーを取得するかを示す文字列または要素。
realmName: レルム名を含む文字列または要素。これはオプションであり、指定しなければデフォルト・レルムが使用されます。
この関数は、グループ内のユーザーを取得します。グループが存在しない場合は、nullを返します。この関数はノードのリストを返します。リストの各ノードはuserです。
シグネチャ:
ids:getUsersInGroup(groupName, direct, realmName)
引数:
groupName: グループ名。
direct: ブール・フラグ。trueの場合は、直接ユーザー権限受領者が返され、それ以外の場合はすべてのユーザー権限受領者が返されます。値xsd:booleanを含む要素、または文字列'true'/'false'のいずれかを指定できます。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、ユーザーに指定ロールがあるかどうかを検証します。
シグネチャ:
ids:isUserInRole(userID, roleName, realmName)
引数:
userID: ロールの付与を検証するユーザーを含む文字列または要素。
roleName: ロール名。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、グループを取得します。グループが存在しない場合は、nullを返します。
シグネチャ:
ids:lookupGroup(groupName, realmName)
引数:
groupName: グループ名。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
「式ビルダー」ダイアログとXPathビルディング・アシスタントを使用して、XPath式を作成できます。「式ビルダー」ダイアログで、BPELプロセスのXPath式、ヒューマン・ワークフロー、またはOracle Mediatorサービス・コンポーネントをビジュアルに設計できます。
次のダイアログなど、いくつかのダイアログでは、XPathビルディング・アシスタントを使用してXPath式を指定できます。
「式ビルダー」ダイアログの「式」フィールド
BPEL 2.0における「変数の作成」ダイアログの「初期化」タブの「式」フィールド
XSLTマッパーの「XPath式の編集」および「関数の編集」ダイアログ
長い式および複雑な式を手動で指定できますが、非効率的で間違いやすいプロセスになる可能性があります。XPathビルディング・アシスタントには、このプロセスを簡素化する一連の機能が用意されています。
次の項目に関する自動完了機能
要素および属性
関数
BPEL変数およびパート
関数パラメータのツールのヒント
XPathの構文検証およびセマンティク検証
この項では、XPathビルディング・アシスタントを使用して、「式ビルダー」ダイアログの「式」フィールドで式を作成する方法の例を示します。
XPathビルディング・アシスタントを使用する手順は、次のとおりです。
「式」フィールドの中をクリックし、[Ctrl]キーを押しながら[Space]キーを押します。使用可能なオプションのメニューが表示されます。
次のいずれかの方法で、リストから選択します。
リストを下へスクロールして、関数をダブルクリックします。
最初の1文字(たとえばc)を入力してその文字で始まる項目のみを表示し、適切な関数をダブルクリックします。
図B-5に詳細を示します。
この値が「式」フィールドに追加されます。別のオプションのリストが再度自動的に表示され、XPath式の次の部分を入力するように求められます。
次の部分を選択してダブルクリックします。図B-6に詳細を示します。
この値が「式」フィールドに追加されます。リストが再度自動的に表示され、XPath式の次の部分を入力するように求められます。
このプロセスを続けて実行して、XPath式の残りの部分を作成します。
必要に応じて手動でテキストを追加します。図B-7に詳細を示します。
|
注意: XPathビルディング・アシスタントのポップアップで選択対象をダブルクリックするかわりに、[Enter]キーを使用して選択することもできます。式が完成しても情報の入力を求められる場合には、[Esc]を押してください。リストが閉じます。 |
この項では、XPathビルディング・アシスタントを使用して、XSLTマッパーの「XPath式の編集」ダイアログで式を作成する方法の例を示します。
XSLTマッパーでXPathビルディング・アシスタントを使用する手順は、次のとおりです。
XSLTマッパーに移動します。
「コンポーネント・パレット」 リストから、「拡張関数」を選択します。
リストを下へスクロールして「xpath-expression」関数を見つけます。
図B-8に示すように、「xpath-expression」関数をXSLTマッパーにドラッグ・アンド・ドロップします。
関数をダブルクリックして、「XPath式の編集」ダイアログを表示します。
「XPath式」フィールド内でカーソルをクリックします。
図B-9に示すように、[Ctrl]キーを押しながら[Space]キーを押して、式を作成するための値リストを表示します。
次のいずれかの方法でリストから値を選択します(この例では、「concat(String) as String」を選択)。
リストを下へスクロールして、「concat(String) as String」をダブルクリックします。
cを入力して、その文字で始まる項目のみを表示し、「concat(String) as String」を選択してダブルクリックします。
図B-10に詳細を示します。
この選択値が「XPath式」フィールドに追加されます。別のオプションのリストが再度自動的に表示され、XPath式の次の部分を入力するように求められます。
このプロセスを続けて実行して、XPath式の残りの部分を作成します。
完了後、「OK」をクリックして「XPath式の編集」ダイアログを閉じます。
関数パラメータのツールのヒントでは、選択したXPath関数の適切な引数が表示されます。たとえば、関数concatを手動で入力し、次に(を入力すると、パラメータのツールのヒントが表示され、concat関数の適切な引数が表示されます。関数の現在の引数名が太字でハイライト表示されます。図B-11に詳細を示します。
1つの引数の指定が終わり、カンマを入力して次の引数に進むと、ツールのヒントが更新されて2番目の引数名が太字でハイライト表示されます。以降も同様に処理されます。関数が含まれている既存のXPathの編集中に、パラメータのツールのヒントを再起動するには、関数内にカーソルを置き、[Ctrl] キーと [Shift] キーを押しながら [Space] キーを押します。
Oracle JDeveloper内では、XPath式は、XPath 1.0仕様に準拠している場合は構文的に有効であるとみなされます。XPathビルディング・アシスタントでは、構文的に誤りのあるXPath(例: カッコやアポストロフィの欠落)については、誤りのある部分に赤い下線が付けられて警告されます。この部分にマウス・ポインタを移動します。これにより、エラー・メッセージがツールのヒントとして表示されます。エラーを修正すると、赤い下線付きのエラー表示は表示されなくなります。図B-12に詳細を示します。
構文的に有効なXPathがセマンティク的には無効な場合があります。この場合は、実行時に予期しないエラーが発生する可能性があります。たとえば、要素、変数、関数またはパートの名前の綴りが間違っていることがあります。XPathビルディング・アシスタントでは、セマンティク・エラーについては、誤りのある部分に青い下線が付けられて警告されます。この部分にマウス・ポインタを移動します。これにより、エラー・メッセージがツールのヒントとして表示されます。エラーを修正すると、青い下線付きのエラー表示は表示されなくなります。図B-13に詳細を示します。
一部のダイアログでは、フリー・フォーム・テキストとXPath式を組み合せて使用できます。
フィールドにカーソルを置くと、この機能を説明するポップアップ・メッセージが表示されます。図B-14に詳細を示します。
フリー・フォーム・テキストを入力します(この例では、'Hello, your telephone number')。図B-15に詳細を示します。
XPathビルディング・アシスタントを起動する準備が整ったところで<%と入力します。図B-16に詳細を示します。
赤い下線が表示されます。これは、追加情報の入力を求められていることを示します。
[Ctrl]キーを押しながら[Space]キーを押して、XPathビルディング・アシスタントを起動します。図B-17に詳細を示します。
リストを下へスクロールして、選択する値をダブルクリックします。
このプロセスを続けて実行して、式の残りの部分を作成します。
Windowsオペレーティング・システム上では、XPath拡張関数でディレクトリ・パスを表すためにスラッシュを使用すると、次の2通りに解釈されます。
ダブル・スラッシュの場合。例: file://c:/Ftab.txt
シングル・スラッシュの場合。例: file:/c:/Ftab.txt
ダブル・スラッシュを指定してエラー・メッセージが表示される場合は、シングル・スラッシュを指定してみてください。
たとえば、次のようにダブル・スラッシュを使用しても機能しません。
oraext:get-content-from-file-function("file://c:/Ftab.txt","file:
//c:/Ftab_1.xsd","root")
しかし、次のようにシングル・スラッシュを使用すると適切に機能します。
oraext:get-content-from-file-function("file:/c:/Ftab.txt","file:
/c:/Ftab_1.xsd","root")
Oracle SOA Suiteで使用するためのユーザー定義(カスタム)XPath拡張関数を作成できます。これらの関数は、次のコンポーネントに対して作成できます。
Oracle BPEL Process Manager
Oracle Mediator
XSLTマッパー
ヒューマン・ワークフロー
これらのすべてのコンポーネントで共有
Oracle SOA SuiteのXPath拡張関数は、次の標準に従います。
単一のスキーマで、システム関数とユーザー定義関数の両方の構成構文を定義します。
XPath関数は、使用方法(Oracle BPEL Process Manager、Oracle Mediator、ヒューマン・ワークフロー、XSLTマッパーおよびすべてで共通使用)に基づいて分類されます。
システム関数は、ユーザー定義関数と区別されます。
リポジトリで、システム関数の構成ファイルとユーザー定義関数の構成ファイルの両方をホストします。
リポジトリで、ユーザー定義関数の実装JARファイルをホストし、自動的にJava仮想マシン(JVM)(クラス・ローダー)で使用できるようにします。
関数の作成に関する次の規則に従うことをお薦めします。
可能な場合は、すべてのコンポーネントで共有できる関数を作成します。すべてのコンポーネントで共有される関数は、ext-soa-xpath-functions-config.xmlという構成ファイルに作成できます。XSLTマッパーの関数は、Oracle BPEL Process Manager、Oracle Mediatorおよびヒューマン・ワークフローの関数と異なる方法で実装する必要があります。
これらの実装の相違点の詳細は、B.7.1項「ユーザー定義XPath拡張関数の実装方法」を参照してください。
あるコンポーネント用で他のコンポーネントでは使用できない関数(例: Oracle Mediatorまたはヒューマン・ワークフローで使用できないOracle BPEL Process Manager用の関数)を作成する場合は、その関数をそのコンポーネントに固有の構成ファイルに作成します。この例では、Oracle BPEL Process Managerの関数をext-bpel-xpath-functions-config.xmlという構成ファイルに作成する必要があります。
例B-15に、システム関数およびユーザー定義関数で使用される関数スキーマを示します。
例B-15 関数スキーマ
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://xmlns.oracle.com/soa/config/xpath"
targetNamespace="http://xmlns.oracle.com/soa/config/xpath"
elementFormDefault="qualified">
<element name="soa-xpath-functions" type="tns:XpathFunctionsConfig"/>
<element name="function" type="tns:XpathFunction"/>
<complexType name="XpathFunctionsConfig">
<sequence>
<element ref="tns:function" minOccurs="1" maxOccurs="unbounded"/>
</sequence>
<attribute name="resourceBundle" type="string"/>
<attribute name="version" type="string"/>
</complexType>
<complexType name="XpathFunction">
<sequence>
<element name="className" type="string"/>
<element name="return">
<complexType>
<attribute name="type" type="tns:XpathType"
use="required"/>
</complexType>
</element>
<element name="params" type="tns:Params" minOccurs="0"
maxOccurs="1"/>
<element name="desc">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="resourceKey"
type="string"/>
</extension>
</simpleContent>
</complexType>
</element>
<element name="detail" minOccurs="0">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="resourceKey"
type="string"/>
</extension>
</simpleContent>
</complexType>
</element>
<element name="icon" minOccurs="0">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="resourceKey"
type="string"/>
</extension>
</simpleContent>
</complexType>
</element>
<element name="helpURL" minOccurs="0">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="resourceKey"
type="string"/>
</extension>
</simpleContent>
</complexType>
</element>
<element name="group" minOccurs="0">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="resourceKey" type="string"/>
</extension>
</simpleContent>
</complexType>
</element>
<element name="wizardClass" type="string" minOccurs="0"/>
</sequence>
<attribute name="name" type="string" use="required"/>
<attribute name="deprecated" type="boolean" use="optional"/>
</complexType>
<complexType name="Params">
<sequence>
<element name="param" minOccurs="1" maxOccurs="unbounded">
<complexType>
<attribute name="name" type="string" use="required"/>
<attribute name="type" type="tns:XpathType"
use="required"/>
<attribute name="minOccurs" type="string"
default="1"/>
<attribute name="maxOccurs" type="string"
default="1"/>
<attribute name="wizardEnabled" type="boolean"
default="false"/>
</complexType>
</element>
</sequence>
</complexType>
<simpleType name="XpathType">
<restriction base="string">
<enumeration value="string"/>
<enumeration value="boolean"/>
<enumeration value="number"/>
<enumeration value="node-set"/>
<enumeration value="tree"/>
</restriction>
</simpleType>
</schema>
この項では、Oracle SOA Suiteコンポーネントのユーザー定義XPath拡張関数を実装する方法を説明します。
XSLTマッパーのユーザー定義XPath拡張関数の実装は、他のコンポーネントと次のように異なります。
各XSLTマッパー関数に、public staticクラスの対応するpublic staticメソッドが必要です。関数名とメソッド名が一致する必要があります。
XSLTマッパー関数のネームスペースの形式はhttp://www.oracle.com/XSL/Transform/java/mypackage.MyFunctionClassである必要があります。mypackage.MyFunctionClassは、関数のpublic staticメソッドが含まれているpublic staticクラスの完全修飾クラス名です。
XSLTマッパーのユーザー定義XPath拡張関数の作成に関する詳細は、第40.3.4.4項「ユーザー定義関数のインポート」を参照してください。
Oracle BPEL Process Manager、Oracle Mediatorおよびヒューマン・ワークフローの関数では、oracle.fabric.common.xml.xpath.IXPathFunctionインタフェース(fabric-runtime.jarファイルで定義)またはjavax.xml.xpath.XPathFunctionを実装する必要があります。
他のすべてのコンポーネントに対する関数を実装する手順は、次のとおりです。
XPath関数用のoracle.fabric.common.xml.xpath.IXPathFunctionインタフェースを実装します。IXPathFunctionインタフェースには、call(context, args)という1つのメソッドがあります。例B-16に、このメソッドのシグネチャを示します。
例B-16 oracle.fabric.common.xml.xpath.IXPathFunctionの実装
package oracle.fabric.common.xml.xpath;
public interface IXPathFunction
{
/** Call this function.
*
* @param context The context at the point in the
* expression when the function is called.
* @param args List of arguments provided during
* the call of the function.
*/
public Object call(IXPathContext context, List args) throws
XPathFunctionException;
}
説明:
context: 関数をコールした時点の式内のコンテキスト。
args: 関数のコール時に指定する引数のリスト。
例B-17に示す例では、w3c nodeの値を取得するgetNodeValue(arg1)という関数が実装されます。
例B-17 getNodeValue(arg1)関数の実装
package com.collaxa.cube.xml.xpath.dom.functions;
import oracle.fabric.common.xml.xpath.IXPathFunction;
import oracle.fabric.common.xml.xpath.IXPathFunction
. . .
public class GetNodeValue implements IXPathFunction {
Object call(IXPathContext context, List args) throws XPathFunctionException
{
org.w3c.dom.Node node = (org.w3c.dom.Node) args.get(0);
return node.getNodeValue()
}
}
この項では、ユーザー定義XPath拡張関数の構成方法について説明します。
ユーザー定義XPath拡張関数を構成する手順は、次のとおりです。
関数を定義するXPath拡張構成ファイルを作成します。例B-18に、B.7項「ユーザー定義XPath拡張関数の作成」の例B-15で示した関数スキーマに基づくサンプル構成ファイルを示します。この例では、mf:myFunction1とmf:myFunction2の2つの関数が作成されます。
例B-18 XML拡張構成ファイルのサンプル
<?xml version="1.0" encoding="UTF-8"?> <soa-xpath-functions resourceBundle="myPackage.myResourceBundle" xmlns="http://xmlns.oracle.com/soa/config/xpath" xmlns:mf="http://www.my-functions.com"> <function name="mf:myFunction1"> <className>myPackage.myFunctionClass1</className> <return type="node-set"/> <params> <param name="p1" type="node-set" wizardEnabled="true"/> <param name="p2" type="string"/> <param name="p3" type="number" minOccurs="0"/> <param name="p4" type="boolean" minOccurs="0" maxOccurs="3"/> </params> <desc resourceKey="func1-desc-key">this is my first function</desc> <detail resourceKey="func2-long-desc-key">my first function does ... </detail> <icon>myPackage/resource/image/myFunction1.png</icon> <group resourceKey="func-group-key">My Function Group</group> <wizardClass>myPackage.myWizardClass1</wizardClass> </function> <function name="mf:myFunction2"> <className>myPackage.myFunctionClass2</className> <return type="string"/> <params> <param name="p1" type="node-set" wizardEnabled="true"/> <param name="p2" type="string"/> <param name="p3" type="number" minOccurs="0"/> <param name="p4" type="boolean" minOccurs="0" maxOccurs="unbounded"/> </params> <desc resourceKey="func2-desc-key">this is my second function</desc> <detail resourceKey="func2-long-desc-key">my second function does ...</detail> <icon>myPackage/resource/image/myFunction2.png</icon> <group resourceKey="func-group-key">My Function Group</group> <wizardClass>myPackage.myWizardClass2</wizardClass> </function> </soa-xpath-functions>
表B-3に、構成ファイルの要素を示します。各関数の構成ファイルで、そのルート要素としてsoa-xpath-functionsが使用されます。ルート要素にはオプションのresourceBundle属性があります。resourceBundleの値は、すべての関数構成に対するNational Language Support (NLS)を提供するリソース・バンドル・クラスの完全修飾クラス名です。
表B-3 関数スキーマの要素
| 要素 | 説明 |
|---|---|
|
|
関数実装クラスの完全修飾クラス名。 |
|
|
関数の戻り型。XPathおよびXSLTでサポートされているstring、number、boolean、ノードセットおよびtreeのいずれかを指定できます。 |
|
|
関数のパラメータ。関数にはパラメータがない場合があります。パラメータには次の属性があります。
|
|
|
関数の説明(オプション)。 |
|
|
関数の長い(詳細な)説明(オプション)。 |
|
|
関数のアイコンのURL(オプション)。 |
|
|
関数のヘルプHTMLのURL(オプション)。 |
|
|
関数のグループ名(オプション)。 |
|
|
ウィザードを使用可能にしたすべてのパラメータに対するウィザード・クラスの完全修飾クラス名。パラメータ値を入力する必要があるユーザー・インタフェースをサポートするための要素です。このウィザード・クラスは、ウィザード起動ボタンを押すと起動され、ユーザーがパラメータ値を簡単に入力できるようにします。ウィザードを使用可能にするパラメータを指定していない場合、この要素は指定しないでください。 注意: この要素は、ユーザー定義関数ではサポートされていません。この機能を現在サポートしているのはシステム関数のみです。 |
関数を使用するコンポーネント・タイプに基づいて、ユーザー定義のXPath拡張構成ファイルの名前を指定します。表B-4に、ユーザー定義構成ファイルに使用する命名規則を示します。
表B-4 ユーザー定義構成ファイル
| 関数を使用するコンポーネント | 使用する構成ファイル名 |
|---|---|
|
Oracle BPEL Process Manager |
|
|
Oracle Mediator |
|
|
XSLTマッパー |
|
|
ヒューマン・ワークフロー |
|
|
すべてのコンポーネント |
|
構成ファイルをコンパイル済クラスとともにJARファイル内に配置します。JARファイル内で、構成ファイルはMETA-INFディレクトリに格納される必要があります。JARファイルは特定のディレクトリに存在する必要はありません。
|
注意:
|
Oracle JDeveloperで、「ツール」→「プリファレンス」→「SOA」の順に選択します。
「追加」ボタンをクリックし、JARファイルを選択します。
変更を有効にするためにOracle JDeveloperを再起動します。
JARファイルがJVMのクラスパスに自動的に追加され、使用可能になります。
カスタムのJARファイルとクラスを追加するために、soa/modules/oracle.soa.ext_11.1.1ディレクトリが用意されています。詳細は、第14.3項「カスタム・クラスとJARファイルの追加」を参照してください。