Oracle Fusion Middleware Adapter for Oracle Applicationsユーザーズ・ガイド 11g リリース1(11.1.1.7.0) 部品番号 B61389-04 | ![]() 目次 | ![]() 前 | ![]() 次 |
この章の構成は、次のとおりです。
Adapter for Oracle Applicationsでは、PL/SQL Application Programming Interface(API)を使用して、Oracle Applicationsへのデータの挿入や更新を行います。APIは、Oracle Applicationsへのデータの挿入および更新を可能にするストアド・プロシージャです。PL/SQL APIを使用してデータを取得することもできます。たとえば、PL/SQL APIを使用して、Oracle Applicationsに顧客レコードを挿入できます。
注意: PL/SQLプロシージャの制限の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
この項では、PL/SQL APIを使用するようにAdapter for Oracle Applicationsを構成する方法について説明します。Oracle JDeveloperで「アダプタ構成ウィザード」を使用してAdapter for Oracle Applicationsを構成するために必要な操作について説明します。
BPELプロセスを使用したSOAコンポジット・アプリケーションのシナリオ
この例では、Adapter for Oracle Applicationsは次のストアド・プロシージャをWebサービスとしてBPELプロセスに公開し、ユーザー入力に基づいて既存の発注の「quantity」フィールドを更新します。
発注を初期化するカスタム受注管理ストアド・プロシージャGET_G_MISS_LINE_REC(GET_G_MISS_LINE_REC)
既存の発注を更新するPL/SQLオーダー明細処理(PROCESS_LINE)
オーダー変更要求を受信すると、オーダー数量および他の明細品目詳細を含む発注情報が取得されます。ユーザー入力に基づいて、Oracle Order Managementで新しいオーダー数量が更新されます。
BPELプロセスを使用したSOAコンポジット・アプリケーションがデプロイ後に正常に実行された場合は、Order Management表に直接問合せるか、フォームベースのOracle Order Managementアプリケーションからプロセスを検証できます。問合せ表から取得したか、Order Managementアプリケーションで検索したordered_quantity値は、ユーザーがchangeorder_data.xmlファイルを使用して指定した数量と同じである必要があります。
Adapter for Oracle Applicationsは、Oracle JDeveloperのBPEL Process Manager(PM)を使用してデプロイされます。BPEL PMにより、API用のWSDLインタフェースが作成されます。
アプリケーション・コンテキストのヘッダー変数の移入
Oracle Applicationsのコンテキスト情報を提供するには、BPEL PMに特定の変数を移入する必要があります。十分な権限を持つOracle Applicationsユーザーがプログラムを実行するには、APIトランザクションのコンテキスト情報が必要です。
コンテキストはヘッダー・プロパティ(「ユーザー名」、「職責」、「職責アプリケーション」、「セキュリティ・グループ」および「NLS言語」を含む)に渡される値を考慮して設定されます。新しいヘッダー・プロパティ「職責アプリケーション」、「セキュリティ・グループ」および「NLS言語」の値が渡されない場合、コンテキスト情報は「ユーザー名」と「職責」に基づいて判断されます。
デフォルトの「ユーザー名」はSYSADMIN、デフォルトの「職責」はSYSTEM ADMINISTRATOR、デフォルトの「セキュリティ・グループ・キー」は「標準」、およびデフォルトの「NLS言語」はUSです。
生成WSDLに指定されているデフォルト値は変更できます。これは、コンテキスト情報を静的に変更する方法です。これらの値は、デプロイ済のビジネス・プロセスのすべての起動に適用されます。ただし、ビジネス・プロセスの起動ごとに異なるコンテキスト情報を提供する必要がある場合は、ヘッダー値に動的に値を移入できます。コンテキスト情報はinvokeアクティビティを構成することにより指定できます。
アプリケーション・コンテキストの詳細は、「正規化されたメッセージ・プロパティのサポート」を参照してください。
レコード・タイプのデフォルト値の移入
Oracle E-Business Suiteから公開された特定のPL/SQL APIは、入力としてレコード・タイプを取ります。このようなAPIは、正常に実行されるために、これらのレコード・タイプ内のパラメータにデフォルト値が移入されることを予期しています。
デフォルト値は、文字の場合はFND_API.G_MISS_CHAR、日付の場合はFND_API.G_MISS_DATE、および数値の場合はFND_API.G_MISS_NUMです。たとえば、次に示すように、レコード・タイプ内のパラメータがnil値として渡された場合、Adapter for Oracle Applicationsはこれらの値をデフォルト設定できます。
<PRICE_LIST_REC>
<ATTRIBUTE1 xsi:nil="true"/>
<ATTRIBUTE2 xsi:nil="true"/>
<ATTRIBUTE3 xsi:nil="true"/>
...
</PRICE_LIST_REC>
これは、transformアクティビティの機能を使用するか、nil値のXML入力を直接渡して、それらをassignアクティビティ内のレコード・タイプに割り当てることによって実現できます。
設計時タスクを実行するために必要な手順のリストを次に示します。
BPELプロセスを使用した新しいSOAコンポジット・アプリケーションを作成する手順は、次のとおりです。
Oracle JDeveloperを起動します。
「アプリケーション・ナビゲータ」で「新規アプリケーション」をクリックします。
「SOAアプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。
「SOAアプリケーションの作成 - アプリケーションの名前付け」ページ
「アプリケーション名」フィールドに適切なアプリケーション名を入力し、「アプリケーション・テンプレート」リストから「SOAアプリケーション」を選択します。
「次」をクリックします。「SOAアプリケーションの作成 - プロジェクトの名前付け」ページが表示されます。
「プロジェクト名」フィールドに適切なプロジェクト名を入力します。例: ChangeOrderAPI。
「SOAアプリケーションの作成 - プロジェクトの名前付け」ページ
「プロジェクト・テクノロジ」タブで、「SOA」が「使用可能」テクノロジ・リストから選択されて、「選択済」テクノロジ・リストに表示されていることを確認します。
「次」をクリックします。「SOAアプリケーションの作成 - SOA設定の構成」ページが表示されます。
「SOAアプリケーションの作成 - SOA設定の構成」ページ
「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して、「終了」をクリックします。新しいアプリケーションとSOAプロジェクトが作成されました。これにより、SOAコンポジット・アプリケーションが自動的に作成されます。
「BPELプロセスの作成」ページが表示されます。
「BPELプロセスの作成」ページ
デフォルトで選択されている「BPEL 1.1仕様」をそのままにします。BPEL 1.1仕様をサポートするBPELプロジェクトが作成されます。
「名前」フィールドに適切なBPELプロセス名を入力します。例: ChangeOrderAPI。
「テンプレート」フィールドで「非同期BPELプロセス」を選択します。「OK」をクリックします。
receiveアクティビティとreplyアクティビティを持つ非同期BPELプロセスが作成されます。指定した名前を使用したbpelおよびwsdlファイル(例: ChangeOrderAPI.bpelとChangeOrderAPI.wsdl)を含む必要なソース・ファイルとcomposite.xmlも生成されます。
「SOAコンテンツ」→「ビジネス・ルール」の順にナビゲートしてcomposite.xmlをクリックすると、コンポジット・ダイアグラムが表示されます。
「ChangeOrderAPI」コンポーネントをダブルクリックするとBPELプロセスが開きます。
新規BPELプロセス
次のタスクは、BPELプロセスにパートナ・リンクを追加することです。この項では、BPELプロセスにパートナ・リンクを追加してアプリケーション・サービス用のOracle Applicationsアダプタを作成する方法について説明します。BPELパートナ・リンクは、パートナ・サービスと相互動作するBPELプロセスのリンク名、タイプおよびロールを定義するものです。
前に説明したBPELプロセス・シナリオに基づいて、次の2つのパートナ・リンクを構成する必要があります。
発注を初期化する最初のパートナ・リンク(initLineRec)を追加します
既存の発注を更新する2番目のパートナ・リンク(OrderManagement)を追加します
最初のパートナ・リンクを追加する手順は、次のとおりです。
「コンポーネント・パレット」で「BPELサービス」をクリックします。
「Oracle Applications」を「BPELサービス」リストからプロセス・ダイアグラムの右側の「パートナ・リンク」スイムレーンにドラッグ・アンド・ドロップします。「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。「次」をクリックします。
「サービス名」フィールドにサービス名を入力します。例: initLineRec。
「次」をクリックします。「サービス接続」ダイアログが表示されます。
データベース接続については次のいずれかのオプションを実行できます。
注意: Oracle Applicationsを実行しているデータベースに接続する必要があります。
新しいデータベース接続を作成するには、「新規データベース接続を作成します」アイコンをクリックします。
新しいデータベース接続を定義する方法は、「新規データベース接続の作成」を参照してください。
以前に構成した既存のデータベース接続は、「接続」ドロップダウン・リストから選択できます。
「サービス接続」ページが開いて、選択した接続情報が表示されます。データベース接続に対応するJNDI(Java Naming and Directory Interface)名が、「データベース・サーバーのJNDI名」フィールドに自動的に表示されます。JNDI名を指定することもできます。
注意: JNDI名を指定する場合、データベースにアクセスするには、Oracle Applicationsアダプタのデプロイメント・ディスクリプタにより、このJNDI名をアダプタで必要な構成プロパティに関連付ける必要があります。
JNDI名は、サービスがBPELサーバーにデプロイされるときに使用される接続のプレースホルダとなります。これによって、開発用とその後の本番用とで異なるデータベースを使用できます。
注意: JNDIの概念の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
新規のサービス接続の作成を完了した後、Oracle Applicationsで使用可能なAPIのリストを参照してPL/SQL APIを追加できます。
「次」をクリックします。
Oracle E-Business Suiteリリース12の場合
Oracle E-Business Suiteリリース12に接続している場合は、IREPファイルがありませんというダイアログが表示されます。これは、ワークスペース内でOracle Applicationsに接続中のデータベースに対応するOracle Integration Repositoryデータファイルが見つからないことを示します。データファイルがないと、Integration Repositoryツリーの参照や検索がかなり低速になります。データファイルを抽出し、Integration Repositoryデータファイルのローカル・コピーを作成するように選択できます。正常に作成されたローカル・コピーは、次回にアダプタにより自動的に使用され、ローカルIntegration Repositoryからデータが取得されます。
次のいずれかのオプションを選択できます。
Integration Repositoryデータファイルを抽出するには、「はい」をクリックします。
Integration Repositoryデータファイルの抽出
システムによりIntegration Repositoryデータファイルのローカル・コピーが正常に作成されると、データベースへの次回接続時には、「操作」ダイアログに「IRepデータ・ファイル」フィールドが表示されます。これは、ファイル名の一部に作成日時を含んだローカル・コピーが存在することを示します。
ローカルIntegration Repositoryデータファイルの使用
接続中の本番データベースからIntegration Repositoryデータファイルを問い合せてIntegration Repositoryツリーを表示するには、「いいえ」をクリックします。
「操作」ページで「次へ」をクリックして、「Oracle Applicationsモジュール・ブラウザ」を開きます。
Oracle E-Business Suiteリリース11.5.9の場合
Oracle E-Business Suiteリリース11.5.9のインスタンスに接続している場合は、「アダプタ構成ウィザード」でインタフェース・タイプを選択する必要があります。「表/ビュー/API/コンカレント・プログラム」を選択して次に進んでください。
「アプリケーション・インタフェース」ダイアログで、「オブジェクト取得」をクリックして「Oracle Applicationsモジュール・ブラウザ」を開きます。
「Oracle Applicationsモジュール・ブラウザ」は、Oracle Integration Repositoryからのインタフェース・データを、Adapter for Oracle Applicationsでサポートされるその他のインタフェースに関する情報と組み合せて、ツリー階層を作成します。
注意: 「Oracle Applicationsモジュール・ブラウザ」には、Oracle Applicationsで使用可能な各種の製品ファミリが含まれています。各製品ファミリには、個別製品が含まれています。各製品には、関連するビジネス・エンティティが含まれています。ビジネス・エンティティには、統合用に公開されている各種アプリケーション・モジュールが含まれています。これらのモジュールは、提供するインタフェースに従ってグループ化されています。PL/SQL APIは「PL/SQL」カテゴリの下にあります。
「その他インタフェース」→カスタム・オブジェクト→「PLSQL API」→「OE_ORDER_PUB」にナビゲートして、カスタム・ストアド・プロシージャ「GET_G_MISS_LINE_REC」を選択します。
注意: GET_G_MISS_LINE_REC (GET_G_MISS_LINE_REC)ストアド・プロシージャは入力を取りませんが、出力として複雑なデータ型(PL/SQL表)を持ちます。設計時にAdapter for Oracle Applicationsはラッパー・ストアド・プロシージャを自動的に生成し、基礎となるデータベースにロードします。
Oracle Adapter for Oracle Applicationsは、PL/SQL APIでフレックスフィールドを使用できるようにします。選択したAPIがOracle Applicationモジュール・ブラウザに表示されたら、Oracle E-Business Suiteで定義されたフレックスフィールドを持つAPIのフレックスフィールド・マッピングを構成することも、または、それ以上フレックスフィールドを構成せずに現在のデータを使用することもできます。
選択したAPIのOracle Applicationsモジュール・ブラウザでの表示
選択したAPIでのフレックスフィールド・データの構成
Oracle Applicationモジュール・ブラウザで次のタスクの1つを実行します。
それ以上構成せずに既存のデータを使用するには、 「OK」をクリックして続行します。
既存のフレックスフィールド・マッピングを使用するか、必要があれば、フレックスフィールド・ウィザードを使用して新しいマッピングを作成し、フレックスフィールド・データを構成します。
新しいマッピングの作成
選択したAPIに新しいマッピングを作成するには、「フレックスフィールド・メタデータ」セクションで「マッピングの追加」を選択します。新しいフレックスフィールド・マッピング・ウィザードが表示され、各構成ページを案内します。それらのページでキー・フレックスフィールドや付加フレックスフィールドを追加したり、選択したAPIパラメータとOracle E-Business Suiteインスタンスに定義されたフレックスフィールドとの間のフレックスフィールド・マッピングを構成できます。
「新しいマッピングの追加または構成」を参照してください。
既存マッピングのインポート
新しいマッピングを作成するかわりに、「フレックスフィールド・メタデータ」セクションで 「ファイルからインポート」を選択して作成された既存のマッピングを使用できます。これにより選択したAPIに対して希望するフレックスフィールド・マッピングを選択できます。希望するマッピングがインポートされたら、付加フレックスフィールドのコンテキスト値を変更し、必要に応じてキー・フレックスフィールドの構造を変更できます。
「既存のフレックスフィールド・マッピングのインポート」の項を参照してください。
PL/SQL APIでのフレックスフィールドのサポート、および既存構成の変更方法は、PL/SQL APIでのフレックスフィールドのサポートを参照してください。
この例では、「OK」をクリックして続行します。
ストアド・プロシージャの入力パラメータと出力パラメータには、JDBCタイプに単純にマップできない複雑なデータ・タイプが含まれていることに注意してください。Adapter for Oracle Applicationsウィザードは、これらのタイプが使用された場合にそれを検出し、Oracle JPublisherを起動して、必要なラッパーを自動的に生成するメカニズムを提供します。Oracle JPublisherは2つのSQLファイルを生成します。一方はスキーマ・オブジェクト作成し、もう一方はそれらを削除します。XSDが生成される前に、スキーマ・オブジェクトを作成するSQLがウィザード内で自動的に実行され、データベース・スキーマにスキーマ・オブジェクトが作成されます。
アダプタ・サービスは、プロセス・オーダー明細ストアド・プロシージャではなく、ラッパー・ストアド・プロシージャを指します設計時にアダプタは基礎となるデータベースにラッパー・プロシージャを自動的にロードします。
「アプリケーション・インタフェース」ページで「次へ」をクリックします。
「アプリケーション・インタフェース」ページ
「終了」ページで「終了」をクリックして、Adapter for Oracle Applicationsの構成プロセスを完了します。
XMLスキーマに対応するWSDLファイルが生成されます。このWSDLファイルをパートナ・リンクに使用できます。
「適用」をクリックし、「OK」をクリックします。必要なWSDL設定を使用してパートナ・リンクが作成されます。
パートナ・リンクの追加と構成を完了後、次のタスクはBPELプロセスを構成することです。
2番目のパートナ・リンクを追加する手順は、次のとおりです。
「コンポーネント・パレット」で「BPELサービス」をクリックします。
「Oracle Applications」を「BPELサービス」リストからプロセス・ダイアグラムの右側の「パートナ・リンク」スイムレーンにドラッグ・アンド・ドロップします。「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。「次」をクリックします。
「サービス名」フィールドにサービス名を入力します。例: OrderManagement。
「次」をクリックします。「サービス接続」ダイアログが表示されます。
データベース接続については次のいずれかのオプションを実行できます。
注意: Oracle Applicationsを実行しているデータベースに接続する必要があります。
新しいデータベース接続を作成するには、「新規データベース接続を作成します」アイコンをクリックします。
新しいデータベース接続を定義する方法は、「新規データベース接続の作成」を参照してください。
以前に構成した既存のデータベース接続は、「接続」ドロップダウン・リストから選択できます。
「サービス接続」ページが開いて、選択した接続情報が表示されます。データベース接続に対応するJNDI(Java Naming and Directory Interface)名が、「データベース・サーバーのJNDI名」フィールドに自動的に表示されます。JNDI名を指定することもできます。
注意: JNDI名を指定する場合、データベースにアクセスするには、Oracle Applicationsアダプタのデプロイメント・ディスクリプタにより、このJNDI名をアダプタで必要な構成プロパティに関連付ける必要があります。
JNDI名は、サービスがBPELサーバーにデプロイされるときに使用される接続のプレースホルダとなります。これによって、開発用とその後の本番用とで異なるデータベースを使用できます。
注意: JNDIの概念の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
新規のサービス接続の作成を完了した後、Oracle Applicationsで使用可能なAPIのリストを参照してPL/SQL APIを追加できます。
「次」をクリックします。
Oracle E-Business Suiteリリース12の場合
Oracle E-Business Suiteリリース12に接続している場合は、IREPファイルがありませんというダイアログが表示されます。これは、ワークスペース内で接続中のデータベースに対応するOracle Integration Repositoryデータ・ファイルが見つからないことを示します。データファイルがないと、Integration Repositoryツリーの参照や検索がかなり低速になります。データファイルを抽出し、Integration Repositoryデータファイルのローカル・コピーを作成するように選択できます。正常に作成されたローカル・コピーは、次回にアダプタにより自動的に使用され、ローカルIntegration Repositoryからデータが取得されます。
次のいずれかのオプションを選択できます。
Integration Repositoryデータファイルを抽出するには、「はい」をクリックします。
Integration Repositoryデータファイルの抽出
システムによりIntegration Repositoryデータファイルのローカル・コピーが正常に作成されると、データベースへの次回接続時には、「操作」ダイアログに「IRepデータ・ファイル」フィールドが表示されます。これは、ファイル名の一部に作成日時を含んだローカル・コピーが存在することを示します。
ローカルIntegration Repositoryデータファイルの使用
接続中の本番データベースからIntegration Repositoryデータファイルを問い合せてIntegration Repositoryツリーを表示するには、「いいえ」をクリックします。
「操作」ページで「次へ」をクリックして、「Oracle Applicationsモジュール・ブラウザ」を開きます。
Oracle E-Business Suiteリリース11.5.9の場合
Oracle E-Business Suiteリリース11.5.9のインスタンスに接続している場合は、「アダプタ構成ウィザード」でインタフェース・タイプを選択する必要があります。「表/ビュー/API/コンカレント・プログラム」を選択して次に進んでください。
「アプリケーション・インタフェース」ダイアログで、「オブジェクト取得」をクリックして「Oracle Applicationsモジュール・ブラウザ」を開きます。
「Oracle Applicationsモジュール・ブラウザ」は、Oracle Integration Repositoryからのインタフェース・データを、Oracle Applicationアダプタでサポートされるその他のインタフェースに関する情報と組み合せて、ツリー階層を作成します。
必要なPL/SQL APIを選択します。たとえば、「製品ファミリ」→サプライ・チェーン管理 (SCM_PF)→「Supply Chain Trading Connector (CLN)」→「受注 (ONT_SALES_ORDER)」→「PLSQL」→オーダー処理API (OE_ORDER_PUB)→オーダー明細処理 (PROCESS_LINE)から、オーダー明細処理(PROCESS_LINE)APIを選択します。
注意: 必要なオブジェクトを素早く見つけるには、「検索」オプションを使用します。「オブジェクト名」フィールドに必要なデータベース・オブジェクト名を入力し、「API」を選択します。続いて、「検索」をクリックし、必要なデータベース・オブジェクトを検索します。PL/SQL APIを検索する場合は、プロシージャ名ではなくパッケージ名を入力します。これに対し、DBアダプタ・ウィザードを使用する場合は、検索時にPL/SQL APIの名前を入力する必要があります。
Oracle Adapter for Oracle Applicationsは、PL/SQL APIでフレックスフィールドを使用できるようにします。選択したAPIがOracle Applicationモジュール・ブラウザに表示されたら、Oracle E-Business Suiteで定義されたフレックスフィールドを持つAPIのフレックスフィールド・マッピングを構成することも、または、それ以上フレックスフィールドを構成せずに現在のデータを使用することもできます。
選択したAPIのOracle Applicationsモジュール・ブラウザでの表示
選択したAPIでのフレックスフィールド・データの構成
Oracle Applicationモジュール・ブラウザで次のタスクの1つを実行します。
フレックスフィールドを構成せずに現在のデータを使用するには、 「OK」をクリックして続行します。
既存のフレックスフィールド・マッピングを使用するか、必要があれば、フレックスフィールド・ウィザードを使用して新しいマッピングを作成し、フレックスフィールド・データを構成します。
新しいマッピングの作成
選択したAPIに新しいマッピングを作成するには、「フレックスフィールド・メタデータ」セクションで「マッピングの追加」を選択します。新しいフレックスフィールド・マッピング・ウィザードが表示され、各構成ページを案内します。それらのページでキー・フレックスフィールドや付加フレックスフィールドを追加したり、選択したAPIパラメータとOracle E-Business Suiteインスタンスに定義されたフレックスフィールドとの間のフレックスフィールド・マッピングを構成できます。
「新しいマッピングの追加または構成」を参照してください。
既存マッピングのインポート
新しいマッピングを作成するかわりに、「フレックスフィールド・メタデータ」セクションで 「ファイルからインポート」を選択して作成された既存のマッピングを使用できます。これにより選択したAPIに対して希望するフレックスフィールド・マッピングを選択できます。希望するマッピングがインポートされたら、付加フレックスフィールドのコンテキスト値を変更し、必要に応じてキー・フレックスフィールドの構造を変更できます。
「既存のフレックスフィールド・マッピングのインポート」の項を参照してください。
PL/SQL APIでのフレックスフィールドのサポート、および既存構成の変更方法は、PL/SQL APIでのフレックスフィールドのサポートを参照してください。
この例では、「OK」をクリックして続行します。
ストアド・プロシージャの入力パラメータと出力パラメータには、JDBCタイプに単純にマップできない複雑なデータ・タイプが含まれていることに注意してください。Adapter for Oracle Applicationsウィザードは、これらのタイプが使用された場合にそれを検出し、Oracle JPublisherを起動して、必要なラッパーを自動的に生成するメカニズムを提供します。Oracle JPublisherは2つのSQLファイルを生成します。一方はスキーマ・オブジェクト作成し、もう一方はそれらを削除します。XSDが生成される前に、スキーマ・オブジェクトを作成するSQLがウィザード内で自動的に実行され、データベース・スキーマにスキーマ・オブジェクトが作成されます。
アダプタ・サービスは、プロセス・オーダー明細ストアド・プロシージャではなく、ラッパー・ストアド・プロシージャを指します設計時にアダプタは基礎となるデータベースにラッパー・プロシージャを自動的にロードします。
「アプリケーション・インタフェース」ページで「次へ」をクリックします。
「アダプタ構成ウィザード」 - 「アプリケーション・インタフェース」ページ
「終了」ページで「終了」をクリックして、Adapter for Oracle Applicationsの構成プロセスを完了します。
XMLスキーマに対応するWSDLファイルが生成されます。このWSDLファイルをパートナ・リンクに使用できます。
「適用」をクリックし、「OK」をクリックします。必要なWSDL設定を使用してパートナ・リンクが作成されます。
パートナ・リンクの追加と構成を完了後、次のタスクはBPELプロセスを構成することです。
既存の発注を同期読取りし、オーダー詳細を取得することにより、BPELプロセスを構成するには、この手順を使用します。
ファイル・アダプタ用パートナ・リンクを追加して、オーダー詳細を読み取る手順は、次のとおりです。
JDeveloper BPEL Designerの「コンポーネント・パレット」で、「BPELサービス」をクリックします。
「ファイル・アダプタ」を「BPELサービス」リストからプロセス・ダイアグラムの右側の「パートナ・リンク」スイムレーンにドラッグ・アンド・ドロップします。「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。
「次」をクリックします。
「サービス名」ページで、ファイル・アダプタ・サービスの名前を入力します(getOrderDetailsなど)。
「次」をクリックします。「アダプタ・インタフェース」ページが表示されます。
アダプタ・インタフェースの指定
「操作およびスキーマから定義(後で指定)」ラジオ・ボタンを選択し、「次へ」をクリックします。
「操作」ページで、操作タイプを指定します。たとえば、「同期Read File」ラジオ・ボタンを選択します。この操作タイプは、「操作名」フィールドに自動的に移入されます。
操作の指定
「次へ」をクリックして、「ファイル・ディレクトリ」ページにアクセスします。
「論理名」ラジオ・ボタンを選択して、受信ファイルのディレクトリ(inputDirなど)を指定します。
「正常な取得後にファイルを削除」チェック・ボックスが選択されていないことを確認します。
入力ファイルの構成
「次へ」をクリックして、「ファイル名」ページを開きます。
同期Read File操作のファイル名を入力します。たとえば、changeorder_data.xmlと入力します。「次へ」をクリックして、「メッセージ」ページを開きます。
右上隅の「スキーマ・ファイルを参照」アイコンを選択して、「タイプ・チューザ」ウィンドウを開きます。
「タイプ・エクスプローラ」をクリックして、「プロジェクトのWSDLファイル」→「OrderManagement.wsdl」→「インライン・スキーマ」→「スキーマ」→「InputParameters」を選択します。
注意: 選択されたAPIの構成にフレックスフィールドが含まれる場合は、タイプ・チューザからではなく、フレックスフィールド・スキーマ (<servicename>_sp.xsd) を選択します。
たとえば、SynAccOrderパートナ・リンク・サービスは付加フレックスフィールドを含めて作成されます。Select 「プロジェクトのスキーマ・ファイル」→「SynAccOrder_sp.xsd」→「SynAccOrder_flex.xsd」→「InputParameters」を選択します。
「OK」をクリックします。選択したSynAccOrder_sp.xsdスキーマはURLとして表示され、InputParametersはスキーマ要素として表示されます。
PL/SQL APIでのフレックスフィールドのサポート、および既存構成の変更方法は、PL/SQL APIでのフレックスフィールドのサポートを参照してください。
選択したスキーマ情報は、「URL」フィールドと「スキーマ要素」フィールドに自動的に移入されます。
メッセージ・スキーマの指定
「次へ」をクリックし、「終了」をクリックします。パートナ・リンクに対応するWSDLファイルが生成されます。メインの「パートナ・リンクの作成」ダイアログ・ボックスが表示され、新規WSDLファイルgetOrderDetails.wsdlが指定されています。
パートナ・リンク構成の完了
「適用」をクリックし、「OK」をクリックして構成を完了し、ファイル・アダプタ・サービスに必須のWSDL設定を持つパートナ・リンクを作成します。
BPELプロセス・ダイアグラムにgetOrderDetailsパートナ・リンクが表示されます。
「アダプタ構成ウィザード」では、PL/SQL APIにPL/SQL Boolean、PL/SQL TableまたはPL/SQL Recordなどのデータ型の引数がある場合にラッパーAPIが生成されます。ラッパーAPIの生成時には、自動的にOracle JPublisherがバックグラウンドで起動します。ラッパーAPIが作成されるときに、WSDLファイルとXSDファイルに加えて2つのSQLファイルが作成されます。一方はラッパーAPIと必要なデータ型の作成用で、他方はその削除用です。この2つのSQLファイルは、WSDLファイルおよびXSDファイルと同じディレクトリに保存され、「プロジェクト」ビューで使用できます。
ラッパーの生成を必要とするPL/SQL APIのサンプル・コードを次に示します。
package pkg is
type rec is record (...);
type tbl is table of .. index by ..;
procedure proc(r rec, t tbl, b boolean);
end;
前述のPL/SQL APIをウィザードで選択すると、ラッパーAPIが作成されてデータベースにロードされます。このラッパーAPIは、最初に選択したPL/SQL APIのかわりに使用されます。このため、WSDLファイルとXSDファイルの内容は、最初に選択したプロシージャではなくラッパー・プロシージャを表します。
ラッパーAPIについて作成される型は、次のとおりです。
PL/SQL RECORDの場合はオブジェクト型。
PL/SQL TABLEの場合は指定の型のネストした表。たとえば、NUMBERのネストした表。
PL/SQL BOOLEANの場合は置換されるINTEGER。
ラッパーAPIを作成する生成SQLファイルにより、必要なスキーマ・オブジェクトも作成されます。ラッパーAPIパラメータの型は、新規スキーマ・オブジェクト型の型になります。ラッパー・パッケージには、ベースPL/SQL型と新規のスキーマ・オブジェクト型の間で変換するための変換APIが組み込まれます。
注意: SQLJUTLパッケージには、データ型がINTEGERに変更されたPL/SQL BOOLEAN引数に使用されるBOOL2INTおよびINT2BOOL変換関数が含まれます。
ラッパーAPIはパッケージ内で作成されます。このパッケージの名前は、XX_BPEL_servicenameとなります。servicenameは、「パートナ・リンクの追加」のステップ2で入力したサービスの名前です。このパッケージが存在する場合、ウィザードでは、別のパッケージ名を入力するか、チェック・ボックスを選択して既存のパッケージを上書きするように求めるプロンプトが表示されます。既存のパッケージを上書きすると、指定したパッケージ内のPL/SQL APIがすべて失われます。ウィザードで作成されるラッパー用パッケージには、APIが1つ(ラッパーAPI)のみ含まれます。
注意: 既存のパッケージを上書きするように指定しても、指定のパッケージにラッパーAPIが存在する場合は、(少し時間がかかる場合がありますが)ウィザードでラッパーAPIが再作成されることはありません。これは、SQLファイルが作成されず、Oracle JPublisherが実行されず、WSDLファイルとXSDファイルが既存のラッパーAPIを表すことを意味します。ウィザードの「終了」ページには、これらのアクションが発生することが表示されますが、ラッパーの有無によっては実行されない可能性があります。
ラッパーAPIのパッケージ名の入力
注意: ラッパーのパッケージ名には30文字以内、ラッパーAPI名には29文字以内という制限があります。そのため、パッケージ名またはラッパーAPI名の文字数が制限を超えると、制限に従って切り捨てられます。
ラッパーAPIの名前は、最初に選択したPL/SQL APIがパッケージ内にあるかどうかに応じて異なります。最初のPL/SQL APIがルート・レベルAPIの場合、つまりパッケージに属していない場合、ラッパーAPIの名前はTOPLEVEL$original_api_nameとなります。最初に選択したPL/SQL APIがパッケージ内にある場合、ラッパーAPIの名前はoriginal_package_name$original_api_nameとなります。
ラッパーAPIには、Oracle JPublisherのネーミング規則が適用されます。たとえば、元のPL/SQL APIがCREATE_EMPLOYEEという名前のルート・レベルAPIだった場合、ラッパーAPIの名前はTOPLEVEL$CREATE_EMPLOYEEとなります。元のPL/SQL APIがEMPLOYEEというパッケージにある場合、ラッパーAPIの名前はEMPLOYEE$CREATE_EMPLOYEEとなります。
ラッパーAPIを作成する必要がある場合は異なる「終了」ページが表示されます。「終了」ページはラッパーAPIが必要であることを示し、作成されるラッパー・パッケージ、ラッパーAPIおよびSQLファイルの名前のリストが表示されます。
注意: ラッパーAPIの作成が必要な場合は、ウィザードが完了するまでに時間がかかることがあります。ただし、同じパッケージ内に含まれる以降のPL/SQL APIの処理時間は大幅に短縮されます。
「終了」ページ
注意: デフォルトでは、REF CURSOR型はサポートされていません。ただし、REF CURSOR型をとるPL/SQL API用のアダプタ・サービスを生成するための詳細な手順については、OTNにある『Oracle BPEL Process Manager開発者ガイド』のREF CURSORのサポートに関する説明を参照してください。
リリース11.5.10では、オーバーロードされたAPIはサポートされません。
DEFAULT句を使用してストアド・プロシージャのパラメータを宣言できるため、そのパラメータを使用せずにプロシージャを起動すると、BPEL Process Managerによりそのパラメータのデフォルト値が指定されます。例:
PROCEDURE addEmployee (name VARCHAR2, country VARCHAR2 DEFAULT ‘US')
このプロシージャを起動するには、次の2つの方法があります。
addEmployee (‘John Smith') // country => ‘US'
addEmployee (‘John Smith', ‘France') // country => ‘France'
DEFAULT句を持つパラメータの省略
インスタンスXMLでは、デフォルト値を持つパラメータの要素を省略できます。次の入力および実行時の起動の例に示すように、プロシージャはこの種のパラメータを使用せずに起動され、デフォルト値を使用できます。
入力
<db:InputParameters xmlns:db="…">
<name>John Smith</name>
</db:InputParameters>
実行時の起動
BEGIN addEmployee (name=>?); END; // country => 'US'
入力にデフォルト設定されたパラメータの値が含まれている場合、次に示すように、デフォルト値ではなく、入力の値が使用されます。
入力
<db:InputParameters xmlns:db="…">
<name>John Smith</name>
<country>France</country>
</db:InputParameters>
実行時の起動
BEGIN addEmployee (name=>?, country=>?); END; // country => 'France'
DEFAULT句を持たないパラメータの省略
DEFAULT句を持つパラメータの場合、次の例に示すように、XSDの要素はパラメータがDEFAULT句を持つことを示す特殊タグで注釈付けされます。
<element name="country" … db:default="true" …/>
この新機能により、DEFAULT句を持たないパラメータの要素もインスタンスXMLから省略できます。このような場合も、パラメータはストアド・プロシージャの起動に含まれます。値NULLはデフォルトでバインドされます。どちらのパラメータもDEFAULT句を持っていない宣言の例を次に示します。
PROCEDURE addEmployee (name VARCHAR2, country VARCHAR2)
BPEL Process Managerリリース10.1.2では、インスタンスXMLに両方のパラメータの要素が必要でした。要素が省略されると、そのパラメータがプロシージャの起動に含まれないように、DEFAULT句を持つものとみなされました。この場合、パラメータが欠落しているため、プロシージャに渡された引数の数が不正であることを示すPL/SQLエラーとなります。
現行リリースのBPEL Process Managerでは、欠落しているパラメータがプロシージャの起動に含まれます。次の例のようにNULL値がバインドされます。
入力
<db:InputParameters xmlns:db="…">
<name>John Smith</name>
</db:InputParameters>
実行時の起動
BEGIN addEmployee (name =>?, country=>?); END; // country => NULL
countryの要素がインスタンスXMLで指定されていなくても、プロシージャのコールには出現します。この場合、countryはNULLとなります。
ラッパー・プロシージャを処理するDEFAULT句
ラッパーを生成する必要がある特殊な型がプロシージャに含まれている場合は、次の例に示すとおり、基のいずれかのパラメータのDEFAULT句はラッパーに引き継がれません。
PROCEDURE needsWrapper(isTrue BOOLEAN, value NUMBER DEFAULT 0)
この例のプロシージャがパッケージ外部のトップレベルで定義されている場合は、次のように、生成されたラッパーが表示されます。
TOPLEVEL$NEEDSWRAPPER (isTrue INTEGER, value NUMBER)
この例では、BOOLEAN型がINTEGERで置換されています。valueパラメータのDEFAULT句が欠落しています。現行リリースでは、元のプロシージャにDEFAULT句があった場合にも、生成されたラッパー・プロシージャのパラメータはDEFAULT句を持ちません。インスタンスXMLで要素が0にデフォルト設定されるかわりに欠落している場合、次の例に示すようにパラメータの値はNULLとなります。
入力
<db:InputParameters xmlns:db="…">
<isTrue>1</isTrue>
</db:InputParameters>
実行時の起動
BEGIN TOPLEVEL$NEEDSWRAPPER (isTrue =>?, value =>?); END; // value => NULL
この問題を修正するには、生成されたSQLファイルを編集してDEFAULT句をリストアできます。その後、SQLファイルを実行してラッパー定義をデータベース・スキーマにリロードする必要があります。また、生成されたXSDを変更してください。
needsWrapper()について生成されたラッパーでDEFAULT句を修正する手順は、次のとおりです。
生成されたラッパーSQLファイルで、次のようにシグネチャを変更します。
TOPLEVEL$NEEDSWRAPPER (isTrue INTEGER, value NUMBER)
変更後は次のようになります。
TOPLEVEL$NEEDSWRAPPER (isTrue INTEGER, value NUMBER DEFAULT 0)
前述の例で変更したラッパーSQLファイルを、適切なデータベース・スキーマにリロードします。DEFAULT句を持つBOOLEANパラメータの場合は、次のようにマップする必要があります。
DEFAULT TRUE(base) to DEFAULT 1 (wrapper)
DEFAULT FALSE (base) to DEFAULT 0 (wrapper)
たとえば、ベース・ストアド・プロシージャがPROCEDURE needsWrapper(isTrue BOOLEAN TRUE, value NUMBER DEFAULT 0)の場合、生成されたラッパーはTOPLEVEL$NEEDSWRAPPER (isTrue INTEGER, value NUMBER)となります。このストアド・プロシージャを、TOPLEVEL$NEEDSWRAPPER (isTrue INTEGER DEFAULT 1, value NUMBER DEFAULT 0)となるように手動で修正する必要があります。
パラメータがDEFAULT句を持つ場合は、XSD内の対応する要素に追加の属性db:default="true"が必要です。たとえば、DEFAULT句を持つパラメータTOPLEVEL$NEEDSWRAPPER(isTrue INTEGER DEFAULT 1, value NUMBER DEFAULT 0)の場合、XSDではisTrueおよびvalueの要素に次の新規属性が必要です。
<element name="ISTRUE" ... db:default="true" .../>
<element name="VALUE" ... db:default="true" .../>
この手順では、3つのinvokeアクティビティを構成します。
XMLファイルのgetOrderDetailsパートナ・リンクを起動することにより、receiveアクティビティから受信したオーダー詳細を取得します。
initLineRecパートナ・リンクを起動することにより、既存の発注を開始します。
OrderManagementパートナ・リンクを起動することにより、Oracle Applicationsで発注数量情報を更新します。
パートナ・リンクに対する最初のinvokeアクティビティを追加して、オーダー詳細を取得する手順は、次のとおりです。
Oracle JDeveloper BPEL Designerの「コンポーネント・パレット」で、「BPELコンストラクト」を展開します。最初の「invoke」アクティビティを、プロセス・ダイアグラムの中央スイムレーンの「receiveInput」アクティビティと「callbackClient」アクティビティの間にドラッグ・アンド・ドロップします。
invokeアクティビティをgetOrderDetailsサービスにリンクします。「Invokeの編集」ダイアログが表示されます。
invokeアクティビティの名前を入力し、「入力変数」フィールドの横にある「作成」アイコンをクリックして、新規変数を作成します。「変数の作成」ダイアログ・ボックスが表示されます。
「グローバル変数」を選択し、変数の名前を入力します。デフォルト名を受け入れることもできます。「OK」をクリックします。
「Invokeの編集」ダイアログで、「出力変数」フィールドの横にある「作成」アイコンをクリックして、新しい変数を作成します。「変数の作成」ダイアログ・ボックスが表示されます。
「グローバル変数」を選択し、変数の名前を入力します。デフォルト名を受け入れることもできます。「OK」をクリックします。
「適用」をクリックし、「Invokeの編集」ダイアログの「OK」をクリックして、invokeアクティビティの構成を終了します。
プロセス・ダイアグラムにinvokeアクティビティが表示されます。
パートナ・リンクに対する2番目のinvokeアクティビティを追加して、既存の発注を初期化する手順は、次のとおりです。
Oracle JDeveloper BPEL Designerの「コンポーネント・パレット」で、「BPELコンストラクト」を展開します。2番目の「Invoke」アクティビティを、プロセス・ダイアグラムの中央スイムレーンの最初の「invoke」アクティビティと「callbackClient」アクティビティの間にドラッグ・アンド・ドロップします。
invokeアクティビティをinitLineRecサービスにリンクします。「Invokeの編集」ダイアログ・ボックスが表示されます。
最初のinvokeアクティビティの手順で説明したステップ3から5を繰り返して、2番目のinvokeアクティビティを完了します。
パートナ・リンクに対する3番目のinvokeアクティビティを追加し、Oracle Applicationsでオーダー数量情報を更新する手順は、次のとおりです。
Oracle JDeveloper BPEL Designerの「コンポーネント・パレット」で、「BPELコンストラクト」を展開します。3番目の「Invoke」アクティビティを、プロセス・ダイアグラムの中央スイムレーンの2番目の「invoke」アクティビティと「callbackClient」アクティビティの間にドラッグ・アンド・ドロップします。
invokeアクティビティをOrderManagementサービスにリンクします。「Invokeの編集」ダイアログ・ボックスが表示されます。
最初のinvokeアクティビティの手順で説明したステップ3から5を繰り返します。
アプリケーション・コンテキストのヘッダー・プロパティの設定
BPELプロセスを完了するために必要なアプリケーション・コンテキストに渡す必要があるヘッダー・メッセージ・プロパティを設定するには、次の手順を使用します。
「Invokeの編集」ダイアログ・ボックスの「プロパティ」タブを選択します。
下にスクロールして、リストから「jca.apps.Username」プロパティを見つけて関連付けられている値フィールドをダブルクリックし、「アダプタ・プロパティ値」アイコンを有効化します。
アイコンをクリックして、選択した「jca.apps.Username」プロパティの「アダプタ・プロパティ値」ダイアログを開きます。
ヘッダー・メッセージ・プロパティの設定
「式」ラジオ・ボタンを選択し、プロパティ値として「'OPERATIONS'」を入力します。
「OK」をクリックします。
ステップ2からステップ4を繰り返して、「受注管理スーパーユーザー、Visionオペレーション (USA)」をjca.apps.Responsibilityに割り当てます。
「適用」をクリックして、「OK」をクリックし、invokeアクティビティを完了します。
transformアクティビティを使用して、入力変数と出力変数のパラメータを構成できます。変数値をOracle Applicationsで更新前に変換する必要がある場合にも、transformアクティビティを使用できます。
transformアクティビティを構成する手順は、次のとおりです。
transformアクティビティを追加する前に、次の手順を使用して変数を追加します。
「構造」パネルから、「ChangeOrderAPI.bpel」→「変数」→「プロセス」→「変数」フォルダを選択します。「変数」フォルダを右クリックして、ドロップダウン・メニューから「変数の作成」を選択します。
「変数の作成」ダイアログで、「変数名」フィールドにtemp_miss_lineと入力します。
「メッセージ・タイプ」ラジオ・ボタンを選択して、「メッセージ・タイプの参照」アイコンをクリックし、「タイプ・チューザ」を開きます。
「メッセージ・タイプ」→「プロジェクトのWSDLファイル」→「OrderManagement.wsdl」→「メッセージ・タイプ」から「args_in_msg」を選択します。「OK」をクリックして、「タイプ・チューザ」を閉じます。
「変数の作成」ダイアログの「メッセージ・タイプ」フィールドに、選択した情報が移入されます。
次の手順を使用して、transformアクティビティを構成します。
Oracle JDeveloper BPEL Designerの「コンポーネント・パレット」で、「Oracle Extensions」を展開します。プロセス・マップ・ウィンドウの中央スイムレーンに「Transform」をドラッグ・アンド・ドロップします。「Transform」アクティビティは、2番目と3番目の「Invoke」アクティビティの間に置く必要があります。
このtransformアクティビティは、initLineRecサービスの出力をOrderManagementサービスの入力に設定するために使用されます。
プロセス・マップで「Transform」をダブルクリックして「Transform」ダイアログを開きます。デフォルトで「トランスフォーメーション」タブが選択されています。
「一般」タブをクリックし、このtransformアクティビティにset_Miss_Lineという名前を付けます。
「トランスフォーメーション」タブで、「作成」アイコンをクリックして、「ソース変数」ダイアログを開きます。
「ソース変数」ダイアログ
「ソース変数」ドロップダウン・リストから「Invoke_initLineRec_OutputVariable」を選択し、「ソース・パート」値として「OutputParameters」要素を選択します。
「OK」をクリックします。
「ターゲット変数」ドロップダウン・リストから「Invoke_OrderManagement_InputVariable」を選択します。変数の「ターゲット・パート」値も選択されます。
「マッパー・ファイル」フィールドの横にある「作成」アイコンをクリックして新規のトランスフォーメーション・マッピング・ファイルを作成します。「マッパー・ファイル」では、XSLTマッパー・トランスフォーメーション・ツールを使用してマッピングを作成するファイルを指定します。
トランスフォーメーション・マッピング・ファイルが表示されます。デフォルトで「設計」ビューが表示されます。
「設計」ビューでパラメータ値を定義できます。文字列関数を「設計」領域にドラッグします。この関数を、値を定義する適切なパラメータに接続します。
たとえば、ソース変数のdb:OE_ORDER_PUB-24GET_G_MISS_LINEをターゲット変数のdb:P_LINE_TBL_ITEMにリンクします。
変数のマッピング
注意: ソース変数の入力パラメータ値を文字列関数で変換して、ターゲット変数の入力パラメータ値として使用できます。
「OK」をクリックして、ソース変数からターゲット変数へのマッピングを作成します。
getOrderDetailsサービスとinitLineRecサービスの出力をOrderManagementサービスの入力として渡すには、assignアクティビティを使用します。
assignアクティビティを追加する手順は、次のとおりです。
Oracle JDeveloper BPEL Designerの「コンポーネント・パレット」で、「BPELコンストラクト」を展開します。「Assign」アクティビティを、プロセス・ダイアグラムの中央スイムレーンの前に作成した「transform」アクティビティの直後にドラッグ・アンド・ドロップします。
「Assign」アクティビティをダブルクリックして、「Assignの編集」ダイアログにアクセスします。
「一般」タブをクリックして、assignアクティビティの名前を入力します。例: setOrderChanges。
「コピー・ルール」タブを選択してターゲット・ツリーを展開します。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Temp_miss_line」→「入力パラメータ」にナビゲートして、「ns4:P_LINE_TBL」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke_OrderManagement_InputVariable」→「入力パラメータ」にナビゲートして、「ns4:P_LINE_TBL」を選択します。
「OK」をクリックします。「Assignの編集」ダイアログ・ボックスが表示されます。
ソース・ノード(ns4:P_LINE_TBL)を、選択したターゲット・ノード(ns4:P_LINE_TBL)にドラッグします。 これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
パラメータの2番目のペアを入力します。
式アイコンをクリックして、「式ビルダー」ダイアログを呼び出します。
「式」ボックスに「UPDATE」と入力します。「OK」をクリックします。「From」ナビゲーション・ツリー・ノードと「To」ナビゲーション・ツリー・ノードの間の「Assignの編集」ダイアログの中央に、式値「UPDATE」を持つ「式」アイコンが表示されます。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「 Invoke_OrderManagement_InputVariable」→「入力パラメータ」→「P_LINE_TBL」→「P_LINE_TBL_ITEM」にナビゲートして、「ns4:OPERATION」を選択します。
式アイコンを指定したターゲット・ノード(ns4:OPERATION)にドラッグします。これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
パラメータの3番目のペアを入力します。
式アイコンをクリックして、「式ビルダー」ダイアログを呼び出します。「式」ボックスに「Update Order Quantity」と入力します。「OK」をクリックします。「From」ナビゲーション・ツリー・ノードと「To」ナビゲーション・ツリー・ノードの間の「Assignの編集」ダイアログの中央に、式値「Update Order Quantity」を持つ「式」アイコンが表示されます。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「 Invoke_OrderManagement_InputVariable」→「P_LINE_TBL」→「P_LINE_TBL_ITEM」にナビゲートして、「ns4:CHANGE_REASON」を選択します。
式アイコンを指定したターゲット・ノード(ns4:CHANGE_REASON)にドラッグします。これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
パラメータの4番目のペアを入力します。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「 Invoke_SyncRead_OutputVariable」→「入力パラメータ」→「P_LINE_TBL」→「P_LINE_TBL_ITEM」にナビゲートして、「ns4:LINE_ID」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「 Invoke_OrderManagement_InputVariable」→「P_LINE_TBL」→「P_LINE_TBL_ITEM」にナビゲートして、「ns4:LINE_ID」を選択します。
ソース・ノード(ns4:LINE_ID)を、選択したターゲット・ノード(ns4:LINE_ID)にドラッグします。 これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
パラメータの5番目のペアを入力します。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「 Invoke_SyncRead_OutputVariable」→「入力パラメータ」→「P_LINE_TBL」→「P_LINE_TBL_ITEM」にナビゲートして、「ns4:ORDERED_QUANTITY」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「 Invoke_OrderManagement_InputVariable」→「P_LINE_TBL」→「P_LINE_TBL_ITEM」にナビゲートして、「ns4:ORDERED_QUANTITY」を選択します。
ソース・ノード(ns4:ORDERED_QUANTITY)を、指定したターゲット・ノード(ns4:ORDERED_QUANTITY)にドラッグします。 これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
「適用」をクリックして、「OK」をクリックし、assignアクティビティの構成を完了します。
BPELプロセスを使用したSOAコンポジット・アプリケーションを設計したら、次の手順はそれをデプロイ、実行および監視することです。
SOAコンポジットに含まれるBPELクライアントからサービスを起動するには、Oracle WebLogic管理対象サーバーにSOAコンポジットをデプロイする必要があります。それにはOracle JDeveloperが使用できます。コンポジットをデプロイしたら、Oracle Enterprise Manager Fusion Middleware Controlコンソールからテストできます。
前提条件
Oracle JDeveloperを使用してBPELプロセスとともにSOAコンポジットをデプロイする前に、設計時環境とランタイム・サーバーとの間の接続を確立する必要があります。詳細は、「Oracle WebLogic Serverのデータ・ソースの構成」と「アプリケーション・サーバーの接続の作成」を参照してください。
注意: WebLogic Serverのローカル・インスタンスを使用する場合は、Oracle JDeveloperから「実行」→「サーバー・インスタンスの起動」を選択して、WebLogic Serverを起動します。WebLogic Admin Serverの「DefaultServer」インスタンスが正常に起動されると、「実行中: DefaultServer」および「メッセージ」ログに「<サーバーが実行モードで起動されました」および「DefaultServerが起動されました」というメッセージが表示されます。
BPELプロセスを使用したSOAコンポジット・アプリケーションをデプロイする手順は、次のとおりです。
「アプリケーション」ウィンドウでSOAコンポジット・プロジェクトを選択します。
プロジェクト名を右クリックし、表示されるメニューから「デプロイ」→[プロジェクト名]→[serverConnection]を選択します。
接続が適切にセットアップされていれば、たとえば、「デプロイ」→「ChangeOrderAPI」→「soa-server1」を選択してプロセスをデプロイできます。
SOAコンポジット・アプリケーションのデプロイ
注意: サーバー接続を初めてセットアップすると、「デプロイメント・アクション」ウィンドウが表示されます。「アプリケーション・サーバーにデプロイ」を選択して、「次へ」をクリックします。
「構成のデプロイ」ウィンドウで、次の情報が選択されていることを確認してから「次へ」をクリックすると新しいアプリケーション・サーバーが追加されます。
新規リビジョンID: 1.0
コンポジット・リビジョンをデフォルトとしてマークします: このチェック・ボックスを選択します。
同じリビジョンIDで既存のコンポジットを上書きします: このチェック・ボックスを選択します。
JDeveloperからOracle WebLogic Server接続を新規作成する手順は、「アプリケーション・サーバー接続の作成」に記載されています。
「サーバーの選択」ページで、前に確立したサーバー接続「soa-server1」を選択します。「次」をクリックします。
「SOAサーバー」ページでデフォルトのターゲットSOAサーバー('soa-server1')の選択を受け入れます。
「次へ」をクリックし、「終了」をクリックします。
Oracle JDeveloperセッションからコンポジットを初めてデプロイする場合は、「認証リクエスト」画面が表示されます。Oracle SOA Suiteのインストール中に、指定されたユーザー名とパスワードを入力します。「OK」をクリックします。
デプロイメント処理が開始されます。「SOA - ログ」ウィンドウと「デプロイメント - ログ」ウィンドウでデプロイメントの進行とコンパイルの成功を確認します。
SOAコンポジット・アプリケーションに含まれるBPELプロセスを一度デプロイしたら、Oracle Enterprise Manager Fusion Middleware Controlコンソールからプロセスを管理および監視できます。また、プロセスを手動で開始して、プロセスと統合インタフェースをテストすることもできます。
BPELプロセスを使用したデプロイ済SOAコンポジット・アプリケーションをテストする手順は、次のとおりです。
Oracle Enterprise Manager Fusion Middleware Controlコンソールにナビゲートします(http://<サーバー名>:<ポート番号>/em)。デプロイしたコンポジットが「アプリケーション・ナビゲーション」ツリーに表示されます。
ユーザー名(weblogicなど)とパスワードを入力して、「ログイン」をクリックし、ファームにログインします。
複数のターゲットOracle Enterprise Manager Fusion Middleware Controlコンソール・ファームがある場合は、適切なターゲット・インスタンス・ファームを選択する必要がある場合があります。
ファームのベース・ドメインで、「SOA」→「soa-infra」を展開して、SOAインフラストラクチャ・ホーム・ページとメニューをナビゲートし、その管理対象サーバーのSOAインフラストラクチャで実行されているデプロイ済のSOAコンポジット・アプリケーションにアクセスします。
注意: 「ファーム」メニューは常にナビゲータの最上部に表示されます。ナビゲータで「SOA」フォルダを展開し、その下に表示されるリンクをクリックすると、ページの最上部で「SOAインフラストラクチャ」メニューを使用できるようになります。
SOAインフラストラクチャから、開始するSOAコンポジット・アプリケーション(「ChangeOrderAPI」など)をクリックします。
デプロイ済SOAコンポジットの表示
ページの最上部で「テスト」をクリックします。
インスタンスを起動するための「Webサービスのテスト」ページが表示されます。「入力引数」セクションで使用するXMLペイロード・データを指定できます。
プロセスに必要な入力文字列を入力して、「Webサービスのテスト」をクリックし、プロセスを起動します。
Webサービスのテスト
完了すると、「レスポンス」タブにテスト結果が表示されます。
SOAコンポジット・アプリケーション名をクリックしてから、「インスタンス」タブをクリックします。最後にページのデータがリフレッシュされてからの各インスタンスのSOAコンポジット・アプリケーション・インスタンスID、名前、対話ID、および最新の状態が表示されます。
「インスタンスID」列で特定のインスタンスIDをクリックすると、様々なサービス・コンポーネントとバインディング・コンポーネントのメッセージ・フローが表示されます。「フローのトレース」ページが表示されます。
「トレース」セクションに、一連のメッセージ・フロー(サービス・バインディング・コンポーネント(changeorderapi_client_ep)、BPELコンポーネント(ChangeOrderAPI)および参照バインディング・コンポーネント(getOrderDetails、initLineRecおよびOrderManagement))が表示されます。関連するすべてのコンポーネントが、メッセージを正常に受信および処理しました。
「フローのトレース」ページ
BPELサービス・コンポーネント・インスタンスのリンク(ChangeOrderAPIなど)をクリックすると、「インスタンス」ページが表示され、「監査証跡」タブで、BPELアクティビティの実行詳細を表示できます。
BPELプロセス・フロー・ダイアグラムを確認するには、フロー・タブをクリックします。アクティビティの詳細およびプロセス全体のペイロードのフローを表示するには、プロセス・ダイアグラムのアクティビティをクリックします。
SQLを使用したレコードの検証
Oracle Applicationsにレコードが書き込まれたことを確認するには、SQL文(select l.ordered_quantity from oe_order_lines_all l,oe_order_headers_all h where h.orig_sys_document_ref='<ORDER_ID> and h.header_id=l.header_id)を記述し、ordered_quantityがchangeorder_data.xmlドキュメントに指定された値と同じであることを示す結果をフェッチします。
Oracle Applicationsでのレコードの検証
または、「受注管理スーパーユーザー、Visionオペレーション (USA)」職責でOracle Applicationsの特定のモジュールを確認します。
Oracle Order Managementで検証する手順は、次のとおりです。
フォームベースのOracle ApplicationsにOrder Managementの「スーパーユーザー」職責でログオンします。
「受注、 返品」→「受注」を選択します。受注フォームが開きます。
「顧客発注番号」フィールドにオーダー番号を入力して、オーダーを検索します。これにより、新しく作成されたオーダーの詳細が表示されます。
「明細項目」タブを選択して、オーダーの数量を確認します。changeorder_data.xmlファイルに設定された数量と同じである必要があります。
PL/SQL API統合で問題が発生した場合は、次のトラブルシューティング手順を実行します。
Oracle Applications環境のインスタンスでPL/SQL API統合を設計し、別のインスタンスで実行する場合は、2番目のインスタンスでSQLスクリプトを再実行して、必要なPL/SQLラッパーを作成します。
weblogic-ra.xmlのJNDIの位置が正しく構成されていることを確認します。
アダプタのロギングを有効化して、ミドルウェア側に問題がないか確認します。Adapter for Oracle Applicationsでロギングを有効化する方法の詳細は、「アダプタのロギングの有効化」を参照してください。
Copyright © 2005, 2013, Oracle and/or its affiliates. All rights reserved.