プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.1.3)
E53007-05
目次へ移動
目次

前
次

B XPath拡張関数

この付録では、Oracle JDeveloperの「式ビルダー」ダイアログに表示されるXPath拡張関数について説明します。また、式ビルダーでのXPath式の作成方法、およびユーザー定義XPath拡張関数の作成方法についても説明します。Oracleには、新しい関数を追加するためにOracle SOA SuiteおよびXPath標準に組み込まれた機能を使用する、XPath関数が用意されています。

この付録の内容は次のとおりです。

XPath関数の詳細は、次のURLを参照してください。

http://www.w3.org

B.1 拡張関数

この項では、拡張関数について説明します。

B.1.1 batchProcessActive

この関数は、バッチ内のアクティブ・プロセス数を返します。

シグネチャ:

ora:batchProcessActive(String rootId, String processId)

引数:

  • rootId: ルートのID。

  • processId: プロセスのID。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.2 batchProcessCompleted

この関数は、バッチ内の完了プロセス数を返します。

シグネチャ:

ora:batchProcessCompleted(String rootId, String processId)

引数:

  • rootId: ルートのID。

  • processId: プロセスのID。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.3 copyList

注意:

copyList関数を引き続き使用することもできますが、ノード・リストまたはノードのコピーにはbpelx:copyList拡張を使用することをお薦めします。詳細は、「bpelx:copyListの使用方法」を参照してください。

この関数は、ノード・リストまたはノードをコピーします。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

B.1.4 create-nodeset-from-delimited-string

この関数は、デリミタ付き文字列を入力としてとり、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

B.1.5 createDelimitedString

この関数は、渡された引数から区切り文字付き文字列を作成します。

シグネチャ:

ora:createDelimitedString(delimiter as string, nodeList)

引数:

  • delimiter as string: 入力文字列内の項目を区切る文字(たとえば、カンマやセミコロン)。

  • nodeList: ノードの順序付きコレクションを示します。

プロパティID:

  • namespace-uri:

  • namespace-prefix:ora

B.1.6 createEssParameter

この関数は、Oracle Enterprise Scheduler内のジョブ用のパラメータを作成します。

シグネチャ:

ess:createEssParameter(dataType,name,scope,value)

引数:

  • dataType

  • name

  • scope

  • value

プロパティID:

  • namespace-uri:

  • namespace-prefix:ess

Oracle Enterprise Schedulerの詳細は、『Oracle Enterprise Schedulerアプリケーションの開発』を参照してください。

B.1.7 doStreamingTranslate

この関数は、ストリーミング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)

B.1.8 doTranslateFromNative

この関数は、入力データをXMLに変換します。入力データには、変換する文字列、ファイルまたはFTPアダプタ添付ファイル、添付ファイル、またはBase64エンコード・データを含む要素を指定できます。targetTypeには、DOMATTACHMENTまたは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')

B.1.9 doTranslateToNative

この関数は、入力のDOMを文字列または添付ファイルに変換します。targetTypeは、STRINGまたはATTACHMENTです。

シグネチャ:

med:doTranslateToNative('input','nxsdTemplate','nxsdRoot','targetType','attachment element'?)

引数:

  • input: XPath関数の入力データ。このデータには、カンマ区切り値(CSV)などのネイティブ・フォーマットに変換する必要があるDOMまたはSDOMデータを使用できます。

    入力ノードは通常、次の例に示すように、受信するDOMのルート要素です。

    med:doTranslateToNative($in.request/inp1:Root-Element, 'xsd/address_csv.xsd', 
     @ 'Root-Element','STRING')" 
    

    ただし、次の例に示すように、入力ノードとして受信するDOMのルート要素ではなくサブ要素を使用することもできます。

    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')

B.1.10 format

この関数は、Javaのメッセージ書式を使用してメッセージを書式設定します。

シグネチャ:

ora:format(formatStrings, args+)

引数:

  • formatStrings: 書式設定するデータの文字列。

  • args+: 書式文字列の書式指定子によって参照される引数。引数が書式指定子よりも多い場合、余分な引数は無視されます。引数の数は変数で、0(ゼロ)の場合があります。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.11 genEmptyElem

この関数は、指定された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

この関数の詳細は、「空要素の配列と等価の機能の生成」を参照してください。

B.1.12 generate-guid

この関数は、一意のGUIDを生成します。

シグネチャ:

oraext:generate-guid()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc

  • namespace-prefix: oraext

B.1.13 get-content-from-file-function

この関数は、指定されているネイティブ・フォーマットのファイルを解析します。この関数は、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

B.1.14 getApplicationName

この関数は、アプリケーション名を返します。

シグネチャ:

ora:getApplicationName()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.15 getAttachmentContent

この関数は、href関数から添付ファイルのコンテンツを取得します。

シグネチャ:

ora:getAttachmentContent(varName[, partName[, query]])

引数:

  • varName: データのソース変数を指定します。

  • partName: 変数から選択するパートを指定します(オプション)。

  • query: 絶対ロケーション・パスを指定して(/は、パート全体を表す文書フラグメントのルートを意味する)、パートを表す文書フラグメント内のサブツリーのルートを識別します(オプション)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

詳細は、「SOAPアタッチメントのコンテンツの読取りおよびエンコード」を参照してください。

B.1.16 getAttachmentProperty

varNamepartNameおよびqueryに格納されているhrefからSOAPアタッチメントのプロパティを取得します。

シグネチャ: ora:getAttachmentProperty(propertyName, varName[, partName[, query]])

引数:

  • varName: データのソース変数を指定します。

  • partName: 変数から選択するパートを指定します(オプション)。

  • query: 絶対ロケーション・パスを指定して(/は、パート全体を表す文書フラグメントのルートを意味する)、パートを表す文書フラグメント内のサブツリーのルートを識別します(オプション)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.17 getChildElement

この関数は、指定された要素の子要素を取得します。

シグネチャ:

ora:getChildElement(element, index)

引数:

  • element: データのソース。

  • index: 子要素の索引の整数値。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.18 getComponentInstanceID

この関数は、コンポーネント・インスタンスIDを返します。

シグネチャ:

ora:getComponentInstanceID()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.19 getComponentName

この関数は、コンポーネント名を返します。

シグネチャ:

mdhr:getComponentName()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri:http://schemas.oracle.com/xpath/extension

  • namespace-prefix: mdhr

B.1.20 getCompositeInstanceID

注意:

この関数は、12cリリース1 (12.1.3)では非推奨になり、式ビルダーには表示されません。

この関数は、コンポジット・インスタンスIDを返します。

シグネチャ:

ora:getComponentInstanceId()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri:http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.21 getCompositeName

この関数は、コンポジット名を返します。

シグネチャ:

ora:getCompositeName()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.22 getCompositeURL

この関数は、コンポジットURLを返します。

シグネチャ:

ora:getCompositeURL()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri:http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.23 getECID

この関数は、実行コンテキストID (ECID)を返します。

シグネチャ:

ora:getECID()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.24 getFaultAsString

この関数は、フォルトを文字列値として返します。

シグネチャ:

ora:getFaultAsString()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

詳細は、「getFaultAsString XPath拡張関数によるフォルト詳細の取得」を参照してください。

B.1.25 getFaultAsXML

この関数は、XML要素としてフォルトを返します。

シグネチャ:

ora:getFaultAsXML()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix:ora

B.1.26 getFaultName

この関数は、フォルト名を返します。

シグネチャ:

ora:getFaultName()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.27 getMilestoneName

この関数は、マイルストーン名を返します。

シグネチャ:

ora:getMilestoneName

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.28 getOwnerDocument

この関数は、ノードに関連付けられているドキュメント・オブジェクトを返します。

シグネチャ:

ora:getOwnerDocument(node)

引数:

  • node: XMLノードを指定します。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.29 getParentComponentInstanceID

この関数は、BPELプロセス・インスタンスの親コンポーネント・インスタンスIDを返します。

シグネチャ:

ora:getParentComponentInstanceID()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.30 getRevision

この関数は、引数を取らず、起動されたコンポジットから現行リビジョンを返します。

シグネチャ:

ora:getRevision

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.31 getTaskReminderDuration

この関数は、タスクに送信する次のリマインダを計算します。

シグネチャ:

ora:getTaskReminderDuration(taskId)

引数:

  • taskId: タスクのタスクID。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.1.32 instanceOf

この関数は、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

B.1.33 lookup-xml

この関数は、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

B.1.34 parseEscapedXML

この関数は、文字列をDOMに解析します。

注意:

この関数は、「BPEL XPath拡張関数」オプションの下にも選択対象として表示されます。

シグネチャ:

oraext:parseEscapedXML(contentString)

引数:

  • contentString: DOMに解析する文字列。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: oraext

この関数の詳細は、「文字列からXML要素への変換方法」を参照してください。

B.1.35 parseXML

この関数は、文字列を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

B.1.36 processScalableDocumentToNative

この関数は、拡張可能なドキュメントを出力ストリームに直接変換します。

シグネチャ:

ora:processScalableDocumentToNative(template, input, outputFilePath, nxsd, root, batchsize, properties)

引数:

  • template

  • input

  • outputFilePath

  • nxsd

  • root

  • batchsize

  • properties

B.1.37 processXSLTAttachmentFromNativeToNative

