ユーザー定義XPath拡張関数の作成
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
という構成ファイルに作成する必要があります。
タイプおよび等価のJavaタイプは、パラメータと戻り値に対して使用できます:
XML構成ファイルのタイプ名 | Javaタイプ |
---|---|
|
|
|
|
|
|
|
|
|
|
次の例は、システム関数およびユーザー定義関数で使用される関数スキーマを示しています。
<?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>