この付録の内容は次のとおりです。
XPath関数の詳細は、次のURLを参照してください。
http://www.w3.org
この項では、拡張関数について説明します。
この関数は、バッチ内のアクティブ・プロセス数を返します。
シグネチャ:
ora:batchProcessActive(String rootId, String processId)
引数:
rootId: ルートのID。
processId: プロセスのID。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、バッチ内の完了プロセス数を返します。
シグネチャ:
ora:batchProcessCompleted(String rootId, String processId)
引数:
rootId: ルートのID。
processId: プロセスのID。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
注意:
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
この関数は、デリミタ付き文字列を入力としてとり、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
この関数は、渡された引数から区切り文字付き文字列を作成します。
シグネチャ:
ora:createDelimitedString(delimiter as string, nodeList)
引数:
delimiter as string: 入力文字列内の項目を区切る文字(たとえば、カンマやセミコロン)。
nodeList: ノードの順序付きコレクションを示します。
プロパティID:
namespace-uri:
namespace-prefix:ora
この関数は、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アプリケーションの開発』を参照してください。
この関数は、ストリーミングXPath APIを使用して変換します。変換エンジンが変換の結果をメモリーにマテリアライズしないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。ただし、処理できるのは、for-eachなど、順方向のみのXSLコンストラクトのみです。targetTypeには、SDOMまたはATTACHMENTを指定できます。
シグネチャ:
med:doStreamingTranslate('input','streaming xpath context','targetType','attachment element'?)
引数:
input: XPath関数の入力データ。これはSDOMまたはattachment elementになります。
streaming xpath context
targetType: XPath関数がネイティブ・データをXMLに変換する方法を指定します。
attachment element: 返されるXMLの添付ファイルです。このパラメータはオプションです。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: med
例:
med.doStreamingTranslate($in.request/inp1:request/inp1:sourceAttachmentElement,$in.request/inp1:request/inp1:streamingcontext, 'ATTACHMENT', $in.request/inp1:request/inp1:targetAttachmentElement)
この関数は、入力データをXMLに変換します。入力データには、変換する文字列、ファイルまたはFTPアダプタ添付ファイル、添付ファイル、またはBase64エンコード・データを含む要素を指定できます。targetTypeには、DOM、ATTACHMENTまたはSDOMを指定できます。
シグネチャ:
med:doTranslateFromNative('input','nxsdTemplate','nxsdRoot','targetType','attachment element'?)
引数:
input: XPath関数の入力データ。データは、カンマ区切り値(CSV)などのネイティブ・フォーマットです。
nxsdTemplate: 入力データからXMLフォーマットへの変換に使用するNXSDスキーマ。
nxsdRoot: NXSDスキーマのルート要素。
targetType: XPath関数がネイティブ・データをXMLに変換する方法を指定します。
attachment element: 返されるXMLの添付ファイルです。このパラメータはオプションです。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: med
例:
med:doTranslateFromNative(string($in.request/inp1:request/inp1:source),'xsd/address_csv.xsd','Root-Element','DOM')
この関数は、入力のDOMを文字列または添付ファイルに変換します。targetTypeは、STRINGまたはATTACHMENTです。
シグネチャ:
med:doTranslateToNative('input','nxsdTemplate','nxsdRoot','targetType','attachment element'?)
引数:
input: XPath関数の入力データ。このデータには、カンマ区切り値(CSV)などのネイティブ・フォーマットに変換する必要があるDOMまたはSDOMデータを使用できます。
入力ノードは通常、次の例に示すように、受信する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')
この関数は、Javaのメッセージ書式を使用してメッセージを書式設定します。
シグネチャ:
ora:format(formatStrings, args+)
引数:
formatStrings: 書式設定するデータの文字列。
args+: 書式文字列の書式指定子によって参照される引数。引数が書式指定子よりも多い場合、余分な引数は無視されます。引数の数は変数で、0(ゼロ)の場合があります。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、指定されたQNameに対する空要素のリストを生成します。
シグネチャ:
ora:genEmptyElem('ElemQName',size?, 'TypeQName'?, xsiNil?)
引数:
ElemQName: 最初の引数は、空要素のQNameです。
size: 2番目の引数は整数型で、空要素の数を示します(オプション)。指定されていない場合、デフォルトのサイズは1です。
TypeQName: 3番目の引数は、生成される空の名前のxsi:typeとなるQNameです(オプション)。このxsi:typeパターンは、SOAPENC:Arrayに相当します。指定されていないか、空の文字列である場合、xsi:type属性は生成されません。
xsiNil: 4番目の引数はブール型で、生成される空の要素において、XSD-nillableである場合に、XSI - nilにするかどうかを指定します(オプション)。デフォルトは、falseです。指定されていないか、falseである場合、xsi:nilは生成されません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数の詳細は、「空要素の配列と等価の機能の生成」を参照してください。
この関数は、一意のGUIDを生成します。
シグネチャ:
oraext:generate-guid()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、指定されているネイティブ・フォーマットのファイルを解析します。この関数は、BPELプロセスのassignアクティビティを設計する場合に使用します。
シグネチャ:
oraext:get-content-from-file-function(fileName, nxsdTemplate?, nxsdRoot?)
例:
oraext:get-content-from-file-function("file:/c:/Ftab.txt",
"file:/c:/Ftab_1.xsd","root")
引数:
fileName: ファイルの名前。
nxsdTemplate: 出力のネイティブXSD (NXSD)テンプレート。
nxsdRoot-: NXSDルート。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、アプリケーション名を返します。
シグネチャ:
ora:getApplicationName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、href関数から添付ファイルのコンテンツを取得します。
シグネチャ:
ora:getAttachmentContent(varName[, partName[, query]])
引数:
varName: データのソース変数を指定します。
partName: 変数から選択するパートを指定します(オプション)。
query: 絶対ロケーション・パスを指定して(/は、パート全体を表す文書フラグメントのルートを意味する)、パートを表す文書フラグメント内のサブツリーのルートを識別します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
詳細は、「SOAPアタッチメントのコンテンツの読取りおよびエンコード」を参照してください。
varName、partNameおよびqueryに格納されているhrefからSOAPアタッチメントのプロパティを取得します。
シグネチャ: ora:getAttachmentProperty(propertyName, varName[, partName[, query]])
引数:
varName: データのソース変数を指定します。
partName: 変数から選択するパートを指定します(オプション)。
query: 絶対ロケーション・パスを指定して(/は、パート全体を表す文書フラグメントのルートを意味する)、パートを表す文書フラグメント内のサブツリーのルートを識別します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、指定された要素の子要素を取得します。
シグネチャ:
ora:getChildElement(element, index)
引数:
element: データのソース。
index: 子要素の索引の整数値。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポーネント・インスタンスIDを返します。
シグネチャ:
ora:getComponentInstanceID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポーネント名を返します。
シグネチャ:
mdhr:getComponentName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri:http://schemas.oracle.com/xpath/extension
namespace-prefix: mdhr
注意:
この関数は、12cリリース1 (12.1.3)では非推奨になり、式ビルダーには表示されません。
この関数は、コンポジット・インスタンスIDを返します。
シグネチャ:
ora:getComponentInstanceId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri:http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポジット名を返します。
シグネチャ:
ora:getCompositeName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポジットURLを返します。
シグネチャ:
ora:getCompositeURL()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri:http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、実行コンテキストID (ECID)を返します。
シグネチャ:
ora:getECID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、フォルトを文字列値として返します。
シグネチャ:
ora:getFaultAsString()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
詳細は、「getFaultAsString XPath拡張関数によるフォルト詳細の取得」を参照してください。
この関数は、XML要素としてフォルトを返します。
シグネチャ:
ora:getFaultAsXML()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix:ora
この関数は、フォルト名を返します。
シグネチャ:
ora:getFaultName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、マイルストーン名を返します。
シグネチャ:
ora:getMilestoneName
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、ノードに関連付けられているドキュメント・オブジェクトを返します。
シグネチャ:
ora:getOwnerDocument(node)
引数:
node: XMLノードを指定します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELプロセス・インスタンスの親コンポーネント・インスタンスIDを返します。
シグネチャ:
ora:getParentComponentInstanceID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、引数を取らず、起動されたコンポジットから現行リビジョンを返します。
シグネチャ:
ora:getRevision
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、タスクに送信する次のリマインダを計算します。
シグネチャ:
ora:getTaskReminderDuration(taskId)
引数:
taskId: タスクのタスクID。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPEL変数から任意の値を抽出します。
シグネチャ:
ora:instanceOf(an_xpath_expression, 'typeQName')
引数:
an_xpath_expression: 要素を返すXPath式。
typeQName - グローバル宣言済XSDタイプのQName。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、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
この関数は、文字列をDOMに解析します。
注意:
この関数は、「BPEL XPath拡張関数」オプションの下にも選択対象として表示されます。
シグネチャ:
oraext:parseEscapedXML(contentString)
引数:
contentString: DOMに解析する文字列。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: oraext
この関数の詳細は、「文字列からXML要素への変換方法」を参照してください。
この関数は、文字列をDOM要素に解析します。
シグネチャ:
oraext:parseXML(contentString)
引数:
contentString: DOM要素に解析する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、拡張可能なドキュメントを出力ストリームに直接変換します。
シグネチャ:
ora:processScalableDocumentToNative(template, input, outputFilePath, nxsd, root, batchsize, properties)
引数:
template
input
outputFilePath
nxsd
root
batchsize
properties
この関数は、インバウンド・ネイティブ・データを変換し(たとえば、カンマ区切り値から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)
この関数は、インバウンド・ネイティブ・データを変換し(たとえば、カンマ区切り値からXMLへ)、変換されたコンテンツにユーザー提供のXSLを適用します。変換の出力は、出力ファイルにストリーミングされます。このXPath関数への入力は、添付ファイルまたはhrefのどちらかです。変換エンジンが変換の結果をメモリーに格納しないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。ただし、処理できるのは、for-eachなど、順方向のみのXSLコンストラクトのみです。
シグネチャ:
ora:processXSLTAttachmentFromNativeToStream(template,input href, output href, input nxsd path, nxsd root element name, batchsize,properties)
この関数は、ユーザー提供のXSLを適用してインバウンドXMLを変換してから、変換済XMLをネイティブ・ファイル(たとえば、カンマ区切りの値)に変換します。このXPath関数への入力は、添付ファイルまたはhrefのどちらかです。変換エンジンが変換の結果をメモリーに格納しないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。この関数は、まずXSLを適用して受信XMLデータを変換してから、変換済XMLをネイティブ・データに変換します。
シグネチャ:
ora:processXSLTAttachmentToNativeStream(template, input href, output href, nxsd schema, nxsd root element, batch size)
この関数は、XSLT変換の結果を出力ファイルに直接ストリーミングします。このXPath関数への入力は、添付ファイルまたはhrefのどちらかです。変換エンジンが変換の結果をメモリーに格納しないように、バッチ処理が使用されます。この結果、ギガバイト単位の大規模なペイロードを任意に処理できるようになります。ただし、処理できるのは、for-eachなど、順方向のみのXSLコンストラクトのみです。
シグネチャ:
ora:processXSLTAttachmentToStream(template, input href, output href, batchsize, properties)
この関数は、XSLT変換後の拡張可能なドキュメントを返します。
シグネチャ:
ora:processXSLTForScalableDocument(template, input, batchsize, properties)
この項では、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でサポートされているか |
|---|---|---|
|
はい |
いいえ |
|
はい |
いいえ |
|
はい |
いいえ |
|
いいえ |
はい |
|
いいえ |
はい |
この関数は、リンクのステータスを示すブール値を返します。リンクのステータスが正の場合、この値はtrueになります。そうでない場合はfalseです。この関数はjoin条件でのみ使用できます。
linkName引数は、join条件に関連付けられたアクティビティの着信リンクの名前を表します。
シグネチャ:
bpws:getLinkStatus ('linkName')
引数:
variableName: データのソース変数。
propertyName: プロパティのQName。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpws
この関数は、BPEL変数から任意の値を抽出します。
第1引数のみが指定されている場合は、変数の値を抽出しますが、変数はXMLスキーマの単純型または要素を使用して定義されている必要があります。それ以外の場合、この関数の戻り値は、メッセージ・タイプのパート全体(第2引数が指定され、第3引数が指定されない場合)、またはlocationPathに基づく選択の結果(オプションの引数が両方とも指定されている場合)を表す単一ノードが含まれるノードセットです。
シグネチャ:
bpws:getVariableData ('variableName', 'partName'?, 'locationPath'?)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(オプション)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpws
に従って、locationPath引数によって選択されるノードセットのサイズが実行時に選択されるノードセットのサイズと異なる場合は、準拠実装により標準のフォルトbpws:selectionFailureがスローされる必要があります。
たとえば、次のコードに示すcount()関数は、StoreRequestの下にproduct要素のエントリが複数ある場合に機能せず、selectionFailureフォルトがスローされます。
count(bpws:getVariableData('inputVariable',
'payload','/ns2:StoreRequest/ns2:product'))
この関数を機能させるには、構文を次のように変更します。
"count($inputVariable.payload/ns2:product)"
この関数は、BPEL変数から任意の値を抽出します。第1引数ではデータのソース変数を指定し、第2引数ではその変数から選択するプロパティのQNameを指定します。特定のプロパティが、実行中に1以外のサイズのノードセットを選択する場合、標準フォルトbpws:selectionFailureがスローされます。
シグネチャ:
bpws:getVariableProperty ('variableName', 'propertyname')
引数:
variableName: データのソース変数。
propertyName: プロパティのQName。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpws
この関数は、BPEL変数から任意の値を抽出します。第1引数ではデータのソース変数を指定し、第2引数ではその変数から選択するプロパティのQNameを指定します。特定のプロパティが、実行中に1以外のサイズのノードセットを選択する場合、標準フォルトbpws:selectionFailureがスローされます。
シグネチャ:
bpel:getVariableProperty ('variableName', 'propertyname')
引数:
variableName: データのソース変数。
propertyName: プロパティのQName。指定されたプロパティによって選択されるノードセットのサイズが実行時に選択されるノードセットのサイズと異なる場合は、標準のフォルトselectionFailureがスローされます。
プロパティID:
namespace-uri: http://schemas.xmlsoap.org/ws/2003/03/business-process/
namespace-prefix: bpel
この項では、BPEL XPath拡張関数について説明します。
この関数は、stringの内容を一重引用符で囲んで返します。
シグネチャ:
ora:addQuotes(string)
引数:
string: 引用符を追加する文字列。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数はLDAPユーザーを認証し、trueまたはfalseを返します。
authenticate、listUsers、lookupUser、searchのXPath関数は、LDAPサーバーからの情報(通常はLDAPユーザーの詳細)を取得する参照と検索の機能を提供します。
これらのXPath関数は、構成ファイルを使用してJNDIのサーバー・アクセス情報を取得します(たとえば、コンテキスト・ファクトリ、LDAPサーバーのプロバイダURL、認証タイプなど)。構成ファイルはdirectories.xmlという名前で、BPELプロジェクトの.bpelファイルと同じディレクトリに格納されている必要があります。これらのXPath関数をコールするには、このファイルを用意する必要があります。
次の例に、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
注意:
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
この関数は、XSLTの複数パラメータをサポートするWS-BPEL 2.0のdoXSLTransform機能を実装します。この関数を使用する場合は、XSL template matchをルート(/)に設定しないでください。ルート要素に設定する必要があります。
シグネチャ:
ora:doXSLTransform('url_to_xslt',input,['paramQname',paramValue]*)
引数:
url_to_xslt: XSLスタイルシートのURLを指定します。
input: 入力変数名を指定します。
paramQname: パラメータQNameを指定します。
paramValue: パラメータ値を指定します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、doXSLTransform()の補完XPath関数です。目的は、XSLTテンプレートがドキュメントに一致したときにトランスフォーメーションを実行することです。
次に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としてメモリーにキャッシュする必要がなくなります。
この関数は、XMLファイルのコンテンツを返します。
シグネチャ:
ora:doc('fileName','xpath'?)
引数:
fileName: XMLファイルの名前。
xpath: XMLファイルの一部(ノードセット、ノード・リスト、リーフ・ノードなど)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、標準XSD日付書式を出力に適した文字に変換します。
シグネチャ:
ora:formatDate('dateTime', 'format')
引数:
dateTime: XSD書式の日付関連値を指定します。引数が文字列でない場合、この関数は、string()関数が適用された場合と同じように動作します。引数が日付でない場合、出力は空の文字列になります。引数が有効なXSD日付で、フィールドの一部が空の場合は、未指定のフィールドの充填が試みられます。たとえば、2003-06-10T15:56:00のようになります。
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
一意のGUIDを生成します。
シグネチャ:
ora:generateGUID()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、コンポーネントのプロパティ値を取得します。
シグネチャ:
ora:getConfigProperty(propertyName)
引数:
propertyName: プロパティ名。
この関数は、要素のコンテンツをXML文字列として返します。
シグネチャ:
ora:getContentAsString(element elementAsNodeList)
引数:
element: 要素(データのソース)。
elementAsNodeList: ノード・リストとしての要素。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、対話IDを返します。
シグネチャ:
ora:getConversationId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、インスタンスの作成者を返します。
シグネチャ:
ora:getCreator()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在の日付を文字列として返します。
シグネチャ:
ora:getCurrentDate('format'?)
引数:
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在の日時を文字列として返します。
シグネチャ:
ora:getCurrentDateTime('format'?)
引数:
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在の時間を文字列として返します。
シグネチャ:
ora:getCurrentTime('format'?)
引数:
format: java.text.SimpleDateFormat書式に従って書式設定された文字列を指定します(オプション)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、要素の配列から、indexを使用して要素を返します。
シグネチャ:
ora:getElement('variableName', 'partName', 'locationPath', index)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(必須)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。必須です)。
index: 動的索引値。最初のノードの索引は1です。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、インスタンスIDを返します。
シグネチャ:
ora:getInstanceId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、DOMノードの値を文字列として返します。
シグネチャ:
ora:getNodeValue(node)
引数:
node: DOMノード。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、ノード・リストを取得します。これは、ノード・リストを返さないbpws:getVariableDataの代用として実装されます。
シグネチャ:
ora:getNodes('variableName', 'partName'?, 'locationPath'?)
引数:
variableName: データのソース変数。
partName: 変数から選択するパート(オプション)。
locationPath: パートを表すドキュメント・フラグメント内のサブツリーのルートを明確にした絶対ロケーション・パスを指定します(/により、パート全体を表す、ドキュメント・フラグメントのルートを表します。オプションです)。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELスーツケース・ディスクリプタのpreferencesセクションで指定されているプロパティの値を返します。
シグネチャ:
ora:getPreference(preferenceName)
引数:
preferenceName: BPELスーツケース・ディスクリプタで指定されているプリファレンスの名前。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在のBPELプロセスのIDを返します。
シグネチャ:
ora:getProcessId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、プロセスの所有者であるユーザーがBPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されている場合に、そのユーザーのIDを返します。
シグネチャ:
ora:getProcessOwnerId()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在のBPELプロセスのルートURLを返します。
シグネチャ:
ora:getProcessURL()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、現在のプロセス・バージョンを返します。
シグネチャ:
ora:getProcessVersion()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、ノードのコンテンツを整数として返します。
シグネチャ:
ora:integer(node)
引数:
node: 入力ノード。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数はLDAPユーザーのリストを返します。
シグネチャ:
ldap:listUsers('directoryName',filter')
引数:
directoryName: directories.xmlファイルで指定されているディレクトリ名。directories.xmlファイルの詳細は、「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>
この関数はLDAPユーザー情報を返します。
シグネチャ:
ldap:lookupUser('directoryName','userId')
引数:
directoryName: directories.xmlファイルで指定されているディレクトリ名。directories.xmlファイルの詳細は、「authenticate」を参照してください。
userId: 検索するユーザーID。
戻り値:
ユーザー情報を含む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>
この関数は、XML文字列をXML要素に解析します。
注意:
この関数は、「拡張関数」オプションの下にも選択対象として表示されます。
シグネチャ:
ora:parseEscapedXML(xmlString)
引数:
xmlString: この関数がDOMに解析する文字列。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数の詳細は、「文字列からXML要素への変換方法」を参照してください。
この関数は、XQueryトランスフォーメーションの結果を返します。
シグネチャ:
ora:processXQuery('template','context'?)
引数:
template: XSLTテンプレート。
input: 変換する入力データ。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、XQuery 1.0トランスフォーメーションの結果を返します。
シグネチャ: ora:processXQuery10(<path to xquery> [, <xquery external variable name>, <value>]*)
この関数は、XQuery 2004トランスフォーメーションの結果を返します。
シグネチャ: ora:processXQuery2004(template,context?)
この関数は、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パラメータに変換されるプロパティ。プロパティは次のように定義されます。
params.xsdファイルを作成し、名前/値ペアを定義します(どのプロパティも名前と値のペアです)。次に例を示します。
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/service/bpel/common"
targetNamespace="http://schemas.oracle.com/service/bpel/common"
elementFormDefault="qualified">
<!-- Root Element for Parameters -->
<xsd:element name="parameters">
<xsd:complexType>
<xsd:sequence>
<!-- Each Parameter is represented by an "item" node that contains
one unique name and a string value
-->
<xsd:element name="item" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
SetParams.xslファイルを作成してプロパティを移入します。XSLT内では、パラメータにはその名前を通じてアクセスできます。この例では、パラメータ名がuserNameとlocationで、それぞれの値がjsmithとCAです。
<?xml version="1.0" encoding="UTF-8" ?>
<?oracle-xsl-mapper
<mapSources>
<source type="XSD">
<schema location="TestXSLParams.xsd"/>
<rootElement name="TestXSLParamsProcessRequest"
namespace="http://xmlns.oracle.com/TestXSLParams"/>
</source>
</mapSources>
<mapTargets>
<target type="XSD">
<schema location="params.xsd"/>
<rootElement name="ArrayOfNameAnyTypePairType"
namespace="http://schemas.oracle.com/service/bpel/common"/>
</target>
</mapTargets>
<!-- GENERATED BY ORACLE XSL MAPPER 10.1.3.1.0(build 061009.0802) AT [WED
APR 18 14:35:04 PDT 2007]. -->
?>
<xsl:stylesheet version="1.0"
xmlns:ns2="http://schemas.oracle.com/service/bpel/common"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services
.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.
headers.ESBHeaderFunctions"
xmlns:ns0="http://www.w3.org/2001/XMLSchema"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services
.functions.ExtFunc"
xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
xmlns:ns1="http://xmlns.oracle.com/TestXSLParams"
exclude-result-prefixes="xsl ns0 ns1 ns2 xp20 bpws ora ehdr
orcl ids hwf">
<xsl:template match="/">
<ns2:parameters>
<ns2:item>
<ns2:name>
<xsl:value-of select="'userName'"/>
</ns2:name>
<ns2:value>
<xsl:value-of select="'jsmith'"/>
</ns2:value>
</ns2:item>
<ns2:item>
<ns2:name>
<xsl:value-of select="'location'"/>
</ns2:name>
<ns2:value>
<xsl:value-of select="'CA'"/>
</ns2:value>
</ns2:item>
</ns2:parameters>
</xsl:template>
</xsl:stylesheet>
.bpelファイルからSetParams.xslを呼び出します。次に例を示します。
assignアクティビティinitializeXSLParameters内で、XSLT内からアクセス対象の情報を持つ特定のBPEL変数から、パラメータ変数を初期化します。
assignアクティビティexecuteXSLT内で、パラメータを関数processXSLTのproperties (3番目)引数として、XSLTを呼び出します。
次に例を示します。
<process name="TestXSLParams"
. . .
. . .
<sequence name="main">
<receive name="receiveInput" partnerLink="client"
portType="client:TestXSLParams" operation="initiate"
variable="inputVariable" createInstance="yes"/>
<assign name="initializeXSLParameters">
<bpelx:annotation>
<bpelx:pattern>transformation</bpelx:pattern>
</bpelx:annotation>
<copy>
<from expression="ora:processXSLT ('SetParams.xsl',
bpws:getVariableData('inputVariable','payload'))"/>
<to variable="propertiesXMLVar"/>
</copy>
</assign>
<assign name="executeXSLT">
<bpelx:annotation>
<bpelx:pattern>transformation</bpelx:pattern>
</bpelx:annotation>
<copy>
<from expression="ora:processXSLT('TestXSLParams.xsl',
bpws:getVariableData('inputVariable','payload'),
bpws:getVariableData('propertiesXMLVar'))"/>
<to variable="outputVariable" part="payload"/>
</copy>
</assign>
<invoke name="callbackClient" partnerLink="client"
portType="client:TestXSLParamsCallback"
operation="onResult"
inputVariable="outputVariable"/>
</sequence>
</process>
BPELプロセスでは、これらのプロパティを使用してXSLT関数にアクセスします。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora (12cの場合)
ora:processXSLT関数を使用すると、大きいXSLT/XQuery操作の結果をシステム・ディレクトリの一時ファイルに書き込むことができます。その後、ドキュメントは必要なときに一時ファイルからロードされます。これにより、ドキュメント全体をバイナリXMLとしてメモリーにキャッシュする必要がなくなります。
この関数は、ファイルからデータを読み取ります。
シグネチャ:
ora:readBinaryFromFile(fileName)
引数:
fileName: データの読取り元のファイル名。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
詳細は、「アタッチメント・ストリームの送信」を参照してください。
この関数は、MIMEヘッダーを含むバイナリ・ファイルの内容を返します。
シグネチャ:
ora:readBinaryFromFileWithMimeHeaders(fileName, contentId, contentType, contentDisposition, contentTransferEncoding, contentDescription, contentLanguage)
この関数は、ファイルのコンテンツを返します。
シグネチャ:
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
この関数は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>
この関数は、入力がtrue、false、1、または0の文字列である場合に、ブール値を返します。
シグネチャ:
ora:tryToCastToBoolean(string)
引数:
string: ブール値への変換を試みる文字列値。
この関数は、変数(または変数のパート)のバイナリ・バイトを指定のファイル名のファイルに書き込みます。
シグネチャ:
ora:writeBinaryToFile(varName[, partName[, query]])
引数:
varName: 変数の名前。
partName: messageType変数のパートの名前。
query: ルート要素の子に対する問合せ文字列。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この関数は、BPELスーツケース・ディスクリプタのTaskServiceAliasesセクションで指定されているグループ・エイリアスのユーザーIDのリストを返します。
シグネチャ:
ora:getGroupIdsFromGroupAlias(String aliasName)
引数:
aliasName: ユーザーまたはグループのリストのエイリアス。
プロパティID:
namespace-uri: http://schemas.oracle.com/xpath/extension
namespace-prefix: ora
この項では、変換関数について説明します。
この関数は、入力をブールに変換します。数値は、正または負のゼロでもNaNでもない場合にのみtrueになります。ノード・セットは、空でない場合のみtrueになります。文字列は、長さがゼロでない場合のみtrueになります。
シグネチャ:
boolean(input as any)
引数
input as any: 任意の値。
次に例を示します。
boolean('false')はtrueを返します。
プロパティID:
namespace-uri:
この関数は、入力を数値に変換します。オプションの空白、オプションの負符号、数値、および空白をこの順序どおり含む文字列が、文字列によって表される数学的な値に最も近い(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を返します。
この項では、ドメイン値マップ(DVM)関数について説明します。
この関数は、ソース列に指定のソース値を含むドメイン値マップのターゲット列の値をルックアップして文字列を戻します。
シグネチャ:
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」を参照してください。
この関数は、ソース列の値がソース値と等しいドメイン値マップの複数のターゲット列の値を格納する、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」を参照してください。
この項では、データベース関数について説明します。
この関数は、パラメータから生成されたSQL問合せに基づいて文字列を返します。
この文字列は、次を実行することによって取得されます。
SELECT outputColumn FROM table WHERE inputColumn = key
それを、JDBC接続文字列(jdbc:oracle:thin:username/password@host:port:sid)、またはデータソースJNDI識別子のいずれかのデータソースに対して実行します。JDBC接続文字列を使用する場合は、Oracle Thinドライバのみがサポートされます。
例:
oraext:lookup-table('employee','id','1234','last_name','jdbc:oracle:thin:xyz/xyz@localhost:1521:ORCL')
シグネチャ:
oraext:lookup-table(table, inputColumn, key, outputColumn, data source)
引数:
table: - データの抽出元の表。
inputColumn: 表内の列。
key: 入力列のキーの値。
outputColumn: データを出力する列。
data source: データのソース。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、指定されたデータベースに対してSQL問合せを実行して、ノードセットを返します。
シグネチャ:
oraext:query-database(sqlquery as string, rowset as boolean, row as boolean, data source as string)
引数:
sqlquery: 実行するSQL問合せ。
rowset: 行を要素で囲むかどうかを指定します。
row: 各行を要素で囲むかどうかを指定します。
data source: データベースのJDBC接続文字列(jdbc:oracle:thin:username/password@host:port:sid)またはJNDI名。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、Oracleの順序の次の値を返します。
次の値は、次の問合せを実行することによって取得されます。
SELECT sequence.nextval FROM dual
それを、JDBC接続文字列(jdbc:oracle:thin:username/password@host:port:sid)、またはデータソースJNDI識別子のいずれかのデータソースに対して実行します。JDBC接続文字列を使用する場合は、Oracle Thinドライバのみがサポートされます。
例:
oraext:sequence-next-val('employee_id_sequence','jdbc:oracle:thin:xyz/xyz@localhost:1521:ORCL')
シグネチャ:
oraext:sequence-next-val(sequence as string, data source as string)
引数:
sequence: データベース内の順序番号。
data source: JDBC接続文字列またはデータソースJNDI識別子。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この項では、日付関数について説明します。
この関数は、指定された期間にdateTimeを加算した新しい日時の値を返します。
期間の値が負の場合、返される値はdateTimeより前の日時になります。
シグネチャ:
xpath20:add-dayTimeDuration-from-dateTime(dateTime as string, duration as string)
引数:
dateTime as string: 期間を加算するdateTime(文字列書式)。
duration as string: dateTimeに加算する期間、または期間が負の場合は減算する期間(文字列書式)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、現在の日付をISO書式YYYY-MM-DDで返します。
シグネチャ:
xpath20:current-date(object)
引数:
Object: 標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、現在の日時の値をCCYY-MM-DDThh:mm:ss.sTZDのISO書式(sはミリ秒単位の時間を示す)で返します。
たとえば、時間が、タイムゾーンzの2004年5月12日の午後(PM)の6時17分15秒125ミリ秒である場合、current-dateTimeは次の値を返します。
2004-05-12T18:17:15.125Z
setDomainEnvファイルでcom.oracle.soa.xpath.datetimeWithoutMillisがtrueに設定されている場合、この関数によって次の書式で現在の日時の値が返されます(ssは秒単位の時間を示します)。
CCYY-MM-DDThh:mm:ss.TZD
シグネチャ:
xpath20:current-dateTime(object)
引数:
object: 標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
次のファイルを開きます。
UNIXオペレーティング・システムでは、$MIDDLEWARE_HOME/user_projects/domains/domain_name/bin/setDomainEnv.shを開きます。
Windowsオペレーティング・システムでは、MIDDLEWARE_HOME\user_projects\domains\domain_name\bin\setDomainEnv.batを開きます。
JAVA_OPTIONSセクションにcom.oracle.soa.xpath.datetimeWithoutMillisを追加して、値をtrueに設定します。たとえば、JAVA_OPTIONSは、現在、次のように設定されています。
JAVA_OPTIONS="${JAVA_OPTIONS} ${JAVA_PROPERTIES}
-Dwlw.iterativeDev=${iterativeDevFlag} -Dwlw.testConsole=${testConsoleFlag}
-Dwlw.logErrorsToConsole=${logErrorsToConsoleFlag} "
変更後、JAVA_OPTIONSは次のようになります。
JAVA_OPTIONS="${JAVA_OPTIONS} ${JAVA_PROPERTIES}
-Dwlw.iterativeDev=${iterativeDevFlag} -Dwlw.testConsole=${testConsoleFlag}
-Dwlw.logErrorsToConsole=${logErrorsToConsoleFlag}
-Dcom.oracle.soa.xpath.datetimeWithoutMillis=true"
サーバーを再起動します。
この関数は、現在の時間をISO書式で返します。書式はhh:mm:ssTZDです。
シグネチャ:
xpath20:current-time(object)
引数:
object: 標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから日を返します。デフォルトの日は1です。
シグネチャ:
xpath20:day-from-dateTime(object)
引数:
object: 文字列としての標準書式の時間。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、指定された書式を使用して書式設定したdateTimeの文字列を返します。日時書式文字列の例は、W3C XSL Transformationsドキュメントを参照してください。たとえば、[Y0001]-[M01]-[D01]です。
シグネチャ:
xpath20:format-dateTime(dateTime as string, format as string)
引数:
dateTime: 書式設定の対象となるdateTime。
format: 出力の書式。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから時間を返します。デフォルトの時間は0です。
シグネチャ:
xpath20:hours-from-dateTime(dateTime as string)
引数:
dateTime: 日時の文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから分を返します。デフォルトの分は0です。
シグネチャ:
xpath20:minutes-from-dateTime(dateTime as string)
引数:
dateTime as string: 日時。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから月を返します。デフォルトの月は1 (1月)です。
シグネチャ:
xpath20:month-from-dateTime(dateTime as string)
引数:
dateTime as string: 書式設定の対象となるdateTime。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから秒を返します。デフォルトの秒は0です。
シグネチャ:
xpath20:seconds-from-dateTime(dateTime as string)
引数:
dateTime as a string: 文字列としてのdateTime。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、dateTimeから期間を減算して、新規のdateTimeを返します。
期間の値が負の場合、返されるdateTime値は指定したinput-dateTimeより後の日時になります。
シグネチャ:
xpath20:subtract-dayTimeDuration-from-dateTime(dateTime as string, duration as string)
引数:
dateTime as string: 期間を減算するdateTime(文字列書式)。
duration as string: dateTimeから減算する期間、または期間が負の場合は加算する期間(文字列書式)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xp20
この関数は、dateTimeからタイムゾーンを返します。デフォルトのタイムゾーンはGMT+00:00です。
シグネチャ:
xpath20:timezone-from-dateTime(dateTime as string)
引数:
dateTime as string: タイムゾーンを返す対象となるdateTime。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この項では、アイデンティティ・サービス関数について説明します。
この関数は、デフォルトのレルム名を返します。
シグネチャ:
ids:getDefaultRealmName()
引数:
この関数には引数がありません。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、指定したグループのプロパティ値を返します。グループまたは属性が存在しない場合は、nullを返します。
シグネチャ:
ids:getGroupProperty(groupName, attributeName, realmName)
引数:
groupName: 属性を取得するグループを含む文字列または要素。
attributeName: グループ属性の名前を含む文字列または要素。
アイデンティティ・サービスでLDAP providerTypeまたはJAZN LDAPベースのプロバイダが使用される場合は、これらの属性で検索できるようにLDAPサーバーを構成します。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルムが使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、指定したユーザーのマネージャを取得します。ユーザーが存在しない、またはこのユーザーにマネージャが存在しない場合は、nullを返します。
シグネチャ:
ids:getManager(userName, realmName)
引数:
userName: ユーザー名。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルムが使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、upToUserName、upToTitleおよびupToLevelに基づいて、指定されたユーザーに対する管理チェーンを取得します。ユーザーが存在しない、またはこのユーザーにマネージャが存在しない場合は、nullを返します。正規表現はupToTitleパラメータおよびupToUserパラメータで使用できます。
シグネチャ:
ids:getManagerFromManagementChain()
この関数は、ユーザーの報告先を取得します。ユーザーが存在しない場合は、nullを返します。この関数はノードのリストを返します。リストの各ノードはuserです。
シグネチャ:
ids:getReportees(userName, upToLevel, realmName)
引数:
userName: ユーザー名。
upToLevel: 結果に含める間接報告先のレベル数を定義します。値が1の場合は、直接報告先のみが返されます。値が-1の場合は、全レベルの報告先が返されます。値xsd:numberを含む要素、または文字列(例: '1')のいずれかを指定できます。
realmName: レルム名。これはオプションであり、指定しない場合はデフォルトのレルムが使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、サポートされるレルム名を返します。
シグネチャ:
ids:getSupportedRealms()
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、ユーザーのプロパティを返します。ユーザーが存在しない場合は、nullを返します。適切な属性が存在しない場合は、カスタム属性を使用します。
シグネチャ:
ids:getUserProperty(userName, attributeName, realmName)
引数:
userName: 属性を取得するユーザーを含む文字列または要素。
attributeName: user属性の名前。
アイデンティティ・サービスでLDAP providerTypeまたはJAZN LDAPベースのプロバイダが使用される場合は、これらの属性で検索できるようにLDAPサーバーを構成します。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
詳細は、「電子メール・アドレスと電話番号を動的に選択する方法」を参照してください。
この関数は、ユーザー・ロールを取得します。roleTypeに応じて、アプリケーション・ロールまたはグループのいずれかのオブジェクト・リストを返します。ユーザーまたはロールが存在しない場合は、nullを返します。
シグネチャ:
ids:getUserRoles(userName, roleType, direct)
引数:
userName: ロールを取得するユーザーを含む文字列または要素。
roleType: ロール・タイプ。3つの値ApplicationRole、EnterpriseRoleまたはAnyRoleのいずれかです。
direct: 直接ロールをフェッチするか間接ロールをフェッチするかを示す文字列または要素。これはオプションです。指定しない場合は、直接ロールのみがフェッチされます。xsd:booleanまたは文字列true/falseを指定します。
プロパティID:
namespace-uri:http://xmlns.oracle.com/bpel/services/IdentityService
namespace-prefix: ids
この関数は、このアプリケーション・ロールを付与されているユーザーのリストを返します。入力として指定されたアプリケーション・ロール名またはアプリケーション名がNULLの場合は、NULLを戻します。
シグネチャ: ids:getUsersInAppRole(appRoleName, appName, direct, realmName)
引数:
appRoleName: 取得するメンバーが属しているアプリケーション・ロールを含む文字列または要素。
appName: アプリケーション・ロールを作成するアプリケーション名。
direct: 直接の権限受領者のみを取得するか、すべてのユーザーを取得するかを示す文字列または要素。
realmName: レルム名を含む文字列または要素。これはオプションであり、指定しなければデフォルト・レルムが使用されます。
この関数は、グループ内のユーザーを取得します。グループが存在しない場合は、nullを返します。この関数はノードのリストを返します。リストの各ノードはuserです。
シグネチャ:
ids:getUsersInGroup(groupName, direct, realmName)
引数:
groupName: グループ名。
direct: ブール・フラグ。trueの場合は、直接ユーザー権限受領者が返され、それ以外の場合はすべてのユーザー権限受領者が返されます。値xsd:booleanを含む要素、または文字列'true'/'false'のいずれかを指定できます。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、ユーザーに特定のアプリケーション・ロールがあるかどうかを検証します。
シグネチャ:
ids:isUserInAppRole(userName, appRoleName, appName, realmName)
引数:
userName: ロールへの関与を検証する必要があるユーザーを含む文字列または要素。
appRoleName: アプリケーション・ロール名。
appName: アプリケーション名(たとえば、OracleBPMProcessRolesApp、OracleBPMComposerRolesAppなど)。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルムが使用されます。この関数はブール値trueまたはfalseを返します。
この関数は、ユーザーに特定のロールがあるかどうかを検証します。
シグネチャ:
ids:isUserInRole(userID, roleName, realmName)
引数:
userID: ロールの付与を検証するユーザーを含む文字列または要素。
roleName: ロール名。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この関数は、グループを取得します。グループが存在しない場合は、nullを返します。
シグネチャ:
ids:lookupGroup(groupName, realmName)
引数:
groupName: グループ名。
realmName: レルム名。これはオプションです。指定しない場合は、デフォルトのレルム名が使用されます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/services/IdentityService/xpath
namespace-prefix: ids
この項では、論理関数について説明します。
この関数は、両方のパラメータがtrueと評価される場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
a-boolean and another-boolean
引数:
a-boolean: 評価する一方のブール値。
another-boolean: 評価する他方のブール値。
この関数は、2つのパラメータが等しい場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
parameter1 = parameter2
引数:
parameter1: 評価する一方のパラメータ。
parameter2: 評価する他方のパラメータ。
この関数は、第1パラメータが第2パラメータより大きい場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
parameter1 > parameter2
引数:
parameter1: 評価する第1パラメータ。
parameter2: 評価する第2パラメータ。
この関数は、第1パラメータが第2パラメータより大きいか等しい場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
parameter1 >= parameter2
この関数は、第1パラメータが第2パラメータより小さい場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
parameter1 < parameter2
引数:
parameter1: 評価する第1パラメータ。
parameter2: 評価する第2パラメータ。
この関数は、第1パラメータが第2パラメータより小さいか等しい場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
parameter1 <= parameter2
引数:
parameter1: 評価する第1パラメータ。
parameter2: 評価する第2パラメータ。
この関数は、2つのパラメータが等しくない場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
parameter1!= parameter2
引数:
parameter1: 評価する第1パラメータ。
parameter2: 評価する第2パラメータ。
この関数は、どちらかのパラメータがtrueに評価される場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
a-boolean or another-boolean
引数:
a-boolean: 評価する第1パラメータ。
another-boolean: 評価する第2パラメータ。
この項では、数学関数について説明します。
この関数は、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
この関数は、入力ノード・セットに含まれるノードの数を返します。
例:
count(inputNodeSet as node-set)
引数:
inputNodeSet: 入力ノード・セット。
この関数は、入力数値のリストであるノードセットinputNumberから最大値を返します。ノードセットinputNumberには、テキスト・ノードの集合、またはテキスト・ノードが含まれる要素の集合を指定できます。要素の場合、最初のテキスト・ノードの値が対象になります。
シグネチャ:
oraext:max-value-among-nodeset(inputNumber as node-set)
引数:
inputNumber: 入力数値のノードセット。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、入力数値のリストであるノードセットinputNumbersから最小値を返します。ノードセットには、テキスト・ノードの集合、またはテキスト・ノードが含まれる要素の集合を指定できます。要素の場合、最初のテキスト・ノードの値が対象になります。
シグネチャ:
oraext:min-value-among-nodeset(inputNumbers as node-set)
引数:
inputNumber: 入力数値のノードセット。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、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
この関数は、すべてのノードの合計を数値として返します。
シグネチャ:
sum(numbers as node-set-set)
引数:
numbers as node-set-set: ノード・セットの合計数。
プロパティID:
namespace-uri:
namespace-prefix:
この項では、ノード・セット関数について説明します。
この関数は、ノード名のローカル部分を返します。
シグネチャ:
local-name([inputNodeSet as node-set])
引数:
inputNodeSet as node-set: ノード・セットの名前。
この関数は、ノードのQNameを返します。
シグネチャ:
name([inputNodeSet as node-set])
引数:
inputNodeSet as node-set: ノード・セットの名前。
この関数は、ノードのURIネームスペースを返します。
シグネチャ:
namespace-uri([inputNodeSet as node])
引数:
inputNodeSet as node-set: ノード・セットの名前。
この項では、文字列関数について説明します。
この関数は、inputStringとcompareStringの各文字のUnicode値を比較して、これらの文字列間の辞書的な差異を返します。
inputStringがcompareStringより辞書的に前にある場合は、-1を返します。
inputStringとcompareStringが等しい場合は、0を返します。
inputStringがcompareStringより辞書的に後にある場合は、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
この関数は、大/小文字を無視してinputStringとcompareStringの各文字のUnicode値を比較して、これらの文字列間の辞書的な差異を返します。表B-2に詳細を示します。
表B-2 戻り値
| この関数からの戻り値 | 条件 |
|---|---|
|
|
|
|
|
|
例:
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
この関数は、文字列パラメータの連結を返します。
シグネチャ:
concat(string1 as string, string2 as string, ...)
引数:
string1: 連結する文字列値。
string2: 連結する文字列値。
この関数は、inputStringがsearchStringを含む場合にはtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
contains(inputString as string,searchString as string)
次に例を示します。
contains('Michael Kay','Michael')は、trueを返します。
この関数は、nodeSetから作成され、デリミタで区切られた文字列を返します。
シグネチャ:
oraext:create-delimited-string(nodeSet as node-set, delimiter as string)
引数:
nodeSet: デリミタ付き文字列に変換するノードセット。
delimiter: 出力文字列の項目を区切る文字(たとえば、カンマやセミコロン)。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputStringがsearchStringで終わる場合にtrueを返します。
例:
xpath20:ends-with('XSL Map','Map')は、trueを返します。
シグネチャ:
xpath20:ends-with(inputString as string, searchString as string)
引数:
inputString: 検索されるデータの文字列
searchString: 検索する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、渡された引数で書式設定されたメッセージを返します。引数は、少なくとも1つが必須で最大10個までサポートされます。
例:
oraext:format-string('{0} + {1} = {2}','2','2','4')は、'2 + 2 = 4'を返します
シグネチャ:
oraext:format-string(string,string,string...)
引数:
string: 書式設定された出力に使用する文字列の1つ。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、入力要素のXML表現を返します。
シグネチャ:
oraext:get-content-as-string(element as node-set)
引数:
element as node-set: XML表現として返される入力要素。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、キーに対しロケール固有の文字列を返します。この関数は言語、国、変数およびリソースのバンドルを使用して正しいリソース・バンドルを識別します。すべてのパラメータは文字列書式である必要があります。パラメータ値を、get-localized-stringに送信する前に文字列に変換するには、string()関数を使用します。
リソース・バンドルは、resourceLocationに対してresourceBaseURLを解決することによって取得されます。URLは、/で終わる場合にかぎりディレクトリとみなされます。
使用方法: oraext:get-localized-string(resourceBaseURL as string, resourceLocation as string, resource bundle as string, language as string, country as string, variant as string, key as string)
例: oraext:get-localized-string('file:/c:/','','MyResourceBundle','en','US','','MSG_KEY')は、C:\ディレクトリにあるリソース・バンドル'MyResourceBundle'からロケール固有の文字列を返します。
シグネチャ:
oraext:get-localized-string(resourceURL,resourceLocation,resourceBundleName,language,country,variant,messageKey)
引数:
resourceURL: リソースのURL。
resourceLocation: リソースのサブディレクトリの場所。
resourceBundleName: リソース・バンドルが含まれるZIPファイルの名前。
language: ローカライズされる出力の言語。
country: ローカライズされる出力の国。
variant: ローカライズされる出力の言語変数。
messageKey: リソース・バンドルのメッセージ・キー。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputString内で最初に出現するsearchStringのゼロから始まる索引を返します。
searchStringが見つからない場合は-1を返します。
例:
oraext:index-within-string('ABCABC, 'B')は、1を返します。
シグネチャ:
oraext:index-within-string(inputString as string, searchString as string)
引数:
inputString: 検索されるデータの文字列
searchString: inputString内で検索する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputString内で最後に出現するsearchStringのゼロから始まる索引を返します。
searchStringが見つからない場合は-1を返します。
例:
oraext:last-index-within-string('ABCABC', 'B')は、4を返します。
シグネチャ:
oraext:last-index-within-string(inputString as string, searchString as string)
引数:
inputString: 検索されるデータの文字列
searchString: inputString内で検索する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputStringから先頭の空白文字をすべて削除した値を返します。
例:
oraext:left-trim(' account ')は、'account 'を返します。
シグネチャ:
oraext:left-trim(inputString)
引数:
inputString: 先頭の空白を削除する文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc
namespace-prefix: oraext
この関数は、inputStringのすべての文字を対応する小文字に変換した値を返します。
例:
xpath20:lower-case('ABc!D')は、'abc!d'を返します。
シグネチャ:
xpath20:lower-case(inputString)
引数:
inputString: 小文字にするデータの文字列。
プロパティID:
namespace-uri: http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20
namespace-prefix: xpath20
この関数は、intputStringが正規表現パターンregexPatternに一致する場合にtrueを返します。
例:
xpath20:matches('abracadabra', '^a.*a$')は、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
この関数は、先頭および末尾の空白を除去し、連続した空白文字を単一のスペースに置き換えることによって、スペースを正規化した入力文字列を返します。
シグネチャ:
normalize-space([inputString as string])
引数:
inputString: 入力文字列。
次に例を示します。
normalize-space(' book title ')は、'book title'を返します。
この関数は、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
この関数は、入力文字列が検索文字列から始まる場合にtrueを返します。それ以外の場合、falseを戻します。
シグネチャ:
starts-with(inputString as string,searchString as string)
引数:
inputString: 入力文字列。
searchString: 検索文字列。
次に例を示します。
starts-with('data type','data')は、trueを返します。
この関数は、入力文字列の文字数を返します。
シグネチャ:
string-length([inputString as string])
引数:
inputString: 入力文字列。
次に例を示します。
string-length('xml')は、3を返します。
プロパティID:
namespace-uri:
namespace-prefix:
この関数は、開始位置に指定された位置から始まり、lengthに指定された長さを持つ、入力文字列の部分文字列を返します。
シグネチャ:
substring(inputString as string,startingLoc as number,[length as number])
引数:
inputString: 入力文字列。
startingLoc: 開始位置。
length as number: 数値として指定する長さ
次に例を示します。
substring('12345',2)は、'2345'を返します。
この関数は、入力文字列のうち検索文字列が最初に一致した箇所より後の部分文字列を返します。また、入力文字列に検索文字列が含まれない場合は空の文字列を返します。
シグネチャ:
substring-after(inputString as string,searchString as string)
引数:
inputString: 入力文字列。
searchString: 検索する文字列。
次に例を示します。
substring-after('1999/04/01','/')は、'04/01を返します。
この関数は、入力文字列のうち検索文字列が最初に一致した箇所より前の部分文字列を返します。また、入力文字列に検索文字列が含まれない場合は空の文字列を返します。
シグネチャ:
substring-before(inputString as string,searchString as string)
引数:
inputString: 入力文字列。
searchString: 検索する文字列。
次に例を示します。
substring-before('1999/04/01','/')は、'1999'を返します。
シグネチャ:
translate(inputString as string,fromString as string,toString as string)
引数:
inputString: 入力文字列。
fromString: 変換元文字列。
toString: 変換先文字列。
次に例を示します。
translate('--aaa--','abc-','ABC')は、'AAA'を返します。
この関数は、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
この項では、ワークフロー・サービス関数について説明します。
この関数は、現在のタスク割当て先を消去します。
シグネチャ:
hwf:clearTaskAssignees(taskID)
引数:
task: タスクのタスクID。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、Microsoft Word ML文書をBase 64でエンコードされた文字列として作成します。
シグネチャ:
hwf:createWordMLDocument(node, xsltURI)
引数:
node: このノードは、トランスフォーメーションへの入力であるXMLノードです。
xsltURI: ノード(第1引数)からMicrosoft Word MLへの変換に使用されるXSLT。
プロパティID:
namespace-uri:http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、現行タスクのコンテキスト内で、指定されたパターンを使用して、入力から指定されたタイプの割当て先を選択します。
この関数は、ヒューマン・タスクのコンテキストでのみ使用できます。
シグネチャ:
hwf:dynamicTaskAssign(patternName, participants, inputParticipantType, targetAssigneeType, isGlobal, invocationContext, parameter1, parameter2, ..., parameterN)
引数:
patternName: 使用するパターンの名前(必須)。パターンROUND_ROBIN、LEAST_BUSY、およびMOST_PRODUCTIVEは、自動的に提供されます。カスタム・パターンを使用してSOAサーバーを構成することが可能です。
participants: 割当て先として選択される参加者(必須)。これは、参加者名や参加者名のカンマ区切りリストを含む文字列または要素、あるいは参加者名や参加者名のカンマ区切りリストを含む要素のセットです。参加者のタイプはすべて同じである必要があります。
inputParticipantType: 入力する参加者のタイプ(user、groupまたはapplication_role) (必須)。
targetAssigneeType: 選択する割当て先のタイプ(user、groupまたは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?)
この関数は、通知プロパティを取得します。通知ごとに対応する値に評価されます。この関数は、通知コンテンツのXPath式でのみ使用してください。他の場所で使用すると、nullが返されます。
シグネチャ:
hwf:getNotificationProperty(propertyName)
引数:
propertyName: 通知プロパティの名前。次のいずれかの値です。
recipient: 通知の受信者。
recipientDisplay: 受信者の表示名。
taskAssignees: タスクの割当て先。
taskAssigneesDisplay: タスク割当て先の表示名。
locale: 受信者のロケール。
taskId: 通知対象となるタスクのタスクID。
taskNumber: 通知対象となるタスクのタスク番号。
appLink: Oracle BPM Worklistのタスク詳細ページへのHTMLリンク。
プロパティID:
namespace-uri:http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、タスクが承認された回数を計算します。
シグネチャ:
hwf:getNumberOfTaskApprovals(taskId)
引数:
taskId: タスクのID
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、前のタスク承認者を取得します。
シグネチャ:
hwf:getPreviousTaskApprover(taskId)
引数:
taskId: タスクのID
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、指定された索引にあるタスクの添付ファイルを取得します。
シグネチャ:
hwf:getTaskAttachmentByIndex(taskId, attachmentIndex)
引数:
taskId: タスクのタスクID。
attachmentIndex: 添付ファイルの索引。索引は1から始まります。attachmentIndex引数には、値が索引番号の文字列として評価されるノードを指定できます(すべてのノード値は文字列です)。静的に指定する場合は、'1'として指定できます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、添付ファイル名でタスクの添付ファイルを取得します。
シグネチャ:
hwf:getTaskAttachmentByName(taskId, attachmentName)
引数:
taskId: タスクのタスクID。
attachmentName: 添付ファイルの名前。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、添付ファイル名でタスクの添付ファイルのコンテンツを取得します。
シグネチャ:
hwf:getTaskAttachmentContents(taskId, attachmentName)
引数:
taskId: タスクのタスクID。
attachmentName: 添付ファイルの名前。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、タスクの添付ファイル数を取得します。
シグネチャ:
hwf:getTaskAttachmentsCount(taskId)
引数:
taskId: タスクのタスクID。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この関数は、タスク定義に関連付けられているリソース・バンドルから国際化されたリソース値を返します。
シグネチャ:
hwf:getTaskResourceBundleString(taskId, key, locale?)
引数:
taskId: タスクのタスクID。
key: リソースへのキー。
locale: ロケール(オプション)。この値は、デフォルトでシステム・ロケールに設定されます。この場合、ネームスペースhttp://xmlns.oracle.com/bpel/services/taskServiceのresourceString XML要素が返されます。これにはリソース・バンドルからの文字列が含まれます。
プロパティID:
namespace-uri: http://xmlns.oracle.com/bpel/workflow/xpath
namespace-prefix: hwf
この項では、相互参照(XREF)関数について説明します。
この関数は、参照列の値に対応する単一または複数の値を相互参照列で参照します。
シグネチャ:
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
この関数は、参照列の値に対応する値を相互参照列で参照します。
シグネチャ:
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関数」を参照してください。
この関数は、参照列の値に対応する複数の値を相互参照列で参照します。
シグネチャ:
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関数」を参照してください。
この関数は、相互参照表の値を削除します。関数に渡された列値を含む行は、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
詳細は、「相互参照表の値の削除方法」を参照してください。
この関数は、参照列に参照値がある相互参照表(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")
この関数は、参照列に参照値がある相互参照表(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関数」を参照してください。
この関数は、参照列に参照値がある相互参照表(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関数」を参照してください。
「式ビルダー」ダイアログとXPathビルディング・アシスタントを使用して、XPath式を作成できます。「式ビルダー」ダイアログで、BPELプロセスのXPath式、ヒューマン・ワークフロー、またはOracle Mediatorサービス・コンポーネントをビジュアルに設計できます。
次のダイアログなど、いくつかのダイアログでは、XPathビルディング・アシスタントを使用してXPath式を指定できます。
「式ビルダー」ダイアログの「式」フィールド
BPEL 2.0における「変数の作成」ダイアログの「初期化」タブの「式」フィールド
XSLTマップ・エディタの「XPath式の編集」ダイアログおよび「関数の編集」ダイアログ
長い式および複雑な式を手動で指定できますが、非効率的で間違いやすいプロセスになる可能性があります。XPathビルディング・アシスタントには、このプロセスを簡素化する一連の機能が用意されています。
次の項目に関する自動完了機能
要素および属性
関数
BPEL変数およびパート
関数パラメータのツールのヒント
XPathの構文検証およびセマンティク検証
この項では、XPathビルディング・アシスタントを使用して、「式ビルダー」ダイアログの「式」フィールドで式を作成する方法の例を示します。
XPathビルディング・アシスタントを使用する手順は、次のとおりです。
注意:
XPathビルディング・アシスタントのポップアップで選択対象をダブルクリックするかわりに、[Enter]キーを使用して選択することもできます。式が完成しても情報の入力を求められる場合には、[Esc]を押してください。リストが閉じます。
この項では、XPathビルディング・アシスタントを使用して、XSLTマッパーの「XPath式の編集」ダイアログで式を作成する方法の例を示します。
XSLTマッパーでXPathビルディング・アシスタントを使用する手順は、次のとおりです。
関数パラメータのツールのヒントでは、選択したXPath関数の適切な引数が表示されます。たとえば、関数concatを手動で入力し、次に(を入力すると、パラメータのツールのヒントが表示され、concat関数の適切な引数が表示されます。関数の現在の引数名が太字でハイライト表示されます。図B-11に詳細を示します。
1つの引数の指定が終わり、カンマを入力して次の引数に進むと、ツールのヒントが更新されて2番目の引数名が太字でハイライト表示されます。以降も同様に処理されます。関数が含まれている既存のXPathの編集中に、パラメータのツールのヒントを再起動するには、関数内にカーソルを置き、[Ctrl] キーと [Shift] キーを押しながら [Space] キーを押します。
Oracle JDeveloper内では、XPath式は、XPath 1.0仕様に準拠している場合は構文的に有効であるとみなされます。XPathビルディング・アシスタントでは、構文的に誤りのあるXPath関数(例: カッコやアポストロフィの欠落)については、誤りのある部分に赤い下線が付けられて警告されます。この部分にマウス・ポインタを移動します。これにより、エラー・メッセージがツールのヒントとして表示されます。エラーを修正すると、赤い下線付きのエラー表示は表示されなくなります。図B-12に詳細を示します。
構文的に有効なXPath関数がセマンティック上は無効な場合があります。この場合は、実行時に予期しないエラーが発生する可能性があります。たとえば、要素、変数、関数またはパートの名前の綴りが間違っていることがあります。XPathビルディング・アシスタントでは、セマンティク・エラーについては、誤りのある部分に青い下線が付けられて警告されます。この部分にマウス・ポインタを移動します。これにより、エラー・メッセージがツールのヒントとして表示されます。エラーを修正すると、青い下線付きのエラー表示は表示されなくなります。図B-13に詳細を示します。
Windowsオペレーティング・システム上では、XPath拡張関数でディレクトリ・パスを表すためにスラッシュを使用すると、次の2通りに解釈されます。
ダブル・スラッシュの場合。例: file://c:/Ftab.txt
シングル・スラッシュの場合。例: file:/c:/Ftab.txt
ダブル・スラッシュを指定してエラー・メッセージが表示される場合は、シングル・スラッシュを指定してみてください。
たとえば、次のようにダブル・スラッシュを使用しても機能しません。
oraext:get-content-from-file-function("file://c:/Ftab.txt","file:
//c:/Ftab_1.xsd","root")
しかし、次のようにシングル・スラッシュを使用すると適切に機能します。
oraext:get-content-from-file-function("file:/c:/Ftab.txt","file:
/c:/Ftab_1.xsd","root")
Oracle SOA Suiteで使用するためのユーザー定義(カスタム)XPath拡張関数を作成できます。これらの関数は、次のコンポーネントに対して作成できます。
Oracle BPEL Process Manager
Oracle Mediator
XSLTマッパー
ヒューマン・ワークフロー
これらのすべてのコンポーネントで共有
Oracle SOA SuiteのXPath拡張関数は、次の標準に従います。
単一のスキーマで、システム関数とユーザー定義関数の両方の構成構文を定義します。
XPath関数は、使用方法(Oracle BPEL Process Manager、Oracle Mediator、ヒューマン・ワークフロー、XSLTマッパーおよびすべてで共通使用)に基づいて分類されます。
システム関数は、ユーザー定義関数と区別されます。
リポジトリで、システム関数の構成ファイルとユーザー定義関数の構成ファイルの両方をホストします。
リポジトリで、ユーザー定義関数の実装JARファイルをホストし、自動的にJava仮想マシン(JVM)(クラス・ローダー)で使用できるようにします。
関数の作成に関する次の規則に従うことをお薦めします。
可能な場合は、すべてのコンポーネントで共有できる関数を作成します。すべてのコンポーネントで共有される関数は、ext-soa-xpath-functions-config.xmlという構成ファイルに作成できます。XSLTマッパーの関数は、Oracle BPEL Process Manager、Oracle Mediatorおよびヒューマン・ワークフローの関数と異なる方法で実装する必要があります。
これらの実装の相違点の詳細は、「ユーザー定義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>
この項では、Oracle SOA Suiteコンポーネントのユーザー定義XPath拡張関数を実装する方法を説明します。
XSLTマップ・エディタのユーザー定義XPath拡張関数の実装は、他のコンポーネントと次の点で異なります。
各XSLTマップ・エディタ関数に、public staticクラスの対応するpublic staticメソッドが必要です。関数名とメソッド名が一致する必要があります。
XSLTマップ・エディタ関数のネームスペースの形式はhttp://www.oracle.com/XSL/Transform/java/mypackage.MyFunctionClassである必要があり、mypackage.MyFunctionClassは、関数のpublic staticメソッドが含まれているpublic staticクラスの完全修飾クラス名です。
カスタムのJARファイルとクラスを追加するために、soa/modules/oracle.soa.ext_11.1.1ディレクトリが用意されています。詳細は、「カスタム・クラスとJARファイルの追加」を参照してください。