この関数は、インバウンド・ネイティブ・データを変換し(たとえば、カンマ区切り値からXMLへ)、変換されたコンテンツにユーザー提供のXSLを適用します。その後、XSL変換の結果はネイティブ・ファイル(たとえば、カンマ区切りの値)に変換されます。このXPath関数への入力は、添付ファイルまたはhrefのどちらかです。変換エンジンが変換の結果をメモリーに格納しないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。XPath関数は、インバウンド・ネイティブ・データをXMLに変換し、XMLに対して変換を実行してから、変換済XMLをネイティブ・フォーマットに変換します。

シグネチャ:

ora:processXSLTAttachmentFromNativeToNative(template, input href, output href, input nxsd path, input root element name, output nxsd path, output root element name. batch size)

B.1.38 processXSLTAttachmentFromNativeToStream

この関数は、インバウンド・ネイティブ・データを変換し(たとえば、カンマ区切り値からXMLへ)、変換されたコンテンツにユーザー提供のXSLを適用します。変換の出力は、出力ファイルにストリーミングされます。このXPath関数への入力は、添付ファイルまたはhrefのどちらかです。変換エンジンが変換の結果をメモリーに格納しないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。ただし、処理できるのは、for-eachなど、順方向のみのXSLコンストラクトのみです。

シグネチャ:

ora:processXSLTAttachmentFromNativeToStream(template,input href, output href, input nxsd path, nxsd root element name, batchsize,properties)

B.1.39 processXSLTAttachmentToNativeStream

この関数は、ユーザー提供のXSLを適用してインバウンドXMLを変換してから、変換済XMLをネイティブ・ファイル(たとえば、カンマ区切りの値)に変換します。このXPath関数への入力は、添付ファイルまたはhrefのどちらかです。変換エンジンが変換の結果をメモリーに格納しないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。この関数は、まずXSLを適用して受信XMLデータを変換してから、変換済XMLをネイティブ・データに変換します。

シグネチャ:

ora:processXSLTAttachmentToNativeStream(template, input href, output href, nxsd schema, nxsd root element, batch size)

B.1.40 processXSLTAttachmentToStream

この関数は、XSLT変換の結果を出力ファイルに直接ストリーミングします。このXPath関数への入力は、添付ファイルまたはhrefのどちらかです。変換エンジンが変換の結果をメモリーに格納しないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。ただし、処理できるのは、for-eachなど、順方向のみのXSLコンストラクトのみです。

シグネチャ:

ora:processXSLTAttachmentToStream(template, input href, output href, batchsize, properties)

B.1.41 processXSLTForScalableDocument

この関数は、XSLT変換後の拡張可能なドキュメントを返します。

シグネチャ:

ora:processXSLTForScalableDocument(template, input, batchsize, properties)

B.1.42 setCompositeInstanceTitle

この関数は、コンポジット・インスタンス・タイトルを設定し、そのタイトルを返します。

シグネチャ:

ora:setCompositeInstanceTitle(title)

引数:

  • title: コンポジット・インスタンス・タイトル。

B.2 BPEL拡張関数

この項では、BPEL拡張関数について説明します。

B.2.1 BPEL 1.1とBPEL 2.0におけるBPEL拡張関数

この項では、BPEL拡張関数について説明します。

表B-1に、BPEL仕様のバージョン1.1または2.0でサポートされているBPEL拡張関数をリストします。関数が特定のバージョンでサポートされている場合には、Oracle JDeveloperで「式ビルダー」ダイアログの「BPEL拡張関数」リストに選択対象として表示されます。それ以外の場合は表示されません。BPELバージョン1.1の関数は、ネームスペース接頭辞bpwsを使用します。BPELバージョン2.0の関数は、ネームスペース接頭辞bpelを使用します。


表B-1 BPEL 1.1またはBPEL 2.0でサポートされているBPEL拡張関数

関数 BPEL 1.1でサポートされているか BPEL 2.0でサポートされているか

bpws:getLinkStatus

はい

いいえ

bpws:getVariableData

はい

いいえ

getVariableProperty

はい

いいえ

bpel:getVariableProperty

いいえ

はい

bpel:doXslTransform

いいえ

はい


B.2.1.1 getLinkStatus

この関数は、リンクのステータスを示すブール値を返します。リンクのステータスが正の場合、この値は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

B.2.1.2 getVariableData

この関数は、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

B.2.1.2.1 結果ノードセットのサイズが実行時に選択されるノードセットのサイズと異なる場合にスローされるselectionFailureフォルト

に従って、locationPath引数によって選択されるノードセットのサイズが実行時に選択されるノードセットのサイズと異なる場合は、準拠実装により標準のフォルトbpws:selectionFailureがスローされる必要があります

たとえば、次のコードに示すcount()関数は、StoreRequestの下にproduct要素のエントリが複数ある場合に機能せず、selectionFailureフォルトがスローされます。

count(bpws:getVariableData('inputVariable',
 'payload','/ns2:StoreRequest/ns2:product'))

この関数を機能させるには、構文を次のように変更します。

"count($inputVariable.payload/ns2:product)"

B.2.1.3 getVariableProperty (BPEL 1.1)

この関数は、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

B.2.1.4 getVariableProperty (BPEL 2.0)

この関数は、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

B.2.1.5 doXslTransform (BPEL 2.0)

この関数は、複数のソースによるXSLT変換の結果を返します。

注意:

入力がXMLドキュメントである場合、ora:getOwnerDocumentをコールして入力をラップするか、この関数のかわりに関数ora:doXSLTransformForDocを使用します。

シグネチャ:

bpel:doXslTransform(template,input, [paramQName, paramValue]*)

B.3 BPEL XPath拡張関数

この項では、BPEL XPath拡張関数について説明します。

B.3.1 addQuotes

この関数は、stringの内容を一重引用符で囲んで返します。

シグネチャ:

ora:addQuotes(string)

引数:

  • string: 引用符を追加する文字列。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.2 authenticate

この関数はLDAPユーザーを認証し、trueまたはfalseを返します。

authenticatelistUserslookupUsersearchのXPath関数は、LDAPサーバーからの情報(通常はLDAPユーザーの詳細)を取得する参照と検索の機能を提供します。

これらのXPath関数は、構成ファイルを使用してJNDIのサーバー・アクセス情報を取得します(たとえば、コンテキスト・ファクトリ、LDAPサーバーのプロバイダURL、認証タイプなど)。構成ファイルはdirectories.xmlという名前で、BPELプロジェクトの.bpelファイルと同じディレクトリに格納されている必要があります。これらのXPath関数をコールするには、このファイルを用意する必要があります。

次の例に、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>

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

B.3.3 countNodes

注意:

countNodes関数を引き続き使用することもできますが、要素のサイズを整数として返すには、バージョン1.0のXPath count()関数を使用することをお薦めします。

この関数は、要素のサイズを整数として返します。

シグネチャ:

ora:countNodes('variableName', 'partName'?, 'locationPath'?)

引数:

  • variableName: データのソース変数。

  • partName: 変数から選択するパート(オプション)。

  • locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.4 doXSLTransform

この関数は、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

B.3.5 doXSLTransformForDoc

この関数は、doXSLTransform()の補完XPath関数です。目的は、XSLTテンプレートがドキュメントに一致したときにトランスフォーメーションを実行することです。

次にdoXSLTransformForDoc関数の例を示します。

<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としてメモリーにキャッシュする必要がなくなります。

詳細は、「XPath関数を使用し、大きいXSLT/XQuery出力をファイル・システムに書き込み」を参照してください。

B.3.6 doc

この関数は、XMLファイルのコンテンツを返します。

シグネチャ:

ora:doc('fileName','xpath'?)

引数:

  • fileName: XMLファイルの名前。

  • xpath: XMLファイルの一部(ノードセット、ノード・リスト、リーフ・ノードなど)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.7 formatDate

この関数は、標準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

B.3.8 generateGUID

一意のGUIDを生成します。

シグネチャ:

ora:generateGUID()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.9 getConfigProperty

この関数は、コンポーネントのプロパティ値を取得します。

シグネチャ:

ora:getConfigProperty(propertyName)

引数:

  • propertyName: プロパティ名。

B.3.10 getContentAsString

この関数は、要素のコンテンツをXML文字列として返します。

シグネチャ:

ora:getContentAsString(element elementAsNodeList)

引数:

  • element: 要素(データのソース)。

  • elementAsNodeList: ノード・リストとしての要素。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.11 getConversationId

この関数は、対話IDを返します。

シグネチャ:

ora:getConversationId()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.12 getCreator

この関数は、インスタンスの作成者を返します。

シグネチャ:

ora:getCreator()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.13 getCurrentDate

この関数は、現在の日付を文字列として返します。

シグネチャ:

ora:getCurrentDate('format'?)

引数:

  • format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

詳細は、「日付または時間を割り当てる方法」を参照してください。

B.3.14 getCurrentDateTime

この関数は、現在の日時を文字列として返します。

シグネチャ:

ora:getCurrentDateTime('format'?)

引数:

  • format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.15 getCurrentTime

この関数は、現在の時間を文字列として返します。

シグネチャ:

ora:getCurrentTime('format'?)

引数:

  • format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.16 getElement

この関数は、要素の配列から、indexを使用して要素を返します。

シグネチャ:

ora:getElement('variableName', 'partName', 'locationPath', index)

引数:

  • variableName: データのソース変数。

  • partName: 変数から選択するパート(必須)。

  • locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。必須です)。

  • index: 動的索引値。最初のノードの索引は1です。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.17 getInstanceId

この関数は、インスタンスIDを返します。

シグネチャ:

ora:getInstanceId()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.18 getNodeValue

