|
動的トランスフォーメーション コントロールを使用すると、ビジネス プロセスで実行時に動的にトランスフォーメーションを選択し、実装する機能を利用できます。具体的には、実行時に呼び出される XQuery、XSLT、または MFL ファイルを動的に選択できるようになります。たとえば、異なる支社からドキュメントを受信する統合ハブがある場合、動的トランスフォーメーション コントロールを使用すると、各支社の市外局番に基づいて異なるトランスフォーメーションを実行することができます。
コントロールの使用に関する一般的な情報については、「ビジネス プロセスでコントロールを使用する」を参照してください。
動的トランスフォーメーション コントロールを使用すると、ビジネス プロセスで実行時に呼び出すトランスフォーメーションを動的に選択する機能を利用できます。
このコントロールでは 8 つの基本メソッドが提供され、トランスフォーメーションで使用するファイルを選択するためのカスタム メソッドも作成できます。メソッド コンテキストまたはメッセージの内容に基づいた選択が可能です。トランスフォーメーションの動的な選択は、別のトランスフォーメーション ファイルを指す URI の設定により行われます。利用できるトランスフォーメーションの種類は以下のとおりです。
動的トランスフォーメーション コントロールでは、作成済みのトランスフォーメーション (トランスフォーメーション コントロールで作成したものなど) を使用します。トランスフォーメーションをテストしてから、動的トランスフォーメーション コントロールを作成するようにしてください。トランスフォーメーション コントロールとデータの変換の詳細については、「XQuery Mapper を使用したデータの変換」を参照してください。
ビジネス プロセスを開発する際は、動的トランスフォーメーション コントロールを呼び出す前に、実行されるトランスフォーメーションを決定するロジックを設計しておく必要があります。ロジックの設計には、分岐ノード、またはデータベース コントロールや XML メタデータ コントロールなどのコントロールを使用できます。
動的トランスフォーメーション コントロールでは以下のメソッドが提供されます。
public void perform() {
_map = new java.util.HashMap();
// 名前は変数名、値はドキュメントから渡された値
_map.add("CustomerDoc",customerDoc);
}
注意 : | 使用できる基本メソッドの詳細については、「動的トランスフォーメーション コントロールで基本メソッドを使用する」を参照してください。 |
ここでは、新しい動的トランスフォーメーション コントロールを作成する方法について説明します。
ビジネス プロセスのどこにコントロール インスタンスを追加するかについては、「コントロールのインスタンスをビジネス プロセス プロジェクトに追加する」を参照してください。
注意 : | 設計時には、動的トランスフォーメーション コントロールを作成する前に、トランスフォーメーション ファイルを作成またはインポートしてテストしておく必要があります。詳細については、『XQuery Mapper を使用したデータの変換』を参照してください。 |
注意 : | [データ パレット] が表示されていない場合は、メニュー バーから [ウィンドウ|ビューの表示|データ パレット] をクリックしてください。 |
[コントロールの挿入 : 動的なトランスフォーメーション] ダイアログ ボックスが表示されます (図 3-1 を参照)。
新しい動的トランスフォーメーション コントロールとそのインスタンスが作成され、このコントロールのインスタンスがデータ パレットの [コントロール] タブに表示されます。新しいファイルが、Oracle Workshop for WebLogic の [パッケージ・エクスプローラー] ペインに表示されます (いずれかのコントロール ファイルをソース ビューで表示したり編集したりするには、そのファイルをダブルクリックします)。
この節では、動的トランスフォーメーション コントロールの使用方法について説明します。内容は以下のとおりです。
動的トランスフォーメーション コントロールを作成したら、ビジネス プロセスにコントロール インスタンスを追加して、その基本メソッドをアプリケーションから呼び出すことができます。
ビジネス プロセスに動的トランスフォーメーション コントロールのインスタンスを追加する方法については、「ビジネス プロセスでのコントロール ノードの作成」を参照してください。
XmlObject[] performXQuery(String xQueryName,HashMap inputList)
XQuery を実行します。操作対象の引数は、メッセージ コンテキストに基づいて決まります。
XmlObject performXQueryOnXmlObject(String xQueryName,XmlObject inputDoc,String varName)
XmlObject による入出力を行う XQuery を実行します。
XmlObject performXSLT(String xslTemplate,XmlObject source,HashMap inputList)
XSLT を実行します。操作対象の引数は、メッセージ コンテキストに基づいて決まります。
XmlObject convertBytesToXML(byte[] data,String mflUrl)
XmlObject convertInputStreamToXML(InputStream iStream,String mflUrl)
XmlObject convertRawDataToXML(RawData rawData, String mflUrl)
byte[] convertXmlToBytes(XmlObject xmlObject,String mflURL)
XML データから非 XML データへの MFL トランスフォーメーションを実行します。
RawData convertXmlToRawData(XmlObject xmlObject,String mflURL)
XML データから非 XML データへの MFL トランスフォーメーションを実行します。
注意 : | 現在のアプリケーション以外のアプリケーションからアクセスするために xq または mfl リソースが必要になる場合は、現在のアプリケーションの Web プロジェクトの WebContent フォルダからリソースをコピーする必要があります。 |
これらのメソッドの動作は、@DynamicTransformationControl.Ddtf
、@DynamicTransformationControl.Xquery
および @DynamicTransformationControl.Xsl
アノテーションにより制御します。詳細については、DynamicTransformationControl インタフェースを参照してください。
ビジネス プロセスにおける動的トランスフォーメーション コントロールのサンプルについては、『ソリューション サンプル』を参照してください。