この章では、BPELプロセス・サービス・コンポーネントで使用可能なカスタマイズ機能を使用して、SOAコンポジット・アプリケーションをカスタマイズする方法について説明します。
この章の内容は、次のとおりです。
この項では、SOAコンポジット・アプリケーションをカスタマイズするライフ・サイクルについて説明します。たとえば、次の各組織では、同じコンポジットを使用する必要があるとします。ただし、若干の変更が必要です。
コア・アプリケーション開発チーム
バーティカル・アプリケーション・チーム
顧客
コア・アプリケーション開発チームでは、カスタマイズ可能な基本コンポジットを作成し、バーティカル・アプリケーション・チームに提供します。バーティカル・アプリケーション・チームでは、提供されたコンポジットを特定の業界(通信業界など)向けにカスタマイズします。調整されたソリューションは、通信業の顧客に販売されます。顧客は、特定の地理的なビジネス・ニーズに対応するためにコンポジットをさらにカスタマイズします。原則的には、1つの基本コンポジットと、複数レイヤーのカスタマイズ・コンポジットがあります。コンポジット・ライフ・サイクルの後半で、コア・アプリケーション開発チームは基本コンポーネントの新バージョンを作成し、バーティカル・アプリケーション・チームと顧客のアップグレード・サイクルをトリガーします。
注意: 異なるレイヤー値の同じSOAコンポジット・アプリケーションをカスタマイズしないでください。カスタマイズ用にサポートされているのは、1つのレイヤー値のみです。別のレイヤー値をサポートする必要がある場合は、必ずベース・コンポジットを別のプロジェクトにインポートし、コンポジット名を、カスタマイズするレイヤー値に固有のものに変更します。このアプローチは、同じコンポジット名で異なるレイヤー値をデプロイしないようにするデプロイメントの場合にも便利です。 |
この項では、カスタマイズ可能な基本SOAコンポジット・アプリケーションの作成に必要な手順の概要を示します。
カスタマイズ可能なコンポジットを作成する手順は、次のとおりです。
Oracle JDeveloperを起動し、「デフォルトのロール」を選択します。
「ファイル」メニューから「新規」→「アプリケーション」→「SOAアプリケーション」の順に選択し、「OK」をクリックします。
SOAアプリケーションの作成ウィザードで、次の手順に従います。
SOAアプリケーションの作成ダイアログで、BPELプロセスを使用するコンポジットと「カスタマイズ可能」の両方のチェック・ボックスを選択します。
BPELプロセスを設計します。
scopeアクティビティを作成して、BPELプロセスをカスタマイズします。デフォルトではBPELプロセスはカスタマイズ可能でないため、このアクションが必要です。
注意: 「カスタマイズ開発者」ロールでOracle JDeveloperを使用している場合は、composite.xml ファイル、.bpel ファイル(Oracle BPEL Process Managerの場合)、.mplan ファイル(Oracle Mediatorの場合)および.componentType ファイルのみカスタマイズできます。 |
スコープを右クリックし、「カスタマイズ可能」を選択します。
アプリケーション・ナビゲータで、「アプリケーション・リソース」→「ディスクリプタ」→「ADF META_INF」の順に開きます。
adf-config.xmlファイルを開き、「MDS構成」タブを選択します。
「追加」アイコンをクリックし、図43-1に示すように、必要なカスタマイズ・クラスを追加します。
実際の環境では、カスタマイズ・クラスは、コア・アプリケーション・チームが提供します。独自のカスタマイズ・クラスを使用する場合は、カスタマイズ・クラスのJARファイルをプロジェクトに追加して、adf-config.xmlファイルでそのクラスを使用できるようにする必要があります。
SOAプロジェクトを右クリックし、「デプロイ」を選択します。これにより、JARファイル・パッケージが作成されます。このJARは、SOAアーカイブ(SAR)とも呼ばれます。
アプリケーションをソース・コード・コントロール・システムにチェックインします。これで、バーティカル・アプリケーション・チームに提供するファイルの準備が整いました。
カスタマイズ・クラスの記述方法については、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。
この項では、カスタマイズ・クラスを作成する方法について説明します。この例では、MyCustomizationLayer
という名前のカスタマイズ・レイヤーのクラスを作成します。
カスタマイズ・クラスを作成する手順は、次のとおりです。
Oracle JDeveloperでJavaクラスの作成ウィザードを起動するには、「ファイル」→「新規」→「一般」→「Java」→「Java」→「クラス」の順に選択します。この選択が表示されない場合は、「新規ギャラリ」ダイアログの上部で「すべてのテクノロジ」タブが選択されていることを確認してください。
次のクラスを拡張するJavaクラスを作成します。
oracle.tip.tools.ide.fabric.custom.GenericSOACustomizationClass
カスタマイズ・クラスに次のコンテンツを指定します。
package myCustomizationPackage; import oracle.tip.tools.ide.fabric.custom.GenericSOACustomizationClass; public class MyCustomizationClass extends GenericSOACustomizationClass { public MyCustomizationClass() { super(); // set the customization layer name setName("MyCustomizationLayer"); } }
Javaクラスの作成ウィザードによって次のコンテンツが自動的に生成されることに注意してください。
package myCustomizationPackage; import oracle.tip.tools.ide.fabric.custom.GenericSOACustomizationClass; public class MyCustomizationClass extends GenericSOACustomizationClass { public MyCustomizationClass(String string, String string1) { super(string, string1); } public MyCustomizationClass() { super(); } }
カスタマイズ・クラスに正しいカスタマイズ・レイヤーが設定されるようにするには、パラメータなしのコンストラクタに次を追加することで、カスタマイズ・レイヤー名を設定します。
// set the customization layer name setName("MyCustomizationLayer");
オプションで、パラメータ付きのコンストラクタを削除することもできます。
カスタマイズ・クラスを有効にするには、SOAプロジェクトをビルドまたはメイクしてカスタマイズ・クラスをコンパイルします。
ビルドが成功したことを確認します。
「カスタマイズ開発者」ロールでログインすると、XMLスキーマまたはWSDLドキュメントをOracle JDeveloperで追加することができます。
アプリケーション・ナビゲータで、Oracle SOA Suiteのプロジェクトを右クリックします。
「SOA」を選択します。
作成するアーティファクトを次の中から選択します。
XMLスキーマの作成
プロジェクトで新しいXMLスキーマ・ファイルを追加する、「XMLスキーマの作成」ダイアログを起動します。完了すると、新しいスキーマ・ファイルが自動的に開きます。
WSDLドキュメントの作成
プロジェクトで新しいWSDLファイルを追加する、WSDLの作成ダイアログを起動します。
Oracle JDeveloperのBPELプロセスでカスタマイズ・アクティビティを検索できます。
カスタマイズしたアクティブを検索する手順は、次のとおりです。
「カスタマイズ開発者」ロールを使用してOracle JDeveloperにアクセスします。
デザイナの上部にあるBPELプロセスの「検索」メニューで、図43-2に示すように「カスタマイズ検索」を選択します。
デザイナの下部にある「ログ」ウィンドウの「カスタマイズの検索」タブに検索結果が表示されます。
Oracle JDeveloperのアーティファクト(「カスタマイズ開発者」ロールで作成された新しいアーティファクトを除く)のソースは、別のアプリケーションの「カスタマイズ開発者」ロールで編集可能です。
例:
「カスタマイズ開発者」オプションを選択して、SOAコンポジット・アプリケーションを作成します。
コンポジット内のcomposite.xml
プロパティを編集します(例として、コンポジットに含まれるOracle Mediatorサービス・コンポーネントのpassThroughHeader
プロパティを追加します)。
コンポジットをSARファイルにデプロイし、SARファイルを別の新しいコンポジットにインポートします。
Oracle JDeveloperを再起動し、「カスタマイズ開発者」ロールを使用して新しいコンポジットを開きます。
composite.xml
ファイルの「ソース」ビューに移動し、「プロパティ・インスペクタ」からpassThroughHeaderプロパティ値を変更します。
プロパティが編集可能であることに注意してください。
カスタマイズ・ロールでは、メタデータ・リポジトリ(MDS)によってカスタマイズとベース・メタデータがマージされます。マージにより、スキーマに対して無効なXMLドキュメントが作成される可能性があります。MDSマージでは、マージによって常に有効なXMLドキュメントが作成されることを確認するためのスキーマ検証は起動されません。このため、メタデータUIエディタをレンダリングするためにメタデータの妥当性に依存するMDSクライアントに問題が発生する可能性があります。
composite.xml
などのSOAファイルが無効になる場合は、Oracle JDeveloperの「ソース」ビューに切り替えて、XMLソースを直接修正する必要があります。「ソース」ビューが編集不可(「カスタマイズ開発者」ロールを使用してOracle JDeveloperにアクセスした場合など)の場合は、Oracle JDeveloperの「構造」ウィンドウを使用してXMLソースを修正する必要があります。
たとえば、カスタマイズしたスコープを含むBPELプロセスで基本SOAコンポジット・アプリケーションを作成したとします。基本アプリケーションのSARファイルが新しいアプリケーションにインポートされ、「カスタマイズ開発者」ロールでOracle JDeveloperにアクセスするとき、次のコンポーネントが追加されました。
アウトバウンド・ファイル・アダプタ
ファイル・アダプタを起動するためのinvokeアクティビティ(カスタマイズ可能なスコープに追加)
バージョン2の基本SOAコンポジット・アプリケーションが作成されたときに、同期Oracle Mediatorサービス・コンポーネントが追加されました。これにより、BPELプロセス・サービス・コンポーネントへのルーティング・ルールが更新されました。
その後、バージョン2のベース・アプリケーションのSARファイルが、カスタマイズされたアプリケーションにインポートされました。ユーザーが「カスタマイズ開発者」ロールを使用してOracle JDeveloperにアクセスしたときに、無効なコンポジット・エラーが表示されました。「構造」ウィンドウのcomposite.xml
ファイルには、次のように、一連のサービス・コンポーネントおよび参照バインディング・コンポーネントの無効な構造が表示されました。
<component> </component> <reference> </reference> <component> </component>
<reference>
コンポーネント(この場合、バージョン1のベース・アプリケーションでは、ユーザーが「カスタマイズ開発者」ロールを使用してOracle JDeveloperにアクセスしたときに追加されたアウトバウンド・ファイル・アダプタ)は、最後に表示されている必要があります。
<component> </component> <component> </component> <reference> </reference>
このエラーを解決するには、「構造」ウィンドウに移動し、これらのコンポーネントをコピーして正しい順序で貼り付けます。このアクションにより、コンポジット検証エラーが解決されます。
次の手順を実行すると仮定します。
バージョン1のSOAコンポジット・アプリケーションをカスタマイズします。
たとえば、「カスタマイズ開発者」ロールでOracle JDeveloperを使用しているときに、BPELプロセスのカスタマイズ可能なscopeアクティビティに新しいアクティビティを追加します。BPELプロセスにより、新しいアクティビティが追加されるsequenceアクティビティが作成されます。
バージョン2のSOAコンポジット・アプリケーションを作成します。
バージョン2コンポジットで、同じカスタマイズ可能なスコープに新しいアクティビティを追加すると、新しいsequenceアクティビティが作成されます。
バージョン2のSOAコンポジット・アプリケーションをカスタマイズされたアプリケーションにインポートします。
「カスタマイズ開発者」ロールでOracle JDeveloperを開きます。
次のエラーが表示されます。
Sequence element is not expected
競合を解決する手順は、次のとおりです。
「構造」ウィンドウに移動します。
シーケンスを展開します。
各コンポーネントをコピーし、別のシーケンスに貼り付けます。
コピー元のシーケンス内のコンポーネントを削除します。
シーケンスが空の場合は削除します。
コア・アプリケーション、バーティカル・アプリケーションまたは顧客レベルでカスタマイズされたアプリケーションをデプロイまたはコンパイルすると、例43-1に示すように、予期しないID属性を説明した警告メッセージが表示されます。これらのメッセージは、無視しても問題ありません。スキーマ定義に必要な単純型要素が含まれていないために、これらのメッセージが表示されます。これらのメッセージにより、カスタマイズされたコンポジットが正常にデプロイされないわけではありません。
例43-1 デプロイメント・エラーまたはコンパイル・エラー
[scac] warning: in /scratch/qizhong/my-jdev/mywork/CompositeTestApp2/Project2/composite.xml(22,32): Schema validation failed for /scratch/qizhong/my-jdev/mywork/CompositeTestApp2/Project2/composite.xml<Line 22, Column 32>: XML-24535: (Error) Attribute 'http://www.w3.org/XML/1998/namespace:id' not expected. [scac] warning: in /scratch/qizhong/my-jdev/mywork/CompositeTestApp2/Project2/composite.xml(23,32): Schema validation failed for /scratch/qizhong/my-jdev/mywork/CompositeTestApp2/Project2/composite.xml<Line 23, Column 32>: XML-24535: (Error) Attribute 'http://www.w3.org/XML/1998/namespace:id' not expected.
この項では、バーティカルSOAコンポジット・アプリケーションのカスタマイズに必要な手順の概要を示します。
バーティカル・アプリケーションをカスタマイズする手順は、次のとおりです。
次のいずれかの方法を使用して、カスタマイズ・レイヤーのレイヤー値を追加します。
アプリケーション固有のレイヤー値を追加するには、図43-3に示すように、「デザインタイム・カスタマイズ・レイヤー値の構成」リンクをクリックします。
レイヤー値を追加します。
値を指定してファイルを保存すると、「アプリケーション・リソース」のMDS DTフォルダにCustomizationLayerValues.xmlファイルが表示されます。この場所のファイルをダブルクリックすると、その他の変更を行うためのエディタが開きます。
または、
すべてのアプリケーションに適用可能なグローバル値を追加するには、$JDEV_HOME/jdeveloper/jdev
のCustomizationLayerValues.xml
ファイルを開き、カスタマイズ・レイヤーのレイヤー値を追加します。たとえば、値Communications
をindustry
レイヤーに追加します。
<cust-layers xmlns="http://xmlns.oracle.com/mds/dt"> <cust-layer name="industry"> <cust-layer-value value="communications" display-name="Communications"/> </cust-layer> </cust-layers>
Oracle JDeveloperを起動し、「デフォルトのロール」を選択します。
コア・アプリケーションとは異なる名前で新しいSOAアプリケーションを作成します。
「ファイル」メニューから、「インポート」→「SOAアーカイブをSOAプロジェクトへ」の順に選択します。
「参照」をクリックし、第43.2項「カスタマイズ可能なコンポジットの作成」でコア・アプリケーション・チームが作成したコンポジット・アーカイブのJARファイルを選択します。
「コンポジット名」フィールドで、コアSOAプロジェクトとは別の名前を入力します。
注意: SOAプロジェクトは選択しないでください。インポートするJARファイルには、新規SOAプロジェクトを作成する必要があります。 |
「カスタマイズ用にインポート」チェック・ボックスを選択します。
「ツール」メニューから、「プリファレンス」→「ロール」→「カスタマイズ開発者」の順に選択します。
Oracle JDeveloperを再起動します。
「カスタマイズ・コンテキスト」ダイアログに、使用可能なカスタマイズ・レイヤーとレイヤー値が表示されます。
図43-4に示すように、カスタマイズするレイヤーおよび値を選択します(この例では、レイヤーindustryおよび値Communicationsが選択されています)。
SOAコンポジット・エディタで、BPELプロセスをダブルクリックしてOracle BPELデザイナにアクセスします。
編集できるのは、カスタマイズ可能に設定されているscopeアクティビティのみです。図43-5に示す例では、コア・アプリケーション・チームが1つのスコープのみをカスタマイズ可能に設定しています。BPELプロセスのその他のアクティビティは無効になり、編集できません。
「アプリケーション・ナビゲータ」でSOAプロジェクトを右クリックし、「デプロイ」を選択して、カスタマイズ・コンポジット(SAR)のJARファイルを作成します。
デプロイメントはカスタマイズ・ロールが使用可能な状態で起動されるため、現在のカスタマイズ・コンテキストに基づいて適切なレイヤーの基本コンポジットが自動的にマージされます。
アプリケーションをソース・コード・コントロール・システムにチェックインします。
JARファイルには、次のカスタマイズ・レベルの基本プロセスとして順に機能するマージされたコンポジットが格納されます。これで、JARファイルを顧客に提供できるようになりました。
注意: 「カスタマイズ開発者」ロールでOracle JDeveloperを実行中に、WSDLファイルおよびXSDファイルを作成できます。「アプリケーション・ナビゲータ」で、プロジェクト名を右クリックし、「SOA」→「作成」→「WSDL」または「SOA」→「作成」→「XSD」の順に選択します。 |
この項では、顧客バージョンのSOAコンポジット・アプリケーションのカスタマイズに必要な手順の概要を示します。
顧客バージョンをカスタマイズする手順は、次のとおりです。
次のいずれかの方法を使用して、カスタマイズ・レイヤーのレイヤー値を追加します。
アプリケーション固有のレイヤー値を追加するには、第43.3項「バーティカル・アプリケーションのカスタマイズ」のステップ1に示すように、「デザインタイム・カスタマイズ・レイヤー値の構成」リンクをクリックします。
レイヤー値を追加します。
値を指定してファイルを保存すると、「アプリケーション・リソース」のMDS DTフォルダにCustomizationLayerValues.xmlファイルが表示されます。この場所のファイルをダブルクリックすると、その他の変更を行うためのエディタが開きます。
または、
すべてのアプリケーションに適用可能なグローバル値を追加するには、$JDEV_HOME/jdeveloper/jdev
のCustomizationLayerValues.xml
ファイルを開き、カスタマイズ・レイヤーのレイヤー値を追加します。たとえば、North America
値およびAsia Pacific
値をsite
レイヤーに追加します。
<cust-layers xmlns="http://xmlns.oracle.com/mds/dt"> <cust-layer name="site"> <cust-layer-value value="communications" display-name="North America"/> <cust-layer-value value="communications" display-name="Asia Pacific"/> </cust-layer> </cust-layers>
Oracle JDeveloperを起動し、「デフォルトのロール」を選択します。
コア・アプリケーションまたはカスタマイズ・アプリケーションとは異なる名前で新しいSOAアプリケーションを作成します。
「ファイル」メニューから、「インポート」→「SOAアーカイブをSOAプロジェクトへ」の順に選択します。
「参照」をクリックし、第43.3項「バーティカル・アプリケーションのカスタマイズ」でバーティカル・アプリケーション・チームが作成したコンポジット・アーカイブのJARファイルを選択します。
「カスタマイズ用にインポート」チェック・ボックスを選択します。
「ツール」メニューから、「プリファレンス」→「ロール」→「カスタマイズ開発者」の順に選択します。
Oracle JDeveloperを再起動します。
「カスタマイズ・コンテキスト」ダイアログに、使用可能なカスタマイズ・レイヤーとレイヤー値が表示されます。
図43-6に示すように、カスタマイズするレイヤーと値を選択します(この例では、siteレイヤーとNorth America値が選択されています)。
BPELプロセスをカスタマイズします。
SOAプロジェクトを右クリックし、「デプロイ」を選択して北米地域のJARファイル(SAR)を作成します。
アプリケーションをソース・コード・コントロール・システムにチェックインします。
この項では、SOAコンポジット・アプリケーションの次のバージョンへのアップグレードに必要な手順の概要を示します。
コア・アプリケーション・チームは、不具合の修正、製品の拡張および次のバージョンのコンポジットの作成を実施します。
コア・アプリケーション・チーム・コンポジットをアップグレードする手順は、次のとおりです。
第43.2項「カスタマイズ可能なコンポジットの作成」で作成したアプリケーションをソース・コントロールからチェックアウトします。
Oracle JDeveloperを起動し、「デフォルトのロール」を選択します。
不具合を修正し、製品を拡張します。
コンポジットをデプロイし、次のバージョンのJARファイルを作成します。
JARファイルをバーティカル・アプリケーション・チームに提供します。
バーティカル・アプリケーション・チームは、新しい基本コンポジットをカスタマイズしてJARファイル・バージョンを作成します。
バーティカル・アプリケーション・チーム・コンポジットをアップグレードする手順は、次のとおりです。
第43.3項「バーティカル・アプリケーションのカスタマイズ」で作成したアプリケーションをソース・コントロールからチェックアウトします。
Oracle JDeveloperを起動し、「デフォルトのロール」を選択します。
チェックアウトしたアプリケーションを開きます。
「アプリケーション・ナビゲータ」でプロジェクト・ノードを選択し、現在のプロジェクト・コンテキストを設定します。次の手順のインポート・コマンドでは、選択したプロジェクトにSOAアーカイブをインポートして基本をアップグレードするため、この手順は重要です。
Oracle JDeveloperの「ファイル」メニューから、第43.5.1項「コア・アプリケーション・チーム・コンポジットのアップグレード方法」で作成された新規リビジョンのJARファイルをインポートします。
「ツール」メニューから、「プリファレンス」→「ロール」→「カスタマイズ開発者」の順に選択します。
Oracle JDeveloperを再起動します。
「カスタマイズ・コンテキスト」ダイアログで、カスタマイズするレイヤーと値を選択します(たとえば、industryレイヤーとCommunicationsの値を選択します)。
BPELプロセスを開き、前の手順で選択したコンテキストのレイヤーに、新しい基本コンポーネントをマージできるかどうかを確認します。
ログ・ウィンドウで潜在的な警告およびエラーを確認します。
必要な場合は、プロセスを変更してエラーおよび警告を修正します。これにより、レイヤーがバックグラウンドで編集されます。
コンポジットをデプロイして、カスタマイズされたJARファイルの次のリビジョンを作成し、アップグレードする顧客に提供します。
顧客は、第43.5.2「バーティカル・アプリケーション・チーム・コンポーネントのアップグレード方法」のバーティカル・アプリケーション・チームと同じ手順に従って、新しい基本コンポジットに独自のレイヤーを適用します。