この関数は、DOMノードの値を文字列として返します。

シグネチャ:

ora:getNodeValue(node)

引数:

  • node: DOMノード。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.19 getNodes

この関数は、ノード・リストを取得します。これは、ノード・リストを返さないbpws:getVariableDataの代用として実装されます。

シグネチャ:

ora:getNodes('variableName', 'partName'?, 'locationPath'?)

引数:

  • variableName: データのソース変数。

  • partName: 変数から選択するパート(オプション)。

  • locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.20 getPreference

この関数は、BPELスーツケース・ディスクリプタのpreferencesセクションで指定されているプロパティの値を返します。

シグネチャ:

ora:getPreference(preferenceName)

引数:

  • preferenceName: BPELスーツケース・ディスクリプタで指定されているプリファレンスの名前。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.21 getProcessId

この関数は、現在のBPELプロセスのIDを返します。

シグネチャ:

ora:getProcessId()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.22 getProcessOwnerId

この関数は、プロセスの所有者であるユーザーがBPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されている場合に、そのユーザーのIDを返します。

シグネチャ:

ora:getProcessOwnerId()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.23 getProcessURL

この関数は、現在のBPELプロセスのルートURLを返します。

シグネチャ:

ora:getProcessURL()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.24 getProcessVersion

この関数は、現在のプロセス・バージョンを返します。

シグネチャ:

ora:getProcessVersion()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.25 integer

この関数は、ノードのコンテンツを整数として返します。

シグネチャ:

ora:integer(node)

引数:

  • node: 入力ノード。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.26 listUsers

この関数はLDAPユーザーのリストを返します。

シグネチャ:

ldap:listUsers('directoryName',filter')

引数:

  • directoryName: directories.xmlファイルで指定されているディレクトリ名。directories.xmlファイルの詳細は、「authenticate」を参照してください。

  • filter: 検索に使用するフィルタ式で、この値をnullにすることはできません。

戻り値:

ユーザーのリストを含むXML要素。このXPath関数の場合は、すべてのプロパティをdirectories.xmlファイルで指定する必要があります。

:

ldap:listUsers('people','ou=people');

次に、出力の例を示します。

<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> 

B.3.27 lookupUser

この関数はLDAPユーザー情報を返します。

シグネチャ:

ldap:lookupUser('directoryName','userId')

引数:

戻り値:

ユーザー情報を含むXML要素です。

このXPath関数の場合は、すべてのプロパティをdirectories.xmlファイルで指定する必要があります。

:

ldap:lookupUser('people','ou=people');

次に、出力の例を示します。

<user dn="" xmlns="http://schemas.oracle.com/bpel/ldap">
<ou>people</ou>
<objectclass>organizationalUnit</objectclass>
<objectclass>top</objectclass>
<orclguid>8ABB9BA06FDD11DEBF9A7F3D47003274</orclguid>
</user>

B.3.28 parseEscapedXML

この関数は、XML文字列をXML要素に解析します。

注意:

この関数は、「拡張関数」オプションの下にも選択対象として表示されます。

シグネチャ:

ora:parseEscapedXML(xmlString)

引数:

  • xmlString: この関数がDOMに解析する文字列。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

この関数の詳細は、「文字列からXML要素への変換方法」を参照してください。

B.3.29 processXQuery

この関数は、XQueryトランスフォーメーションの結果を返します。

シグネチャ:

ora:processXQuery('template','context'?)

引数:

  • template: XSLTテンプレート。

  • input: 変換する入力データ。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.30 processXQuery10

この関数は、XQuery 1.0トランスフォーメーションの結果を返します。

シグネチャ: ora:processXQuery10(<path to xquery> [, <xquery external variable name>, <value>]*)

B.3.31 processXQuery2004

この関数は、XQuery 2004トランスフォーメーションの結果を返します。

シグネチャ: ora:processXQuery2004(template,context?)

B.3.32 processXSLT

この関数は、Oracle XDK XSLTプロセッサを使用してXSLTトランスフォーメーションの結果を返します。

次の例は、12cバージョンの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>

シグネチャ:

  • 12cバージョンのシグネチャ:

    ora:processXSLT('template','input','properties'?)

引数:

  • template: XSLTテンプレート。HTTP URLとファイルURLの両方がサポートされています。

  • input: 変換する入力データ。

  • properties: コンストラクト<xsl:param name="paramName"/>を使用してXSLマップ内でアクセスできるXSLパラメータに変換されるプロパティ。プロパティは次のように定義されます。

    1. 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>
      
    2. SetParams.xslファイルを作成してプロパティを移入します。XSLT内では、パラメータにはその名前を通じてアクセスできます。この例では、パラメータ名がuserNamelocationで、それぞれの値がjsmithCAです。

      <?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>
      
    3. .bpelファイルからSetParams.xslを呼び出します。次に例を示します。

      • assignアクティビティinitializeXSLParameters内で、XSLT内からアクセス対象の情報を持つ特定のBPEL変数から、パラメータ変数を初期化します。

      • assignアクティビティexecuteXSLT内で、パラメータを関数processXSLTproperties (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>
      
    4. BPELプロセスでは、これらのプロパティを使用してXSLT関数にアクセスします。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora (12cの場合)

ora:processXSLT関数を使用すると、大きいXSLT/XQuery操作の結果をシステム・ディレクトリの一時ファイルに書き込むことができます。その後、ドキュメントは必要なときに一時ファイルからロードされます。これにより、ドキュメント全体をバイナリXMLとしてメモリーにキャッシュする必要がなくなります。

詳細は、「XPath関数を使用し、大きいXSLT/XQuery出力をファイル・システムに書き込み」を参照してください。

B.3.33 readBinaryFromFile

この関数は、ファイルからデータを読み取ります。

シグネチャ:

ora:readBinaryFromFile(fileName)

引数:

  • fileName: データの読取り元のファイル名。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

詳細は、「アタッチメント・ストリームの送信」を参照してください。

B.3.34 readBinaryFromFileWithMimeHeaders

この関数は、MIMEヘッダーを含むバイナリ・ファイルの内容を返します。

シグネチャ:

ora:readBinaryFromFileWithMimeHeaders(fileName, contentId, contentType, contentDisposition, contentTransferEncoding, contentDescription, contentLanguage)

B.3.35 readFile

この関数は、ファイルのコンテンツを返します。

シグネチャ:

ora:readFile('fileName','nxsdTemplate'?,'nxsdRoot'?)

引数:

  • fileName: ファイルの名前。または、HTTP URLも指定できます。

    この関数では、デフォルトで、プロセス用のスーツケースJARファイルからの相対パスでファイルが読み取られます。読み取るファイルが別のディレクトリ・パスにある場合は、絶対パスであることを示す追加のディレクトリのスラッシュ(/)を指定する必要があります。次に例を示します。

    ora:readFile('file:///c:/temp/test.doc')
    

    ディレクトリのスラッシュの指定が2つのみ(//)の場合は、次の例に示すようなエラーを受け取ります。

    XPath expression failed to execute.
    Error while processing xpath expression,
    the expression is "ora:readFile("file://c:/temp/test.doc")",
    the reason is c. Verify the xpath query. 
    
  • nxsdTemplate: 出力用のNXSDテンプレート。

  • nxsdRoot - NXSDルート。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

注意:

現在、readFile関数では、認可が必要なWebサーバーのファイルにアクセスする機能がサポートされていません。そのようなファイルへのアクセスを試行すると、次のエラーを受け取ります。

java.io.IOException: Server returned HTTP response code: 401 for URL

B.3.36 search

この関数はLDAPエントリのリストを返します。

シグネチャ:

ldap:search('directoryName','filter','scope')

パラメータ:

  • directoryName: directories.xmlファイルで指定されているディレクトリ名。directories.xmlファイルの詳細は、「authenticate」を参照してください。

  • filter: 検索に使用するフィルタ式で、この値をnullにすることはできません。

  • scope: 検索範囲。値は次のいずれかです。1: 1レベル、2: サブツリー、0: 指定したオブジェクト。このパラメータはオプションです。デフォルトでは、値は2です。

戻り値:

エントリのリストを含むXML要素。このXPath関数の場合は、すべてのプロパティをdirectories.xmlファイルで指定する必要があります。

ldap:search('people','cn=weblogic');

次に、出力の例を示します。

 <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> 

B.3.37 toCDATA

この関数は、CDATAセクションとしてDOMノードを返します。

シグネチャ:

ora:toCDATA(node)

B.3.38 tryToCastToBoolean

この関数は、入力がtruefalse1、または0の文字列である場合に、ブール値を返します。

シグネチャ:

ora:tryToCastToBoolean(string)

引数:

  • string: ブール値への変換を試みる文字列値。

B.3.39 writeBinaryToFile

この関数は、変数(または変数のパート)のバイナリ・バイトを指定のファイル名のファイルに書き込みます。

シグネチャ:

ora:writeBinaryToFile(varName[, partName[, query]])

引数:

  • varName: 変数の名前。

  • partName: messageType変数のパートの名前。

  • query: ルート要素の子に対する問合せ文字列。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.40 getGroupIdsFromGroupAlias

この関数は、BPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されているグループ・エイリアスのユーザーIDのリストを返します。

シグネチャ:

ora:getGroupIdsFromGroupAlias(String aliasName)

引数:

  • aliasName: ユーザーまたはグループのリストのエイリアス。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.3.41 getUserIdsFromGroupAlias

この関数は、BPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されているグループ・エイリアスのユーザーIDのリストを返します。

シグネチャ:

ora:getUserIdsFromGroupAlias(String aliasName)

引数:

  • aliasName - グループのエイリアス名。

プロパティID:

  • namespace-uri: http://schemas.oracle.com/xpath/extension

  • namespace-prefix: ora

B.4 変換関数

この項では、変換関数について説明します。

B.4.1 boolean

この関数は、入力をブールに変換します。数値は、正または負のゼロでもNaNでもない場合にのみtrueになります。ノード・セットは、空でない場合のみtrueになります。文字列は、長さがゼロでない場合のみtrueになります。

シグネチャ:

boolean(input as any)

引数

  • input as any: 任意の値。

次に例を示します。

boolean('false')trueを返します。

プロパティID:

  • namespace-uri:

B.4.2 number

この関数は、入力を数値に変換します。オプションの空白、オプションの負符号、数値、および空白をこの順序どおり含む文字列が、文字列によって表される数学的な値に最も近い(IEEE 754の数値丸め規則に従って) IEEE 754数値に変換されます。その他の文字列はすべてNaNに変換されます。ブールのtrueは1に変換されます。ブールのfalseは0に変換されます。ノード・セットはまず、string関数のコールによって変換した場合と同様にして文字列に変換され、次に文字列パラメータと同じ方法で変換されます。

シグネチャ:

number(input as string or boolean or node-set)

引数

  • input as string or boolean or node-set: 変換する値。

次に例を示します。

number('12.3')12.3を返します。

B.4.3 string

この関数は、オブジェクトを文字列に変換します。

シグネチャ:

string(input as any)

引数

  • input as any: 変換するオブジェクト。

次に例を示します。

string(12.3)'12.3'を返します。

プロパティID:

  • namespace-uri:

  • namespace-prefix:

B.5 DVM関数

この項では、ドメイン値マップ(DVM)関数について説明します。

B.5.1 lookupValue

この関数は、ソース列に指定のソース値を含むドメイン値マップのターゲット列の値をルックアップして文字列を戻します。

シグネチャ:

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

詳細は、「dvm:lookupValue」を参照してください。

B.5.2 lookupValue1M

この関数は、ソース列の値がソース値と等しいドメイン値マップの複数のターゲット列の値を格納する、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

詳細は、「dvm:lookupValue1M」を参照してください。

B.6 データベース関数

この項では、データベース関数について説明します。

B.6.1 lookup-table

この関数は、パラメータから生成された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

B.6.2 query-database

この関数は、指定されたデータベースに対して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

B.6.3 sequence-next-val

この関数は、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

B.7 日付関数

この項では、日付関数について説明します。

B.7.1 add-dayTimeDuration-to-dateTime

この関数は、指定された期間に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

B.7.2 current-date

この関数は、現在の日付を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

B.7.3 current-dateTime

この関数は、現在の日時の値を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.datetimeWithoutMillistrueに設定されている場合、この関数によって次の書式で現在の日時の値が返されます(ssは秒単位の時間を示します)。

CCYY-MM-DDThh:mm:ss.TZD

シグネチャ:

xpath20:current-dateTime(object)

引数:

  • object: 標準書式の時間。

プロパティID:

  • namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20

  • namespace-prefix: xpath20

B.7.3.1 秒単位で日時の値を表示する手順:

  1. 次のファイルを開きます。

    • UNIXオペレーティング・システムでは、$MIDDLEWARE_HOME/user_projects/domains/domain_name/bin/setDomainEnv.shを開きます。

    • Windowsオペレーティング・システムでは、MIDDLEWARE_HOME\user_projects\domains\domain_name\bin\setDomainEnv.batを開きます。

  2. 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"
    
  3. サーバーを再起動します。

B.7.4 current-time

この関数は、現在の時間を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

B.7.5 day-from-dateTime

この関数は、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

B.7.6 format-dateTime

この関数は、指定された書式を使用して書式設定した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

B.7.7 hours-from-dateTime

この関数は、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

B.7.8 minutes-from-dateTime

この関数は、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

B.7.9 month-from-dateTime

この関数は、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

B.7.10 seconds-from-dateTime

この関数は、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

B.7.11 subtract-dayTimeDuration-from-dateTime

この関数は、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

B.7.12 timezone-from-dateTime

この関数は、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

B.7.13 year-from-dateTime

この関数は、dateTimeから年を返します。

シグネチャ:

xpath20:year-from-dateTime(dateTime as string)

引数:

  • dateTime: 文字列としてのdateTime

プロパティID:

  • namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20

  • namespace-prefix: xpath20

B.8 アイデンティティ・サービス関数

この項では、アイデンティティ・サービス関数について説明します。

B.8.1 getDefaultRealmName

この関数は、デフォルトのレルム名を返します。

シグネチャ:

ids:getDefaultRealmName()

引数:

この関数には引数がありません。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath

  • namespace-prefix: ids

B.8.2 getGroupProperty

この関数は、指定したグループのプロパティ値を返します。グループまたは属性が存在しない場合は、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

B.8.3 getManager

この関数は、指定したユーザーのマネージャを取得します。ユーザーが存在しない、またはこのユーザーにマネージャが存在しない場合は、nullを返します。

シグネチャ:

ids:getManager(userName, realmName)

引数:

  • userName: ユーザー名。

  • realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルムが使用されます。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath

  • namespace-prefix: ids

B.8.4 getManagerFromManagementChain

この関数は、upToUserNameupToTitleおよびupToLevelに基づいて、指定されたユーザーに対する管理チェーンを取得します。ユーザーが存在しない、またはこのユーザーにマネージャが存在しない場合は、nullを返します。正規表現はupToTitleパラメータおよびupToUserパラメータで使用できます。

シグネチャ:

ids:getManagerFromManagementChain()

B.8.5 getReportees

この関数は、ユーザーの報告先を取得します。ユーザーが存在しない場合は、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

B.8.6 getSupportedRealmNames

この関数は、サポートされるレルム名を返します。

シグネチャ:

ids:getSupportedRealms()

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath

  • namespace-prefix: ids

B.8.7 getUserProperty

この関数は、ユーザーのプロパティを返します。ユーザーが存在しない場合は、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

詳細は、「電子メール・アドレスと電話番号を動的に選択する方法」を参照してください。

B.8.8 getUserRoles

この関数は、ユーザー・ロールを取得します。roleTypeに応じて、アプリケーション・ロールまたはグループのいずれかのオブジェクト・リストを返します。ユーザーまたはロールが存在しない場合は、nullを返します。

シグネチャ:

ids:getUserRoles(userName, roleType, direct)

引数:

  • userName: ロールを取得するユーザーを含む文字列または要素。

  • roleType: ロール・タイプ。3つの値ApplicationRoleEnterpriseRoleまたはAnyRoleのいずれかです。

  • direct: 直接ロールをフェッチするか間接ロールをフェッチするかを示す文字列または要素。これはオプションです。指定しない場合は、直接ロールのみがフェッチされます。xsd:booleanまたは文字列true/falseを指定します。

プロパティID:

  • namespace-uri:http://xmlns.oracle.com/bpel/services/IdentityService

  • namespace-prefix: ids

B.8.9 getUsersInAppRole

この関数は、このアプリケーション・ロールを付与されているユーザーのリストを返します。入力として指定されたアプリケーション・ロール名またはアプリケーション名がNULLの場合は、NULLを戻します。

シグネチャ: ids:getUsersInAppRole(appRoleName, appName, direct, realmName)

引数:

  • appRoleName: 取得するメンバーが属しているアプリケーション・ロールを含む文字列または要素。

  • appName: アプリケーション・ロールを作成するアプリケーション名。

  • direct: 直接の権限受領者のみを取得するか、すべてのユーザーを取得するかを示す文字列または要素。

  • realmName: レルム名を含む文字列または要素。これはオプションであり、指定しなければデフォルト・レルムが使用されます。

B.8.10 getUsersInGroup

この関数は、グループ内のユーザーを取得します。グループが存在しない場合は、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

B.8.11 isUserInAppRole

この関数は、ユーザーに特定のアプリケーション・ロールがあるかどうかを検証します。

シグネチャ:

ids:isUserInAppRole(userName, appRoleName, appName, realmName)

引数:

  • userName: ロールへの関与を検証する必要があるユーザーを含む文字列または要素。

  • appRoleName: アプリケーション・ロール名。

  • appName: アプリケーション名(たとえば、OracleBPMProcessRolesAppOracleBPMComposerRolesAppなど)。

  • realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルムが使用されます。この関数はブール値trueまたはfalseを返します。

B.8.12 isUserInRole

この関数は、ユーザーに特定のロールがあるかどうかを検証します。

シグネチャ:

ids:isUserInRole(userID, roleName, realmName)

引数:

  • userID: ロールの付与を検証するユーザーを含む文字列または要素。

  • roleName: ロール名。

  • realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath

  • namespace-prefix: ids

B.8.13 lookupGroup

この関数は、グループを取得します。グループが存在しない場合は、nullを返します。

シグネチャ:

ids:lookupGroup(groupName, realmName)

引数:

  • groupName: グループ名。

  • realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath

  • namespace-prefix: ids

B.8.14 lookupUser

この関数は、ユーザー・オブジェクトを取得します。ユーザーが存在しない場合は、nullを返します。

シグネチャ:

ids:lookupUser(userName, realmName)

引数:

  • userName: ユーザー名。

  • realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath

  • namespace-prefix: ids

B.9 論理関数

この項では、論理関数について説明します。

B.9.1 and

この関数は、両方のパラメータがtrueと評価される場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

a-boolean and another-boolean

引数:

  • a-boolean: 評価する一方のブール値。

  • another-boolean: 評価する他方のブール値。

B.9.2 equals

この関数は、2つのパラメータが等しい場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

parameter1 = parameter2

引数:

  • parameter1: 評価する一方のパラメータ。

  • parameter2: 評価する他方のパラメータ。

B.9.3 false

この関数は、ブール値falseを返します。

シグネチャ:

false()

B.9.4 greater

この関数は、第1パラメータが第2パラメータより大きい場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

parameter1 > parameter2

引数:

  • parameter1: 評価する第1パラメータ。

  • parameter2: 評価する第2パラメータ。

B.9.5 greater equals

この関数は、第1パラメータが第2パラメータより大きいか等しい場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

parameter1 >= parameter2

B.9.6 less

この関数は、第1パラメータが第2パラメータより小さい場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

parameter1 < parameter2

引数:

  • parameter1: 評価する第1パラメータ。

  • parameter2: 評価する第2パラメータ。

B.9.7 less equals

この関数は、第1パラメータが第2パラメータより小さいか等しい場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

parameter1 <= parameter2

引数:

  • parameter1: 評価する第1パラメータ。

  • parameter2: 評価する第2パラメータ。

B.9.8 not

この関数は、パラメータの否定を返します。

シグネチャ:

unobtainable as boolean)

引数:

  • input as boolean: 評価する値。

B.9.9 not equals

この関数は、2つのパラメータが等しくない場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

parameter1!= parameter2

引数:

  • parameter1: 評価する第1パラメータ。

  • parameter2: 評価する第2パラメータ。

B.9.10 or

この関数は、どちらかのパラメータがtrueに評価される場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

a-boolean or another-boolean

引数:

  • a-boolean: 評価する第1パラメータ。

  • another-boolean: 評価する第2パラメータ。

B.9.11 true

この関数は、ブール値trueを返します。

シグネチャ:

true()

プロパティID:

  • namespace-uri:

  • namespace-prefix:

B.10 数学関数

この項では、数学関数について説明します。

B.10.1 abs

この関数は、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

B.10.2 add

この関数は、2つの数値を加算します。

例:

2 + 2 = 4

B.10.3 ceiling

この関数は、入力数値より小さくない、最小の(負の無限大に最も近い)整数値を返します。

例:

ceiling(1.6)は、2.0を返します。

B.10.4 count

この関数は、入力ノード・セットに含まれるノードの数を返します。

例:

count(inputNodeSet as node-set)

引数:

  • inputNodeSet: 入力ノード・セット。

B.10.5 divide

この関数は、第1の数値を第2の数値で除算した結果を返します。

例:

2 div 2 = 1

B.10.6 floor

この関数は、入力数値より大きくない、最大の(正の無限大に最も近い)整数値を返します。

シグネチャ:

floor(1.6)は、1.0を返します。

B.10.7 max-value-among-nodeset

この関数は、入力数値のリストであるノードセット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

B.10.8 min-value-among-nodeset

この関数は、入力数値のリストであるノードセット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

B.10.9 mod

この関数は、切捨て除算の剰余を返します。

例:

5 mod 2は、1を返します

B.10.10 multiply

この関数は、2つの数値を乗算します。

例:

2 * 2 = 4

B.10.11 round

この関数は、入力数値に最も近い整数値を返します。2つの数値が存在する場合は、正の無限大に最も近い数値が返されます。

例:

round(1.5)は、2.0を返します。

B.10.12 square-root

この関数は、inputNumberの平方根を返します。

例:

oraext:square-root(25)は、5を返します

シグネチャ:

oraext:square-root(inputNumber as number)

引数:

  • inputNumber: 平方根を計算する入力数値。

プロパティID:

  • namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc

  • namespace-prefix: oraext

B.10.13 subtract

この関数は、第1の数値から第2の数値を減算します。

例:

2 - 2 = 0

B.10.14 sum

この関数は、すべてのノードの合計を数値として返します。

シグネチャ:

sum(numbers as node-set-set)

引数:

  • numbers as node-set-set: ノード・セットの合計数。

プロパティID:

  • namespace-uri:

  • namespace-prefix:

B.10.15 unary

この関数は、数値に-1を乗算します。

シグネチャ:

-(-1) = 1

B.11 ノード・セット関数

この項では、ノード・セット関数について説明します。

B.11.1 last

この関数は、コンテキスト・サイズを返します。

シグネチャ:

last()

B.11.2 local-name

この関数は、ノード名のローカル部分を返します。

シグネチャ:

local-name([inputNodeSet as node-set])

引数:

  • inputNodeSet as node-set: ノード・セットの名前。

B.11.3 name

この関数は、ノードのQNameを返します。

シグネチャ:

name([inputNodeSet as node-set])

引数:

  • inputNodeSet as node-set: ノード・セットの名前。

B.11.4 namespace-uri

この関数は、ノードのURIネームスペースを返します。

シグネチャ:

namespace-uri([inputNodeSet as node])

引数:

  • inputNodeSet as node-set: ノード・セットの名前。

B.11.5 position

この関数は、コンテキスト位置を返します。

シグネチャ:

position()

B.11.6 union

この関数は、オペランドの結合を計算します。オペランドはノードセットであることが必要です。

シグネチャ:

node-set | node-set

B.12 文字列関数

この項では、文字列関数について説明します。

B.12.1 compare

この関数は、inputStringcompareStringの各文字のUnicode値を比較して、これらの文字列間の辞書的な差異を返します。

inputStringcompareStringより辞書的に前にある場合は、-1を返します。

inputStringcompareStringが等しい場合は、0を返します。

inputStringcompareStringより辞書的に後にある場合は、1を返します。

例:

xpath20:compare('Audi', 'BMW')は、-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

B.12.2 compare-ignore-case

この関数は、大/小文字を無視してinputStringcompareStringの各文字のUnicode値を比較して、これらの文字列間の辞書的な差異を返します。表B-2に詳細を示します。


表B-2 戻り値

この関数からの戻り値 条件

-1

inputStringcompareStringより辞書的に前にあります。

0

inputStringcompareStringの両方が同等です。

1

inputStringcompareStringより辞書的に後にあります。


例:

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

B.12.3 concat

この関数は、文字列パラメータの連結を返します。

シグネチャ:

concat(string1 as string, string2 as string, ...)

引数:

  • string1: 連結する文字列値。

  • string2: 連結する文字列値。

B.12.4 contains

この関数は、inputStringsearchStringを含む場合にはtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

contains(inputString as string,searchString as string)

次に例を示します。

contains('Michael Kay','Michael')は、trueを返します。

B.12.5 create-delimited-string

この関数は、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

B.12.6 ends-with

この関数は、inputStringsearchStringで終わる場合に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

B.12.7 format-string

この関数は、渡された引数で書式設定されたメッセージを返します。引数は、少なくとも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

B.12.8 get-content-as-string

この関数は、入力要素の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

B.12.9 get-localized-string

この関数は、キーに対しロケール固有の文字列を返します。この関数は言語、国、変数およびリソースのバンドルを使用して正しいリソース・バンドルを識別します。すべてのパラメータは文字列書式である必要があります。パラメータ値を、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

B.12.10 index-within-string

この関数は、inputString内で最初に出現するsearchStringのゼロから始まる索引を返します。

searchStringが見つからない場合は-1を返します。

例:

oraext:index-within-string('ABCABC, 'B')は、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

B.12.11 last-index-within-string

この関数は、inputString内で最後に出現するsearchStringのゼロから始まる索引を返します。

searchStringが見つからない場合は-1を返します。

例:

oraext:last-index-within-string('ABCABC', 'B')は、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

B.12.12 left-trim

この関数は、inputStringから先頭の空白文字をすべて削除した値を返します。

例:

oraext:left-trim(' account ')は、'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

B.12.13 lower-case

この関数は、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

B.12.14 matches

この関数は、intputStringが正規表現パターンregexPatternに一致する場合にtrueを返します。

例:

xpath20:matches('abracadabra', '^a.*a$')は、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

B.12.15 normalize-space

この関数は、先頭および末尾の空白を除去し、連続した空白文字を単一のスペースに置き換えることによって、スペースを正規化した入力文字列を返します。

シグネチャ:

normalize-space([inputString as string])

引数:

  • inputString: 入力文字列。

次に例を示します。

normalize-space(' book title ')は、'book title'を返します。

B.12.16 right-trim

この関数は、inputStringから末尾の空白文字をすべて削除した値を返します。

例:

oraext:right-trim(' account ')は、' 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

B.12.17 starts-with

この関数は、入力文字列が検索文字列から始まる場合にtrueを返します。それ以外の場合、falseを戻します。

シグネチャ:

starts-with(inputString as string,searchString as string)

引数:

  • inputString: 入力文字列。

  • searchString: 検索文字列。

次に例を示します。

starts-with('data type','data')は、trueを返します。

B.12.18 string-length

この関数は、入力文字列の文字数を返します。

シグネチャ:

string-length([inputString as string])

引数:

  • inputString: 入力文字列。

次に例を示します。

string-length('xml')は、3を返します。

プロパティID:

  • namespace-uri:

  • namespace-prefix:

B.12.19 substring

この関数は、開始位置に指定された位置から始まり、lengthに指定された長さを持つ、入力文字列の部分文字列を返します。

シグネチャ:

substring(inputString as string,startingLoc as number,[length as number])

引数:

  • inputString: 入力文字列。

  • startingLoc: 開始位置。

  • length as number: 数値として指定する長さ

次に例を示します。

substring('12345',2)は、'2345'を返します。

B.12.20 substring-after

この関数は、入力文字列のうち検索文字列が最初に一致した箇所より後の部分文字列を返します。また、入力文字列に検索文字列が含まれない場合は空の文字列を返します。

シグネチャ:

substring-after(inputString as string,searchString as string)

引数:

  • inputString: 入力文字列。

  • searchString: 検索する文字列。

次に例を示します。

substring-after('1999/04/01','/')は、'04/01を返します。

B.12.21 substring-before

この関数は、入力文字列のうち検索文字列が最初に一致した箇所より前の部分文字列を返します。また、入力文字列に検索文字列が含まれない場合は空の文字列を返します。

シグネチャ:

substring-before(inputString as string,searchString as string)

引数:

  • inputString: 入力文字列。

  • searchString: 検索する文字列。

次に例を示します。

substring-before('1999/04/01','/')は、'1999'を返します。

B.12.22 translate

シグネチャ:

translate(inputString as string,fromString as string,toString as string)

引数:

  • inputString: 入力文字列。

  • fromString: 変換元文字列。

  • toString: 変換先文字列。

次に例を示します。

translate('--aaa--','abc-','ABC')は、'AAA'を返します。

B.12.23 upper-case

この関数は、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

B.13 ワークフロー・サービス関数

この項では、ワークフロー・サービス関数について説明します。

B.13.1 clearTaskAssignees

この関数は、現在のタスク割当て先を消去します。

シグネチャ:

hwf:clearTaskAssignees(taskID)

引数:

  • task: タスクのタスクID。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.13.2 createWordMLDocument

この関数は、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

B.13.3 dynamicTaskAssign

この関数は、現行タスクのコンテキスト内で、指定されたパターンを使用して、入力から指定されたタイプの割当て先を選択します。

この関数は、ヒューマン・タスクのコンテキストでのみ使用できます。

シグネチャ:

hwf:dynamicTaskAssign(patternName, participants, inputParticipantType, targetAssigneeType, isGlobal, invocationContext, parameter1, parameter2, ..., parameterN)

引数:

  • patternName: 使用するパターンの名前(必須)。パターンROUND_ROBINLEAST_BUSY、およびMOST_PRODUCTIVEは、自動的に提供されます。カスタム・パターンを使用してSOAサーバーを構成することが可能です。

  • participants: 割当て先として選択される参加者(必須)。これは、参加者名や参加者名のカンマ区切りリストを含む文字列または要素、あるいは参加者名や参加者名のカンマ区切りリストを含む要素のセットです。参加者のタイプはすべて同じである必要があります。

  • inputParticipantType: 入力する参加者のタイプ(usergroupまたはapplication_role) (必須)。

  • targetAssigneeType: 選択する割当て先のタイプ(usergroupまたはapplication_role) (必須)。この値は、関数が使用されているコンテキストと一致する必要があります(たとえば、所有者ユーザーを動的に選択する場合にはuserである必要があります)。inputParticipantTypeがuserである場合、ここで有効な値はuserのみです。

  • isGlobal: パターンへのアクセスに、すべてのタイプのタスクを使用するか、同じタイプのタスクを現在のタスクとして使用するかを示すブール値。これはオプションです。デフォルトはfalseです。

  • invocationContext: この関数が使用されている場所を一意に識別する文字列。指定しない場合は、デフォルトのコンテキストが割り当てられます。

  • parameterN : 一部の動的割当てパターンではパラメータを指定できます。パラメータ値は、?=?文字をデリミタとして使用し、名前と値のペアとして指定できます(たとえば、?TIME_PERIOD=7?)。

例:

hwf:dynamicTaskAssign(?LEAST_BUSY?,?jcooper,jstein,mtwain?,?user?,?user?,?true?,?ErrorAssignee?)

hwf:dynamicTaskAssign(?ROUND_ROBIN?,?LoanAgentGroup?,?group?,?user?,?false?,?OwnerUser?)

hwf:dynamicTaskAssign(?MOST_PRODUCTIVE?,task:task/task:payload/task:users,?user?,?user?,?false?,?OwnerUser?,?TIME_PERIOD=7?)

hwf:dynamicTaskAssign(?LEAST_BUSY?,?DeveloperRole?,?application_role?,?group?)

B.13.4 getNotificationProperty

この関数は、通知プロパティを取得します。通知ごとに対応する値に評価されます。この関数は、通知コンテンツの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

B.13.5 getNumberOfTaskApprovals

この関数は、タスクが承認された回数を計算します。

シグネチャ:

hwf:getNumberOfTaskApprovals(taskId)

引数:

  • taskId: タスクのID

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.13.6 getPreviousTaskApprover

この関数は、前のタスク承認者を取得します。

シグネチャ:

hwf:getPreviousTaskApprover(taskId)

引数:

  • taskId: タスクのID

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.13.7 getTaskAttachmentByIndex

この関数は、指定された索引にあるタスクの添付ファイルを取得します。

シグネチャ:

hwf:getTaskAttachmentByIndex(taskId, attachmentIndex)

引数:

  • taskId: タスクのタスクID。

  • attachmentIndex: 添付ファイルの索引。索引は1から始まります。attachmentIndex引数には、値が索引番号の文字列として評価されるノードを指定できます(すべてのノード値は文字列です)。静的に指定する場合は、'1'として指定できます。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.13.8 getTaskAttachmentByName

この関数は、添付ファイル名でタスクの添付ファイルを取得します。

シグネチャ:

hwf:getTaskAttachmentByName(taskId, attachmentName)

引数:

  • taskId: タスクのタスクID。

  • attachmentName: 添付ファイルの名前。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.13.9 getTaskAttachmentContents

この関数は、添付ファイル名でタスクの添付ファイルのコンテンツを取得します。

シグネチャ:

hwf:getTaskAttachmentContents(taskId, attachmentName)

引数:

  • taskId: タスクのタスクID。

  • attachmentName: 添付ファイルの名前。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.13.10 getTaskAttachmentsCount

この関数は、タスクの添付ファイル数を取得します。

シグネチャ:

hwf:getTaskAttachmentsCount(taskId)

引数:

  • taskId: タスクのタスクID。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.13.11 getTaskResourceBundleString

この関数は、タスク定義に関連付けられているリソース・バンドルから国際化されたリソース値を返します。

シグネチャ:

hwf:getTaskResourceBundleString(taskId, key, locale?)

引数:

  • taskId: タスクのタスクID。

  • key: リソースへのキー。

  • locale: ロケール(オプション)。この値は、デフォルトでシステム・ロケールに設定されます。この場合、ネームスペースhttp://xmlns.oracle.com/bpel/services/taskServiceresourceString XML要素が返されます。これにはリソース・バンドルからの文字列が含まれます。

プロパティID:

  • namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath

  • namespace-prefix: hwf

B.14 XREF関数

この項では、相互参照(XREF)関数について説明します。

B.14.1 lookupPopulatedColumns

この関数は、参照列の値に対応する単一または複数の値を相互参照列で参照します。

シグネチャ:

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

B.14.2 lookupXRef

この関数は、参照列の値に対応する値を相互参照列で参照します。

シグネチャ:

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

詳細は、「xref:lookupXRef関数」を参照してください。

B.14.3 lookupXRef1M

この関数は、参照列の値に対応する複数の値を相互参照列で参照します。

シグネチャ:

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

詳細は、「xref:lookupXRef1M関数」を参照してください。

B.14.4 markForDelete

この関数は、相互参照表の値を削除します。関数に渡された列値を含む行は、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

詳細は、「相互参照表の値の削除方法」を参照してください。

B.14.5 populateLookupXRefRow

この関数は、参照列に参照値がある相互参照表(XREF)に列値を移入します。モードに応じて、参照値も移入される場合があります。xref:populateXRefRow関数とは異なり、xref:populateLookupXRefRow関数では、同じIDのレコードが同時に追加されたときに一意制約の違反エラーはスローされません。かわりに、ルックアップとして動作してエラーの原因となった既存のソース値を返し、処理フローを停止しません。この関数を使用して、xref:populateXRefRow関数の使用時に発生する可能性がある同時実行性の問題を解決します。

シグネチャ:

xref:populateLookupXRefRow(xrefLocation as string, referenceColumnName as string, referenceValue as string, columnName as string, value as string, mode as string)

次に例を示します。

xref:populateLookupXRefRow("C:\xrefs\customer-id.xref", "Oracle System" , "ORCL_100", "SAP System", "SAP_001", "ADD")

B.14.6 populateXRefRow

この関数は、参照列に参照値がある相互参照表(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

詳細は、「xref:populateXRefRow関数」を参照してください。

B.14.7 populateXRefRow1M

この関数は、参照列に参照値がある相互参照表(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

詳細は、「xref:populateXRefRow1M関数」を参照してください。

B.15 Oracle JDeveloperの式ビルダーでのXPath式の構築

「式ビルダー」ダイアログとXPathビルディング・アシスタントを使用して、XPath式を作成できます。「式ビルダー」ダイアログで、BPELプロセスのXPath式、ヒューマン・ワークフロー、またはOracle Mediatorサービス・コンポーネントをビジュアルに設計できます。

B.15.1 式ビルダーの使用方法

式ビルダーの使用手順:

  1. 「関数」リストで、使用する関数のカテゴリ(たとえば、「アイデンティティ・サービス関数」)を選択します。
  2. 関数(たとえばgetManager)を選択します。
  3. 図B-1に示すように、「式に挿入」をクリックします。

    図B-1 「式ビルダー」ダイアログ

    図B-1の説明が続きます
    「図B-1 「式ビルダー」ダイアログ」の説明

    上部の「式」フィールドに関数を挿入します。

  4. 図B-2のように、「式」フィールドで、関数のカッコの間にカーソルを置きます。

    図B-2 カーソルを置く位置

    図B-2の説明が続きます
    「図B-2 カーソルを置く位置」の説明
  5. 図B-3のように、「スキーマ」セクションでスキーマ・パスを拡張して選択を行います。
  6. 「式に挿入」をクリックします。

    図B-4のように、式が関数に挿入されます。

B.15.2 XPathビルディング・アシスタントの概要

次のダイアログなど、いくつかのダイアログでは、XPathビルディング・アシスタントを使用してXPath式を指定できます。

  • 「式ビルダー」ダイアログの「式」フィールド

  • BPEL 2.0における「変数の作成」ダイアログの「初期化」タブの「式」フィールド

  • XSLTマップ・エディタの「XPath式の編集」ダイアログおよび「関数の編集」ダイアログ

長い式および複雑な式を手動で指定できますが、非効率的で間違いやすいプロセスになる可能性があります。XPathビルディング・アシスタントには、このプロセスを簡素化する一連の機能が用意されています。

  • 次の項目に関する自動完了機能

    • 要素および属性

    • 関数

    • BPEL変数およびパート

  • 関数パラメータのツールのヒント

  • XPathの構文検証およびセマンティク検証

B.15.3 XPathビルディング・アシスタントの使用方法

この項では、XPathビルディング・アシスタントを使用して、「式ビルダー」ダイアログの「式」フィールドで式を作成する方法の例を示します。

XPathビルディング・アシスタントを使用する手順は、次のとおりです。

  1. 「式」フィールドの中をクリックし、[Ctrl]キーを押しながら[Space]キーを押します。使用可能なオプションのメニューが表示されます。
  2. 次のいずれかの方法で、リストから選択します。
    • リストを下へスクロールして、関数をダブルクリックします。

    • 最初の1文字(たとえばc)を入力してその文字で始まる項目のみを表示し、適切な関数をダブルクリックします。

    図B-5に詳細を示します。

    図B-5 式を作成するための値リスト

    図B-5の説明が続きます
    「図B-5 式を作成するための値リスト」の説明

    この値が「式」フィールドに追加されます。別のオプションのリストが再度自動的に表示され、XPath式の次の部分を入力するように求められます。

  3. 次の部分を選択してダブルクリックします。図B-6に詳細を示します。

    図B-6 関数の次の部分の起動

    図B-6の説明が続きます
    「図B-6 関数の次の部分の起動」の説明

    この値が「式」フィールドに追加されます。リストが再度自動的に表示され、XPath式の次の部分を入力するように求められます。

  4. このプロセスを続けて実行して、XPath式の残りの部分を作成します。
  5. 必要に応じて手動でテキストを追加します。図B-7に詳細を示します。

    図B-7 手動によるテキストの追加

    図B-7の説明が続きます
    「図B-7 手動によるテキストの追加」の説明

注意:

XPathビルディング・アシスタントのポップアップで選択対象をダブルクリックするかわりに、[Enter]キーを使用して選択することもできます。式が完成しても情報の入力を求められる場合には、[Esc]を押してください。リストが閉じます。

B.15.4 XSLTマッパーでのXPathビルディング・アシスタントの使用

この項では、XPathビルディング・アシスタントを使用して、XSLTマッパーの「XPath式の編集」ダイアログで式を作成する方法の例を示します。

XSLTマッパーでXPathビルディング・アシスタントを使用する手順は、次のとおりです。

  1. XSLTマップ・エディタに移動します。
  2. 「コンポーネント・パレット」 リストから、「拡張関数」を選択します。
  3. リストを下へスクロールして「xpath-expression」関数を見つけます。
  4. 図B-8に示すように、「xpath-expression」関数をXSLTマップ・エディタにドラッグ・アンド・ドロップします。
  5. 関数をダブルクリックして、「XPath式の編集」ダイアログを表示します。
  6. 「XPath式」フィールド内でカーソルをクリックします。
  7. 図B-9に示すように、[Ctrl]キーを押しながら[Space]キーを押して、式を作成するための値リストを表示します。

    図B-9 式を作成するための値リスト

    図B-9の説明が続きます
    「図B-9 式を作成するための値リスト」の説明
  8. 次のいずれかの方法でリストから値を選択します(この例では、「concat(String) as String」を選択)。
    • リストを下へスクロールして、「concat(String) as String」をダブルクリックします。

    • cを入力して、その文字で始まる項目のみを表示し、「concat(String) as String」を選択してダブルクリックします。

    図B-10に詳細を示します。

    この選択値が「XPath式」フィールドに追加されます。別のオプションのリストが再度自動的に表示され、XPath式の次の部分を入力するように求められます。

  9. このプロセスを続けて実行して、XPath式の残りの部分を作成します。
  10. 完了後、「OK」をクリックして「XPath式の編集」ダイアログを閉じます。

B.15.5 関数パラメータのツールのヒント

関数パラメータのツールのヒントでは、選択したXPath関数の適切な引数が表示されます。たとえば、関数concatを手動で入力し、次に(を入力すると、パラメータのツールのヒントが表示され、concat関数の適切な引数が表示されます。関数の現在の引数名が太字でハイライト表示されます。図B-11に詳細を示します。

図B-11 関数の現在の引数名

図B-11の説明が続きます
「図B-11 関数の現在の引数名」の説明

1つの引数の指定が終わり、カンマを入力して次の引数に進むと、ツールのヒントが更新されて2番目の引数名が太字でハイライト表示されます。以降も同様に処理されます。関数が含まれている既存のXPathの編集中に、パラメータのツールのヒントを再起動するには、関数内にカーソルを置き、[Ctrl] キーと [Shift] キーを押しながら [Space] キーを押します。

B.15.6 構文検証およびセマンティック検証

Oracle JDeveloper内では、XPath式は、XPath 1.0仕様に準拠している場合は構文的に有効であるとみなされます。XPathビルディング・アシスタントでは、構文的に誤りのあるXPath関数(例: カッコやアポストロフィの欠落)については、誤りのある部分に赤い下線が付けられて警告されます。この部分にマウス・ポインタを移動します。これにより、エラー・メッセージがツールのヒントとして表示されます。エラーを修正すると、赤い下線付きのエラー表示は表示されなくなります。図B-12に詳細を示します。

図B-12 構文的に誤りのあるXPath

図B-12の説明が続きます
「図B-12 構文的に誤りのあるXPath」の説明

構文的に有効なXPath関数がセマンティック上は無効な場合があります。この場合は、実行時に予期しないエラーが発生する可能性があります。たとえば、要素、変数、関数またはパートの名前の綴りが間違っていることがあります。XPathビルディング・アシスタントでは、セマンティク・エラーについては、誤りのある部分に青い下線が付けられて警告されます。この部分にマウス・ポインタを移動します。これにより、エラー・メッセージがツールのヒントとして表示されます。エラーを修正すると、青い下線付きのエラー表示は表示されなくなります。図B-13に詳細を示します。

図B-13 セマンティク的に誤りのあるXPath

図B-13の説明が続きます
「図B-13 セマンティク的に誤りのあるXPath」の説明

B.15.7 フリー・フォーム・テキストおよびXPath式を使用した式の作成

一部のダイアログでは、フリー・フォーム・テキストとXPath式を組み合せて使用できます。

  1. フィールドにカーソルを置くと、この機能を説明するポップアップ・メッセージが表示されます。図B-14に詳細を示します。

    図B-14 機能説明のメニュー

    図B-14の説明が続きます
    「図B-14 機能説明のメニュー」の説明
  2. フリー・フォーム・テキストを入力します(この例では、'Hello, your telephone number')。図B-15に詳細を示します。

    図B-15 フリー・フォーム・テキスト

    図B-15の説明が続きます
    「図B-15 フリー・フォーム・テキスト」の説明
  3. XPathビルディング・アシスタントを起動する準備が整ったところで<%と入力します。図B-16に詳細を示します。

    図B-16 XPathビルディング・アシスタントの起動準備

    図B-16の説明が続きます
    「図B-16 XPathビルディング・アシスタントの起動準備」の説明

    赤い下線が表示されます。これは、追加情報の入力を求められていることを示します。

  4. [Ctrl]キーを押しながら[Space]キーを押して、XPathビルディング・アシスタントを起動します。図B-17に詳細を示します。

    図B-17 XPathビルディング・アシスタントの起動

    図B-17の説明が続きます
    「図B-17 XPathビルディング・アシスタントの起動」の説明
  5. リストを下へスクロールして、選択する値をダブルクリックします。
  6. このプロセスを続けて実行して、式の残りの部分を作成します。

B.15.8 Windows上でXPath関数でディレクトリ・パスにダブル・スラッシュを使用するとエラーが発生する可能性がある

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")

B.16 ユーザー定義XPath拡張関数の作成

Oracle SOA Suiteで使用するためのユーザー定義(カスタム)XPath拡張関数を作成できます。これらの関数は、次のコンポーネントに対して作成できます。

  • Oracle BPEL Process Manager

  • Oracle Mediator

  • XSLTマッパー

  • ヒューマン・ワークフロー

  • これらのすべてのコンポーネントで共有

Oracle SOA SuiteのXPath拡張関数は、次の標準に従います。

  • 単一のスキーマで、システム関数とユーザー定義関数の両方の構成構文を定義します。

  • XPath関数は、使用方法(Oracle BPEL Process ManagerOracle Mediator、ヒューマン・ワークフロー、XSLTマッパーおよびすべてで共通使用)に基づいて分類されます。

  • システム関数は、ユーザー定義関数と区別されます。

  • リポジトリで、システム関数の構成ファイルとユーザー定義関数の構成ファイルの両方をホストします。

  • リポジトリで、ユーザー定義関数の実装JARファイルをホストし、自動的にJava仮想マシン(JVM)(クラス・ローダー)で使用できるようにします。

関数の作成に関する次の規則に従うことをお薦めします。

  • 可能な場合は、すべてのコンポーネントで共有できる関数を作成します。すべてのコンポーネントで共有される関数は、ext-soa-xpath-functions-config.xmlという構成ファイルに作成できます。XSLTマッパーの関数は、Oracle BPEL Process ManagerOracle Mediatorおよびヒューマン・ワークフローの関数と異なる方法で実装する必要があります。

    これらの実装の相違点の詳細は、「ユーザー定義XPath拡張関数の実装方法」を参照してください。

  • あるコンポーネント用で他のコンポーネントでは使用できない関数(例: Oracle Mediatorまたはヒューマン・ワークフローで使用できないOracle BPEL Process Manager用の関数)を作成する場合は、その関数をそのコンポーネントに固有の構成ファイルに作成します。この例では、Oracle BPEL Process Managerの関数をext-bpel-xpath-functions-config.xmlという構成ファイルに作成する必要があります。

次の例は、システム関数およびユーザー定義関数で使用される関数スキーマを示しています。

<?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>

B.16.1 ユーザー定義XPath拡張関数の実装方法

この項では、Oracle SOA Suiteコンポーネントのユーザー定義XPath拡張関数を実装する方法を説明します。

B.16.1.1 XSLTマッパーに対する関数の実装方法

XSLTマップ・エディタのユーザー定義XPath拡張関数の実装は、他のコンポーネントと次の点で異なります。

  • 各XSLTマップ・エディタ関数に、public staticクラスの対応するpublic staticメソッドが必要です。関数名とメソッド名が一致する必要があります。

  • XSLTマップ・エディタ関数のネームスペースの形式はhttp://www.oracle.com/XSL/Transform/java/mypackage.MyFunctionClassである必要があり、mypackage.MyFunctionClassは、関数のpublic staticメソッドが含まれているpublic staticクラスの完全修飾クラス名です。

B.16.1.2 他のすべてのコンポーネントに対する関数の実装方法

Oracle BPEL Process ManagerOracle Mediatorおよびヒューマン・ワークフローの関数では、oracle.fabric.common.xml.xpath.IXPathFunctionインタフェース(fabric-runtime.jarファイルで定義)またはjavax.xml.xpath.XPathFunctionを実装する必要があります。

他のすべてのコンポーネントに対する関数を実装する手順は、次のとおりです。

  1. XPath関数用のoracle.fabric.common.xml.xpath.IXPathFunctionインタフェースを実装します。IXPathFunctionインタフェースには、call(context, args)という1つのメソッドがあります。次の例は、このメソッドのシグネチャを示しています。
     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: 関数のコール時に指定する引数のリスト。

    次の例では、getNodeValue(arg1)という関数が実装され、値w3c nodeを取得します。

    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()
        }
     }

B.16.2 ユーザー定義XPath拡張関数の構成方法

この項では、ユーザー定義XPath拡張関数の構成方法について説明します。

ユーザー定義XPath拡張関数を構成する手順は、次のとおりです。

  1. 関数を定義するXPath拡張構成ファイルを作成します。次の例は、「ユーザー定義XPath拡張関数の作成」で示した関数スキーマに基づくサンプル構成ファイルを示しています。この例では、mf:myFunction1mf:myFunction2の2つの関数が作成されます。
    <?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 関数スキーマの要素

    要素 説明

    className

    関数実装クラスの完全修飾クラス名。

    return

    関数の戻り型。XPathおよびXSLTでサポートされているstring、number、boolean、ノードセットおよびtreeのいずれかを指定できます。

    params

    関数のパラメータ。関数にはパラメータがない場合があります。パラメータには次の属性があります。

    • name: パラメータの名前。

    • type: パラメータのタイプ。XPathおよびXSLTでサポートされているstring、number、boolean、ノードセットおよびtreeのいずれかを指定できます。

    • minOccurs: パラメータの最少繰返し数。0に設定した場合、パラメータはオプションです。1に設定した場合は必須です。現在の制限では、この属性に指定できる値は0または1のみで、オプションのパラメータは必須パラメータの後に定義する必要があります。この属性を指定しない場合、デフォルト値は1です。

    • maxOccurs: パラメータの最大繰返し数。unboundedに設定した場合、パラメータの繰返し数に制限はありません。このパラメータにより、無制限のパラメータを使用する可能性がある、XPath 1.0関数のconcat()などの関数をサポートできます。現在の制限では、関数の最終パラメータ以外のパラメータには、maxOccurs1より大きい値またはunboundedを指定できません。この属性を指定しない場合、デフォルト値は1です。

    • wizardEnabled: パラメータ値の入力にウィザードを使用可能にするかどうかを示します。この指定によって、パラメータ値を入力する必要があるユーザー・インタフェースがサポートされます。trueに設定すると、パラメータ値のフィールドの横にウィザード起動ボタンが表示されます。ウィザード起動ボタンを押すと、ユーザーがパラメータ値を簡単に入力できるポップアップ・ウィザードが起動されます。ウィザード・クラスを後で指定する必要があります。この属性を指定しない場合のデフォルト値はfalseで、デフォルトでは、パラメータに関するウィザードのサポートはありません。

    desc

    関数の説明(オプション)。resourceKeyを指定した場合、説明はルート要素で前に指定したリソース・バンドルから取得されます。

    detail

    関数の長い(詳細な)説明(オプション)。resourceKeyを指定した場合、説明はルート要素で前に指定したリソース・バンドルから取得されます。

    icon

    関数のアイコンのURL(オプション)。resourceKeyを指定した場合、アイコンのURLはルート要素で前に指定したリソース・バンドルから取得されます。関数を表示する必要があるユーザー・インタフェースをサポートするための要素です。

    helpURL

    関数のヘルプHTMLのURL(オプション)。resourceKeyを指定した場合、ヘルプのURLはルート要素で前に指定したリソース・バンドルから取得されます。関数のヘルプ・リンクを表示する必要があるユーザー・インタフェースをサポートするための要素です。

    group

    関数のグループ名(オプション)。resourceKeyを指定した場合、グループ名はルート要素で前に指定したリソース・バンドルから取得されます。関数をグループ化する必要があるユーザー・インタフェースをサポートするための要素です。グループ名を指定しない場合、関数は、ユーザー・インタフェースでグループ化される際に組込みの拡張関数に分類されます。

    wizardClass

    ウィザードを使用可能にしたすべてのパラメータに対するウィザード・クラスの完全修飾クラス名。パラメータ値を入力する必要があるユーザー・インタフェースをサポートするための要素です。このウィザード・クラスは、ウィザード起動ボタンを押すと起動され、ユーザーがパラメータ値を簡単に入力できるようにします。ウィザードを使用可能にするパラメータを指定していない場合、この要素は指定しないでください。

    注意: この要素は、ユーザー定義関数ではサポートされていません。この機能を現在サポートしているのはシステム関数のみです。


  2. 関数を使用するコンポーネント・タイプに基づいて、ユーザー定義のXPath拡張構成ファイルの名前を指定します。表B-4に、ユーザー定義構成ファイルに使用する命名規則を示します。

    表B-4 ユーザー定義構成ファイル

    関数を使用するコンポーネント 使用する構成ファイル名

    Oracle BPEL Process Manager

    ext-bpel-xpath-functions-config.xml

    Oracle Mediator

    ext-mediator-xpath-functions-config.xml

    XSLTマッパー

    ext-mapper-xpath-functions-config.xml

    ヒューマン・ワークフロー

    ext-wf-xpath-functions-config.xml

    すべてのコンポーネント

    ext-soa-xpath-functions-config.xml


  3. 構成ファイルをコンパイル済クラスとともにJARファイル内に配置します。JARファイル内で、構成ファイルはMETA-INFディレクトリに格納される必要があります。JARファイルは特定のディレクトリに存在する必要はありません。

    注意:

    customXpathFunction JARは、SOAコンポジットの一部ではないため、明示的に追加する必要があります。

  4. Oracle JDeveloperで、「ツール」「プリファレンス」「SOA」の順に選択します。
  5. 「追加」ボタンをクリックし、JARファイルを選択します。
  6. 変更を有効にするためにOracle JDeveloperを再起動します。

    JARファイルがJVMのクラスパスに自動的に追加され、使用可能になります。

B.16.3 ユーザー定義関数のランタイムへのデプロイ方法

カスタムのJARファイルとクラスを追加するために、soa/modules/oracle.soa.ext_11.1.1ディレクトリが用意されています。詳細は、「カスタム・クラスとJARファイルの追加」を参照してください。