Oracle Fusion Middleware Oracle E-Business Suite Adapterユーザーズ・ガイド 12c (12.2.1.2.0) 部品番号E82667-01 | 目次 | 前 | 次 |
この章では、Oracle E-Business Suite Adapterの基本的な概念について説明します。アプリケーションのコンテキスト、セキュリティ、ロギングおよびフレックスフィールドがどのように使用またはサポートされるかと、エラーと例外がどのように処理されるかについて、基本的な知識を提供します。この章で詳細を説明する概念は次のとおりです。
Oracle E-Business Suiteとのインタフェースを起動するには、アプリケーションのコンテキストが必要です。アプリケーション・コンテキストは、「ユーザー名」、「職責」、「職責アプリケーション」および「セキュリティ・グループ」を組み合せたものです。これらの要素は、Oracle E-Business Suiteとのインタフェースを正しく確立するために必要になることがあります。
複数の組織と組織間のリレーションシップは、Oracle E-Business Suiteの単一インストールで定義できます。これらの組織には、会計帳簿、ビジネス・グループ、法的エンティティ、営業単位または在庫組織があります。
各階層の最上位のビジネス・グループを使用して、複数レベルの組織階層を定義できます。新しい組織を定義すると、現在のセッションに関連付けられたビジネス・グループに自動的に割り当てられます。各組織はビジネス・グループに属しています。通常、ビジネス・グループは企業の組織図の最上部にあるボックスです。
ビジネス・グループ階層
次の図に示すように、複数レベルの会社構造を作成するには、Oracle E-Business Suiteの会計、配布および資材管理の各機能を使用して、在庫組織、営業単位、法的エンティティおよび会計帳簿間のリレーションシップを定義します。
複数組織トランザクション
フランスの営業所とドイツの倉庫という、社内の2つの異なる組織を考えてみましょう。顧客からの発注トランザクションが存在します。この図は発注から搬送までの全体的なプロセスを示しています。
顧客がフランスの営業所に発注します。
ドイツの倉庫が顧客へ製品出荷を行います。
ドイツの倉庫がフランスの営業所に会社間請求書を発行します。
フランスの営業所がドイツの倉庫に会社間支払を実行します。
フランスの営業所が顧客に顧客請求書を送付します。
顧客がフランスの営業所に支払を実行します。
データベース・アーキテクチャは、複数組織インストールでも非複数組織インストールでも同じであり、標準のインストール・ツール機能が使用されます。この機能により、ベース製品表ごとにAPPSスキーマにシノニムが自動的に作成され、ベース製品表と同じ名前を使用してこれらのシノニムが定義されます。たとえば、PO OracleスキーマにはPO_HEADERS_ALLという名前の表があり、APPSスキーマには同じ名前の対応するシノニムPO_HEADERS_ALLがあります。PO_HEADERS_ALLシノニムを使用すると、パーティション化されていないデータにアクセスできます。
スキーマ・シノニム
営業単位別複数組織アクセス制御(MOAC)セキュリティ
システム・プロファイル値の設定時、ユーザー名と職責は組織単位または営業単位と関連付けます。
複数組織システム・プロファイル
ユーザーがアクセス権のある営業単位についてアクセス権を許可したりデータの報告を行ったりするためのセキュリティ保護された方法を設定するため、Oracle E-Business Suiteの多くのインタフェースではMOACセキュリティ機能を使用して営業単位のアクセス権限を決定し、関連プロファイル値に基づいて組織IDを設定します。Oracle E-Business Suite Adapterは必須のMOAC設定を暗黙的に実行できます。ORG_IDを渡すと、データのアクセスは渡されたOrganization IDに設定されます。
MOACでは、システム管理者はアクセス権限の範囲をセキュリティ・プロファイルに事前定義でき、その後、プロファイル・オプションMO: Security Profileを使用して、セキュリティ・プロファイルを職責に関連付けます。この方法を使用することにより、複数営業単位がセキュリティ・プロファイルと関連付けられ、そのセキュリティ・プロファイルが職責に割り当てられます。したがって、ユーザーはセキュリティ・プロファイルのアクセス制御を介して職責を変更することなく、複数営業単位のデータにアクセスできます。
セキュリティ・プロファイルは、組織階層に基づいて定義します。たとえば、アメリカとイギリスの営業単位で構成される販売会社があるとします。アメリカの販売会社には西部地域販売と東部地域販売があります。販売統括者はアメリカとイギリスの両方の販売に職責があり、管理者はアメリカまたはイギリスのいずれかに職責があり、販売担当は指定された販売地域にのみ職責があります。販売組織階層は次のようになります。
販売組織階層
会社内の販売データをセキュリティ保護するために、事前定義済のセキュリティ・プロファイルに関連営業単位を関連付けできます。たとえば、すべての販売データのアクセス権限がVision Salesセキュリティ・プロファイルにグループ化されています。アメリカ販売セキュリティ・プロファイルはアメリカ関連データ用に作成され、地域セキュリティ・プロファイルは指定地域データ用に作成されています。システム管理者は、複数の営業単位を含むこれらのセキュリティ・プロファイルを適切な職責を介してユーザーに関連付けることができます。したがって、販売管理者は、その職責を変更することなく東部または西部地域の販売データに容易にアクセスできます。次の図は、この販売会社のセキュリティ・プロファイル、職責および営業単位間の関係を示しています。
セキュリティ・プロファイル、職責および営業単位間の関係図
職責によって決まる営業単位
職責は、その関連付けられているセキュリティ・プロファイルが営業単位にリンクしているため、どの営業単位にアクセス権があるかは職責がキーとなって決まります。
PL/SQL APIまたはコンカレント・プログラムを使用してOracle E-Business Suiteと統合する場合、アプリケーションのコンテキストは、「ユーザー名」、「職責」、「職責アプリケーション」および「セキュリティ・グループ」の各ヘッダー・プロパティに渡される値に基づいて設定されます。
注意: 下位互換性維持のため、「職責アプリケーション」、「セキュリティ・グループ」または「NLS言語」ヘッダー・プロパティが渡された場合を除いて、コンテキスト関連の例外またはエラーはスローされません。
MOAC設定は、ユーザーが所属する「職責アプリケーション」に基づいて行われます。Organization IDを渡すと、組織のアクセスは渡された組織に設定されます。
ユーザーが希望の言語でインタフェースを起動する必要がある場合は、ヘッダー・プロパティ「NLS言語」を渡すことができます。「NLS言語」のデフォルト値は、Oracle E-Business Suite内のユーザーのプリファレンスで指定された言語です。
ビジネス・プロセスをOracle E-Business Suiteと統合するためには、ヘッダー・プロパティを通じてOracle E-Business Suite Adapterが提供する柔軟なメカニズムを通じて、これらのアプリケーションのコンテキスト値を伝播することが不可欠です。
この項の内容は、次のとおりです。
BPELプロセスで必要なアプリケーション・コンテキスト値を効果的に設定したり、XML Gatewayインバウンド・トランザクションが正常に完了するために必須のヘッダー・プロパティを移入するために、Oracle E-Business Suite Adapterには柔軟なメカニズムが備えられています。それぞれのコンテキスト値やヘッダー変数はこのメカニズムによって設定され、invokeアクティビティによってアダプタ・ユーザー・インタフェースに直接渡されます。このメッセージの正規化機能により、ヘッダー・サポート上の柔軟なソリューションが提供されるだけでなく、ヘッダー値を渡すときにassignアクティビティを使用しないことによって設計時タスクが簡易化されます。
アプリケーション・コンテキストのメッセージ・プロパティの設定
次のヘッダー・プロパティは、PL/SQLおよびコンカレント・プログラムのインタフェースでアプリケーションのコンテキストを設定するために使用します。
jca.apps.Username
jca.apps.Responsibility
jca.apps.ORG_ID
jca.apps.RespApplication
jca.apps.SecurityGroup
注意: 以前のリリースで使用されている既存のヘッダー・プロパティは、入力として「職責キー」および「職責名」を使用できるようになりました。ヘッダー・プロパティjca.apps.NLSLanguageが設定されており、かつ「職責名」が渡される場合、jca.apps.Responsibilityに渡される値は同じ言語で記述されていることが想定されます。ただし、「職責キー」およびその他のヘッダー・プロパティは言語非依存です。
アプリケーション・コンテキストを設定するために、これらのすべてのヘッダー・プロパティを同時に使用する場合があります。または、「ユーザー名」および「職責」のみを渡すと、以前のリリースと同様に処理されます。
NULLまたは空の値の場合は、デフォルトの「ユーザー名」は「SYSADMIN」、デフォルトの「職責」は「システム管理者」、デフォルトの「セキュリティ・グループ・キー」は「標準」およびデフォルトの「NLS言語」は「US」となります。
XML Gatewayインバウンド・トランザクションのメッセージ・プロパティの設定
XML Gatewayのインバウンド・トランザクションおよびエンキュー・トランザクションに必要なXML Gateway情報の設定には、次のヘッダー・メッセージ・プロパティが使用されます。
jca.apps.ecx.TransactionType
jca.apps.ecx.TransactionSubtype
jca.apps.ecx.PartySiteId
jca.apps.ecx.MessageType
jca.apps.ecx.MessageStandard
jca.apps.ecx.DocumentNumber
jca.apps.ecx.ProtocolType
jca.apps.ecx.ProtocolAddress
jca.apps.ecx.Username
jca.apps.ecx.Password
jca.apps.ecx.Attribute1
jca.apps.ecx.Attribute2
jca.apps.ecx.Attribute3
jca.apps.ecx.Attribute4
jca.apps.ecx.Attribute5
jca.apps.ecx.Payload
Oracle E-Business Suite Adapterでは、次の手順に従って、メッセージの正規化をサポートするための設計時タスクを完了します。
このアクティビティでは、次のタスクを実行します。
「一般」タブでの基本情報の構成:
invokeアクティビティを、作成したパートナ・リンクにリンクすることで構成します。これにより、「Invokeの編集」ダイアログ・ボックスの「一般」タブが開きます。このタブに、「パートナ・リンク」および「操作」情報が移入されています。
invokeアクティビティの入力変数と出力変数を作成できます。
指示の詳細は、「一般」タブでの基本情報の構成を参照してください。
「プロパティ」タブでのヘッダー・メッセージ・プロパティの設定:
これにより、次の目的のために必要なメッセージ・プロパティを設定できます。
インバウンド・トランザクションに対してXML Gatewayのヘッダー変数を設定します。
たとえば、最初にXML Gatewayのヘッダー・プロパティjca.apps.ecx.TransactionTypeを見つけて、選択したプロパティに対する値('PO'など)を入力します。
プロパティの選択
指示の詳細は、「ECXヘッダー・メッセージ・プロパティの設定」を参照してください。
アプリケーション・ユーザー、職責およびユーザー関連の組織情報を識別するために、Oracle E-Business Suiteのアプリケーション・コンテキストを設定します。
たとえば、jca.apps.Usernameプロパティをプロパティ・リストから見つけて、プロパティ値として'OPERATIONS'と入力します。
指示の詳細は、「アプリケーション・コンテキストのヘッダー・プロパティの設定」を参照してください。
Oracle E-Business Suite Adapterでは、Organization IDを、invokeアクティビティの「プロパティ」タブのjca.apps.ORG_IDとして設計時に使用可能なヘッダー・プロパティとして渡すことができます。
リリース12.0以降のOracle E-Business Suiteでは、MOAC設定はMO_GLOBAL.INIT(<Application Name>)コールを使用して自動的に行われます。続いて、ORG_IDが渡された場合、組織による特定のORG_IDへのアクセスを設定するために、MO_GLOBAL.set_policy_context('S', <ORG_ID>)へのコールが行われます。
ヘッダー・メッセージ・プロパティの設定
「複数組織の設定の例」に示した例では、フランスの営業所で変更オーダーが処理されると、フランス営業所の営業マネージャがシステムにログオンしてオーダーを更新します。これにより、その変更に関するPL/SQL APIが起動します。ヘッダーに含まれる組織IDにプロパティ値(フランス営業所を表す207など)が割り当てられていれば、営業マネージャに関連付けられている組織IDがフランス営業所に設定され、APIの起動に使用されます。
前に説明したメッセージの正規化機能およびOracle E-Business Suiteの複数言語サポート(MLS)機能を利用することにより、Oracle E-Business Suite Adapterには、適切な言語を実行時に動的に設定できる包括的な言語サポート・メカニズムが備えられています。
「NLS言語」プロパティ値の優先
アプリケーション・ユーザーがAPIの実行中にシステムからトランザクション・データを取得したり、エラー・メッセージを受信すると、データやエラー・メッセージのセッション言語は次の条件に基づいて決定されます。
「NLS言語」の値は、ヘッダー・プロパティjca.apps.NLSLanguageを使用して設定できます。有効な言語の値が渡される(すなわち、言語がOracle E-Business Suiteインスタンスで有効化されている)場合、セッション言語は対応する言語に設定されます。
「NLS言語」ヘッダー・プロパティが渡されない場合、Oracle E-Business Suite Adapterは、セッション言語を設定するために、ユーザー作業環境に基づくユーザーのデフォルト言語を使用します。
ユーザーのデフォルト言語が見つからないか、または設定されていない場合、「NLS言語」(jca.apps.NLSLanguage)プロパティ値は「US」(アメリカ)に設定されます。
このメカニズムにより、適切なセッション言語が最初に「NLS言語」プロパティ値に基づいて実行時に動的に設定され、その後、ユーザーのデフォルト言語に基づいて設定されて、最後にデフォルトの「NLS言語」プロパティ値「US」によって決定されます。
jca.apps.NLSLanguageを使用した「NLS言語」プロパティ値の設定方法は、「正規化されたメッセージ・プロパティのサポート」を参照してください。
ユーザーのデフォルト言語の決定
データの問合せや取得にデータベース・セッションで使用されるデフォルトの言語を特定するために、Oracle E-Business Suite Adapterは、ユーザー、職責、アプリケーションおよびサイトを含むすべてのレベルでICX: Languageプロファイル・オプションを調べます。これらのレベルのいずれにも設定されていない場合、Oracle E-Business Suite Adapterは、データベース・インスタンスNational Language Support (NLS)パラメータからNLS_LANGUAGEパラメータを取得します。セッションで初期化されているNLSパラメータは次のとおりです。
NLS_LANGUAGE
NLS_SORT
NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_NUMERIC_CHARACTERS
NLS_TERRITORY
たとえば、デフォルト言語が日本語のユーザーがシステムにログインして、BPELプロセスのパートナ・リンクでユーザーが定義したAPIを実行してトランザクションを実行する場合、Oracle E-Business Suite Adapterでは、最初に「NLS言語」プロパティ値が渡されているかどうかが検査されます。有効な言語が渡される場合、セッション言語は、デフォルト言語に関係なく、渡された値に基づいて設定されます。「NLS言語」プロパティが渡されない場合、Oracle E-Business Suite Adapterでは、セッション言語がユーザー優先言語またはデフォルト言語に設定されます。それらの言語が見つからない場合、言語は「US」(アメリカ)となります。デフォルト言語はOracle E-Business Suiteの「一般作業環境」ページで設定します。
注意: 「一般作業環境」ページで設定したデフォルト言語によって、ICX: Languageプロファイル・オプションが更新されます。
アプリケーション・コンテキストが設定されている場合、ユーザー作業環境(日付書式やタイムゾーンなど)が自動的に考慮される場合があります。
ユーザー・プリファレンス設定の詳細は、Oracle E-Business Suiteユーザーズ・ガイドの「Oracle E-Business Suiteスタート・ガイド」の章にあるプリファレンス設定に関する項を参照してください。
これまで、Oracle Applicationsモジュール・ブラウザと呼ばれていたOracle E-Business Suiteモジュール・ブラウザはOracle E-Business Suite Adapterの主要コンポーネントです。Oracle Integration Repositoryを介して利用できるインタフェースに加え、Oracle E-Business Suite Adapterは、ビジネス・イベントやイベント・グループ、カスタムPL/SQL API、カスタムXML Gatewayマップの利用を可能にします。これらはすべてOracle E-Business Suiteモジュール・ブラウザを使用して確認できます。
パートナ・リンクの定義に必要なインタフェースを選択するには、モジュール・ブラウザを使用します。次のように使用して、目的のインタフェースを見つけることができます。
「検索」でインタフェースを見つける
「参照」でインタフェースを見つける
インタフェースの検索
目的のインタフェース名またはワイルドカード文字を含む部分値を「オブジェクト名」フィールドに入力し、「検索」をクリックして、目的のインタフェースをModule Browser上で見つけます。
Oracle E-Business Suiteモジュール・ブラウザを介したインタフェース検索
ツリー構造を介したインタフェース参照
モジュール・ブラウザは、Oracle統合リポジトリからのインタフェース・データを、Oracle E-Business Suite Adapterでサポートされるその他のインタフェースに関する情報と組み合せます。
ツリー構造の展開によるインタフェース参照
サポートされているインタフェースは、次のようなツリー階層に整理されます。
ProductFamilies
|-[product_family]
| |-[product]
| |-[business_entity]
| |-XML Gateway ([n])
| |-EDI ([n])
| |-PLSQL ([n])
| | |-[package_name]
| |-OpenInterfaces ([n])
| |-[OpenInterface_name]
| |-Tables ([n])
| |-Views ([n])
| |-ConcurrentPrograms ([n])
|-Other Interfaces
|-Business Events
|-Inbound
|-Outbound
|-Groups
|-[business event name]
|-Custom Objects
|-PLSQL APIs
| |-[package_name]
|-XMLGateway Maps
|-Inbound
|-Outbound
|-Concurrent Programs
|-[concurrent program name]
「その他インタフェース」の下にある項目、および[product family]階層の下にある特定のPL/SQL APIとコンカレント・プログラムは、Oracle E-Business Suite Adapterを介して使用することはできますが、Oracle Integration Repositoryを介して使用することはできません。
[n]によって示されるインタフェース数は、Oracle E-Business Suite 11.5.10インスタンスが使用されている場合にのみ表示されます。Oracle E-Business Suiteリリース12のインスタンスに接続している場合には表示されません。
製品ファミリによるインタフェース参照
Oracle Integration Repositoryインタフェース・データは、[product_family]セクションを移入し、所属する製品およびビジネス・エンティティに従ってグループ化します。
製品ファミリによるインタフェース参照
「その他インタフェース」以下でのビジネス・イベントとカスタム・インタフェースの参照
ビジネス・イベントとカスタム・インタフェースは、「その他インタフェース」ノードの下に表示されます。
その他インタフェースの参照
ビジネス・イベントとビジネス・イベント・グループ
ビジネス・イベントとビジネス・グループは、Oracle E-Business Suiteモジュール・ブラウザの「その他インタフェース」ノードの下にあります。
ビジネス・イベント・グループは、個別のビジネス・イベントのセットが含まれるイベント・タイプです。「その他インタフェース」→「ビジネス・イベント」→「アウトバウンド」→「グループ」ノードをクリックすると、ビジネス・イベント・グループが表示されます。
ビジネス・イベント・グループの表示
カスタム・インタフェース
カスタム・インタフェースは、Oracle E-Business Suiteモジュール・ブラウザで「その他インタフェース」→「カスタム・オブジェクト」ノードの下に表示されます。
カスタム・インタフェースの参照
サポートされているカスタム・インタフェースは、次のようにリストされます。
カスタムPL/SQL API
カスタムPL/SQL APIは、2箇所に表示されます。
Oracle Integration Repositoryを介してすでに公開されているパッケージ内のプロシージャは、製品ファミリ階層内のパッケージ名の下に表示されます。
完全に新しいパッケージ内のプロシージャは、「その他インタフェース」→「カスタム・オブジェクト」の下のパッケージ名の下に表示されます。
カスタムXML Gatewayマップ
カスタムXML Gatewayマップはインバウンドとアウトバウンドのいずれかに分類されます。カスタムXML Gatewayマップを表示するには、いずれかのノードを選択します。
カスタマイズされたコンカレント・プログラム
「カスタム・オブジェクト」ノードの下にある「コンカレント・プログラム」ノードをクリックすると、すべてのカスタム・コンカレント・プログラムが表示されます。
セキュリティは、アプリケーション・コンテンツを不正アクセスから保護するように設計された、最も重要な機能です。Oracle User Managementのセキュリティ・メカニズムを活用して、Oracle E-Business Suite Adapterは、認証された特権を持つユーザーのみに、BPELプロセスを通じて公開されたAPIを実行し、Oracle E-Business Suite Adapterを更新する許可を与えるためのセキュリティ機能を提供します。この機能により、不正アクセスやセキュリティ・チェックなしの実行からApplication Program Interface(API)が保護されます。
ロールベースのアクセス制御(RBAC)を使用した機能セキュリティ
機能セキュリティは、Oracle E-Business Suiteにおける基本的なアクセス制御です。システム内の個々のメニューとメニュー・オプションへのユーザー・アクセスを、行内にどのアプリケーション・データがあるかに関係なく制限します。APIは、Oracle E-Business Suiteでのデータの挿入と更新を可能にするストアド・プロシージャなので、APIにアクセスする時に、機能セキュリティ・レイヤーを強制すると、実際、Oracle E-Business Suiteアプリへのデータ・アクセスが暗黙的に制限されます。
データ・セキュリティは機能セキュリティ上に構築され、特定のデータ・レコードのセキュリティをモデリングまたは強制するためにセキュリティ制御の追加のレイヤーを提供します。言い換えると、データ・セキュリティは、アプリケーションのレコードへのアクセスのセキュリティをさらにデータ・レベルにまで細かくします。
セキュリティ制御に粒度を持たせ、APIの実行を正しい権限を持つ適切なユーザーのみに許可するようにするために、Oracle E-Business Suite AdapterではOracleユーザー管理のロールベースのアクセス制御セキュリティ(RBAC)を利用して、ユーザー・ロールを介することで機能セキュリティを強化します。ユーザーがAPIにアクセスできるかどうかは、ユーザーに付与されたロールで決まります。このアプローチはデータ・セキュリティと機能セキュリティを踏まえたものですが、その両方の範囲を超えた内容になっています。
ロールベースのアクセス制御を使用した機能セキュリティ
Oracle E-Business Suite Adapterにおけるセキュリティのしくみについて理解を深めるため、このセクションには次のトピックが含まれています。
Oracle E-Business Suite Adapterで、オーバーロードされたPL/SQL APIのアクセス制御を扱う方法が提供されるようになりました。この機能は統合リポジトリのユーザー・インタフェースから作成された権限付与と連動し、どのプロファイル・オプションにも依存しません。
注意: このセキュリティ・サポートは、統合リポジトリ内で使用可能なすべてのインタフェースで機能します。その他のインタフェースについては、「プロファイル・オプションを介した機能セキュリティのサポート」で説明するプロファイル・オプションを使用して、機能セキュリティを有効にする必要があります。
このため、2つの新しいJCAプロパティが導入されています。
DataSecurityCheck
IRepOverloadSeq
ユーザーが機能セキュリティ認可チェックの実行を希望する場合、次のプロパティ情報をWSDLファイル(XX_apps.jca)に追加する必要があります。
<property name="DataSecurityCheck" value="yes"/>
ただし、もう一方のプロパティIRepOverloadSeqは、設計時、パートナ・リンク作成中にOracle E-Business Suite Adapterによって自動的に導出されます。これらの2つのプロパティに基づき、ヘッダー・プロパティとして渡されるユーザー名に対して機能セキュリティ・チェックが実行されます。
統合リポジトリを介したセキュリティ権限付与の作成
オーバーロードされた機能に対するこのタイプのデータ・セキュリティ・チェックは、統合リポジトリのユーザー・インタフェースで作成されたセキュリティ権限付与と連動します。このセキュリティ権限付与を特定のインタフェース・タイプについて「付与の作成」ページで実行すると、メソッドを非常に粒度の高いレベルで制御できます。
統合リポジトリ管理者は、PL/SQL APIで1つ以上のメソッドを選択してから、選択したメソッドをユーザー、ユーザー・グループまたはすべてのユーザーが実行できるように、適切なセキュリティ権限付与を作成して認証できます。
統合リポジトリ内でのセキュリティ権限付与の作成
統合リポジトリのユーザー・インタフェースでは、インタフェースに含まれるオーバーロードされた機能はそれぞれ、「付与の作成」機能を使用して特定のユーザー、ユーザー・グループまたはすべてのユーザーに個別に付与できます。「プロシージャとファンクション」領域(または「メソッド」領域)で2つ以上のオーバーロードされた機能を選択した場合、「付与の作成」ページで選択したメソッドの表に「過負荷」列が表示され、2つ以上のオーバーロードされた機能が付与用に選択されていることを示します。
統合リポジトリのユーザー・インタフェースを使用してセキュリティ権限付与を作成する方法の詳細は、Oracle E-Business Suite統合ゲートウェイ実装ガイドの「ネイティブ統合インタフェースとサービスの管理」の章にあるセキュリティ権限付与の管理に関する項を参照してください。
セキュリティ・アクセス制御は、ロールベースのアクセス制御セキュリティ(RBAC)における機能セキュリティに基づいてユーザー・ロールを介して定義され、ユーザーがAPIにアクセスできるかどうかがユーザーに付与されたロールで決まります。ロールは、ユーザーが特定の機能を実行するために必要な職責、権限、権限セットおよび機能セキュリティ・ポリシーを一元管理するように構成できます。これにより、ユーザー権限の一括更新が簡素化されます。新しい権限セットを自動継承するロールを使用することで、変更を実施できるためです。ジョブ機能に基づいて、各ロールに特定の権限(または必要な場合は権限セット)を割当てできます。たとえば、調達組織には「購買担当」ロール、「購買管理者」ロールおよび「購買サポート」ロールなどを組み込むことができます。「購買管理者」ロールには発注(PO)作成、発注変更および契約発注関連のAPIすべてを含む権限セットを組み込み、「購買担当」ロールや「サポート」ロールにはアクセス権限を与えないジョブ機能の実行をこのロールに許可するなどが可能です。
Oracle E-Business Suite Adapterでは、Oracle Integration Repositoryにある注釈付きのAPIはFND_FORM_FUNCTIONS表に登録されており、機能セキュリティ(FND_FORM_FUNCTIONS)が適用可能です。これにより、各APIについて、セキュリティ保護された機能を作成できます。
Oracle E-Business Suite Adapterでは、権限セットの概念を使用して、関連するAPIを1つの権限セット下にまとめ、順序付けできます。各権限セットを機能ロールに関連付け、セキュリティ権限付与を介してユーザーに割り当てることができます。
機能セキュリティの有効化
Oracle E-Business Suite Adapterでは、このセキュリティ・サポートをオプション機能として提供しています。すべてのログイン・ユーザーがセキュリティ・チェックなしでAPIにアクセスし実行できるようにする場合は、「BPEL用EBSアダプタ、機能セキュリティ使用可能(EBS_ADAPTER_FUNCTION_SEC_ENABLED)」プロファイル・オプションを使用して、この機能を無効にできます。
注意: セキュリティ権限付与を作成することは容易で、どのプロファイル・オプションにも依存しないため、統合リポジトリにリストされたインタフェースに対して推奨する方法は、オーバーロードされた機能に前述の「DataSecurityCheck」を使用することです。
「Y」に設定すると、機能セキュリティ機能が有効になり、PL/SQL API、Oracle E-Commerce Gatewayおよびコンカレント・プログラムに対するすべてのAPIコールは、実行される前にユーザー・セキュリティがチェックされます。
「N」(デフォルト値)に設定すると、機能セキュリティ機能が無効になります。APIコールの実行中はセキュリティ・チェックは実行されません。
ユーザーがBPELプロセスを介してOracle E-Business Suite内のAPIを起動しようとした場合、機能セキュリティ・プロファイルが有効になっていると、API上で認証権限の検証が完了した後で初めてAPIが起動されます。
たとえば、BPELプロセスで公開されているPL/SQL APIに対するアクセス権限がユーザーにない場合、PL/SQL APIを起動しようとすると、BPELプロセスの実行は失敗します。認証済権限がなければ、機能セキュリティ検証例外メッセージが生成され、ユーザーにそのPL/SQL APIの権限がないことが示されます。
この機能の詳細は、My Oracle Supportナレッジ・ドキュメント787637.1を参照してください。機能セキュリティおよびRBACセキュリティ・モデルの詳細は、My Oracle Support Knowledge Document 1537100.1のOracle E-Business Suiteでの機能セキュリティとロール・ベースのアクセス制御(RBAC)および『Oracle E-Business Suiteシステム管理者ガイド - セキュリティ』を参照してください。
APIの起動を適切な実行権限のあるユーザーにのみ許可するようセキュリティ保護するため、Oracle E-Business Suiteで次の手順を実行して、ユーザー・ロールを介してユーザーにセキュリティ権限付与を作成する必要があります。
権限セットは、次の手順を使用して作成します。
システム管理者の職責を使用してOracle E-Business Suiteにログインします。
「ナビゲータ」から「アプリケーション・メニュー」を選択して「メニュー」ウィンドウにアクセスします。
次のメニュー情報を入力します。
メニュー: メニュー名(OE_PROCESS_LINE_PSなど)を入力します。
ユーザー・メニュー名: メニュー名(「オーダー・マネージャ明細処理権限セット」など)を入力します。
メニュー・タイプ: 権限セット。
摘要: このメニューの説明を入力します。
「順序」と「機能」の値を入力して、この権限セットにグループ化する機能をすべて追加します。
「順序」フィールドに入力します。
「機能」の列で、この権限セットに割り当てる機能を検索します。
「機能」ウィンドウで検索を実行して機能名を選択します。たとえば、パブリックPL/SQL API検索の構文は、PLSQL:<package name>:<procedure name>です。「検索」フィールドに%PLSQL:OE%と入力し、「検索」をクリックして検索を実行します。
機能の検索
コンポジット・アプリケーションに基づいて機能を選択し、BPELプロセスまたはMediatorから起動するAPIに権限を付与します。
たとえば、受注明細変更のBPELプロセスの場合は、受注変更PL/SQL APIに含まれている受注明細変更関連の機能を選択して権限セットとしてグループ化し、ロールを介して該当するユーザーにその権限セットを付与します。
関連項目: ユーザー・ロールの作成
権限セット・メニュー
権限セットを保存します。
権限セットはユーザー・ロールを介して付与されます。したがって、最初にロールを作成してからユーザーにそのロールを割り当てる必要があります。
ユーザー・ロールは、次の手順を使用して作成します。
ユーザー管理職責を使用してOracle E-Business Suiteにログインします。
「ナビゲータ」から「ロールおよびロール継承」を選択し、「ロールおよびロール継承」ページにアクセスします。
「ロールの作成」をクリックして、「ロールの作成」ページにアクセスします。
次の情報を入力してユーザー・ロールを作成します。
カテゴリ: ドロップダウン・リストから「その他」を選択します。
ロール・コード: 該当するロール・コード(EBS_ADAPTER_ROLEなど)を入力します。
表示名: 表示名の情報(「EBSアダプタ・ロール」など)を入力します。
摘要: 説明の情報(「EBSアダプタ・ロール」など)を入力します。
アプリケーション: 該当するアプリケーション(Application Object Libraryなど)を選択します。
有効日: ロールがすぐに有効になるように当日またはそれより前の日付を入力します。
情報を保存して「付与の作成」をクリックします。
「付与の作成: 付与の定義」ページに次の情報を入力します。
名前: 名前(「EBS_ADAPTER_GRANT」など)を入力します。
摘要: この付与の説明を入力します。
「次」をクリックします。
「付与の作成: オブジェクト・パラメータの定義およびセットの選択」ページで、「権限セットの作成」項で作成した権限セットを選択し、「次」をクリックします。
「終了」をクリックします。
ロールを介してユーザーに権限セットを付与するには、次の手順を使用します。
ユーザー管理職責を使用してOracle E-Business Suiteにログインします。
「ナビゲータ」から「ユーザー」を選択して「ユーザー保守」ページにアクセスします。
ロールを割り当てるユーザーを検索して「移動」をクリックします。
ロールを割り当てるユーザー名の隣にある「更新」アイコンを選択します。
「ユーザーの更新」ページで「ロールの割当」をクリックすると「検索」ウィンドウが移入され、以前に作成したロールが検索できます。
ロール(EBS_ADAPTER_ROLEなど)を選択して更新内容を保存します。
Oracle E-Business Suite AdapterはPL/SQL APIとオープン・インタフェース表(OIT)にフレックスフィールド・サポートを提供します。PL/SQL APIまたはOIT表がフレックスフィールドを含むように構成されている場合、フレックスフィールド・データやマッピングなどのフレックスフィールド情報が設計時に表示されるのみでなく、XSDにも含められます。これにより、統合の開発者は、より意味のあるビジネス・オブジェクト要素を使って、サード・パーティ・データ要素間にマッピングを作成しやすくなります。さらにこの機能により、Oracle E-Business Suite Adapterのランタイムがフレックスフィールドのコンテキスト内で動作できます。
注意: PL/SQL APIとオープン・インタフェース表でこの機能を使用できるのは、Oracle E-Business Suiteリリース12以上のみです。
フレックスフィールドについて
フレックスフィールドはOracle E-Business Suiteの基本機能の1つです。オブジェクトを表したり、必要な場合にのみ表示されるコンテキスト依存フィールドを実装するための柔軟な手段を提供します。フレックスフィールドはサブフィールド、つまりセグメントで構成されます。2タイプのフレックスフィールド(キー・フレックスフィールドと付加フレックスフィールド)を使用して、追加のプログラミングなしでOracle E-Business Suiteの機能をカスタマイズできます。ビジネス・ニーズに合せてカスタマイズした固有の情報を提供するために、Oracle E-Business Suite Adapterはフレックスフィールドを含むPL/SQL APIとオープン・インタフェース表のためのフレックスフィールド・サポートを提供しています。
設計時のフレックスフィールド・データの構成方法
設計時、パートナ・リンクの作成中にフレックスフィールドを使ってPL/SQL APIまたはオープン・インタフェース表を構成した場合、Oracle E-Business Suiteモジュール・ドライバの右側のペインに、APIパラメータまたは表の列とともに、適切なフレックスフィールド情報が表示されます。任意で、選択したインタフェースに対してフレックスフィールド・マッピングを変更または新規作成したり、インタフェースをフレックスフィールドを含むように構成せずにパートナ・リンクの作成を続行することもできます。
Oracle E-Business Suite Adapterでフレックスフィールド・データを構成するには、以前に作成された既存のフレックスフィールド・マッピングを使用するか、必要に応じて新規のマッピングを作成できます。新規のマッピングを作成する場合は、フレックスフィールド・マッピング・ウィザードが表示され、各構成ページで、選択したインタフェースと望みどおりにマッピングされたキー・フレックスフィールドや付加フレックスフィールドを追加できます。
主な機能
Oracle E-Business Suite Adapterが提供する主なフレックスフィールド機能は次のとおりです。
APIパラメータまたはインタフェース表の列名とそれに対応するフレックスフィールド・セグメント名とのマッピングを含むフレックスフィールド情報をOracle E-Business Suiteモジュール・ブラウザで表示できます。
キー・フレックスフィールドと付加フレックスフィールドの両方を構成および変更できます。
選択されたAPIまたはオープン・インタフェース表に対して、新規のマッピングを構成することも作成済のマッピングをインポートして再利用することもできる柔軟なマッピング・サポート・メカニズムを提供します。
注意: フレックスフィールドをマップできるのは1回のみです。重複するフレックスフィールドは使用できません。
これにより、パートナ・リンクの作成中に複数のオープン・インタフェース表を使用できます。フレックスフィールドは、表ごとに構成できます。
フレックスフィールドのマッピングが完了してパートナ・リンクが作成されると、汎用パラメータ名または列名のかわりにフレックスフィールド名を使用して拡張スキーマ(XSD)が生成されます。
Oracle E-Business Suite AdapterのランタイムをOracle Databaseアダプタからのサポートと連携させて拡張スキーマを処理できます。
Oracle E-Business Suite Adapterは、APIまたはオープン・インタフェース表から参照されるキー・フレックスフィールドと付加フレックスフィールドを両方ともサポートします。
キー・フレックスフィールド
キー・フレックスフィールドはエンティティの識別子として使用します。一般に、キー・フレックスフィールドを使用して作成する識別子はアプリケーションにとって必要な識別子です。たとえば、勘定科目番号の作成と表示には会計フレックスフィールドが使用されます。このキー・フレックスフィールドはOracle General Ledgerによって所有されますが、その値は他の多くのアプリケーションで使用できます。
通常、キー・フレックスフィールド構造は複数のセグメントで構成され、各セグメントには意味のある情報が格納されます。たとえば会計フレックスフィールド構造は、会社、部門、勘定科目、小科目、製品の5つのセグメントで構成できます。
付加フレックスフィールド
付加フレックスフィールドは、ビジネスに必要な専門的かつ重要な固有の情報を収集するために使用します。つまり、このタイプのフレックスフィールドはOracle E-Business Suiteの収集範囲を超える情報収集に使用されるのです。
通常、付加フレックスフィールドでは複数の構造が使用されます。各構造は、それぞれ異なるデータを収集するために異なるセグメントで構成できます。各セグメントの値は、アプリケーションのベース表内の列に格納されます。列名は格納されるフレックスフィールド・データのタイプを反映します。
一般に、キー・フレックスフィールドではSEGMENTnと呼ばれる列にデータが格納され、付加フレックスフィールドではATTRIBUTEnと呼ばれる列にデータが格納されます(nは番号です)。キー・フレックスフィールドはOracle E-Business Suiteで必要とされる識別子の多くについて独自の構造を定義するために使用し、付加フレックスフィールドはOracle E-Business Suiteで必要とされる情報の範囲を超えてビジネス・エンティティに関する追加情報を収集するために使用します。
フレックスフィールドの詳細は、Oracle E-Business Suiteフレックスフィールド・ガイドを参照してください。
フレックスフィールドのマッピングの概念
すべてのフレックスフィールドには、そのタイプに関係なく所有アプリケーションがあります。たとえば会計フレックスフィールドは、Oracle General Ledgerアプリケーションに所有されています。フレックスフィールドを構成するときには、まずそのフレックスフィールドが所属するアプリケーションを選択した後、選択したアプリケーション(General Ledgerなど)に含まれるフレックスフィールド名(会計フレックスフィールドなど)を選択する必要があります。
PL/SQL APIのキー・フレックスフィールド・マッピング
次の図は、PL/SQL APIに対するキー・フレックスフィールドのマッピングのおおまかな概念を示しています。
この図のFlexfield 2 (会計フレックスフィールド)はGeneral Ledgerアプリケーションに所属しており、データ・タイプ別にグループ分けできる複数のセグメント(セグメント1からセグメントn)を含んでいます。
フレックスフィールド構成作業の中核はマッピングです。フレックスフィールドとそれが所属するアプリケーションを選択すると、フレックスフィールドのメタデータに基づいて、一致するセグメント(セグメント1からセグメントn)と関連APIパラメータがマッピングのためにOracle E-Business Suiteデータベースから導出されます。
PL/SQL APIでは、パラメータは、選択されたデータ・タイプ(親タイプまたはレコード・タイプ)に基づいて表示されます。APIパラメータとフレックスフィールド表の列は、手作業でマップすることも自動マップ機能を使用して自動的にマップすることもできます。
親タイプ: 親タイプは、プロシージャ・レベルですべてのスカラー・パラメータをマッピングに含めるための疑似タイプです。スカラー・パラメータのみを含む単純なAPIに使用できます。
レコード・タイプ: レコード・タイプは、スカラー・タイプに加えてレコード・タイプも含んでいる複雑なAPIに対して選択できます。API内で1つのレコード・タイプが複数回出現する場合は、参照のためにパスのリストが表示されます。レコード・タイプからのパラメータがフレックスフィールド表の列にマップされた場合、それが出現したすべてのパスに同じマッピングを適用できます。
サポートされるレコード・タイプとしては、配列、ネストされた表、関連配列などがあります。
注意: 自動マップ機能では、表のすべての列が、パラメータ名の一部に列名を含むパラメータにマップされます。たとえば、パラメータP_ATTRIBUTE1はATTRIBUTE1という名前の列にマップされ、パラメータP_ATTRIBUTE2はATTRIBUTE2という名前の列にマップされます。
マッピングが完了したら、キー・フレックスフィールドのフレックスフィールド構造を選択する必要があります。
注意: フレックスフィールド構造は、セグメントの特定の構成です。セグメントを追加または削除したり、フレックスフィールド内のセグメントの順序を並べ替えると、別の構造になります。特定の構造を構成する各セグメントは、論理的または機能的に関連しています。構造体とセグメント定義は、アプリケーション開発者の職責で、Oracle E-Business Suiteに作成されます。
フレックスフィールドの詳細は、Oracle E-Business Suiteフレックスフィールド・ガイドを参照してください。
オープン・インタフェース表のキー・フレックスフィールド・マッピング
PL/SQL APIに対するマッピングと同様、オープン・インタフェース表について、フレックスフィールドとそれが所属するアプリケーションを選択すると、フレックスフィールドのメタデータに基づいて、一致するセグメント(セグメント1からセグメントn)と関連オープン・インタフェース表の列がマッピングのためにOracle E-Business Suiteデータベースから導出されます。マッピングは、手動で行うことも、自動マップ機能を使用して自動で行うこともできます。
注意: データタイプは、PL/SQL APIにのみ使用されますので注意してください。
自動マップ機能はフレックスフィールド表のすべての列を、インタフェース表の列名の一部にフレックスフィールド表の列名を含むオープン・インタフェース表の列にマップします。たとえば、インタフェース表の列名TP_ATTRIBUTE1はフレックスフィールド表の列名ATTRIBUTE1に、インタフェース表の列TP_ATTRIBUTE2はフレックスフィールド表の列名ATTRIBUTE2にマップされます。
次の図は、オープン・インタフェース表に対するキー・フレックスフィールドのマッピングのおおまかな概念を示しています。
マッピングが完了したら、キー・フレックスフィールドのフレックスフィールド構造を選択する必要があります。
PL/SQL APIの付加フレックスフィールド・マッピング
付加フレックスフィールドの場合は、さらにコンテキスト列のマッピングも必要です。コンテキスト列も含めたフレックスフィールド表のすべての列を、1つのレコード・タイプまたは親タイプに属するスカラー・パラメータにマップする必要があります。マッピングが完了したら、付加フレックスフィールドの選択したコンテキスト列に対してコンテキスト値を少なくとも1つ選択してください。
たとえば、チリ(Chile)では小区域や比較的狭い場所を地理的に表現するために、州および郡に加えてRegionとComunaを使用します。同様に、エクアドル(Ecuador)の地理ではそれぞれ異なる境界を記述するためにZonaとParroquiaを使用します。これは、アプリケーションをビジネス・ニーズに合せてカスタマイズするために付加フレックスフィールドを使用する格好の例です。ChileとEcuadorは、付加フレックスフィールドTCA Location Informationを定義するときのコンテキスト値です。Parameter1 (またはParameter2)はATTRIBUTE1 (またはATTRIBUTE2)にマップされ、その値は選択されたコンテキスト値(ChileまたはEcuador)によって決まります。
注意: 付加フレックスフィールドの場合、APIパラメータを通じてランタイムがコンテキスト値を使用できるようにする必要があります。
オープン・インタフェース表の付加フレックスフィールド・マッピング
PL/SQL APIと同様、オープン・インタフェース表の付加フレックスフィールド・マッピングの定義には、コンテキスト列にもマッピングの追加が必要です。コンテキスト列も含めたフレックスフィールド表のすべての列を、オープン・インタフェース表の列にマップする必要があります。マッピングが完了したら、付加フレックスフィールドの選択したコンテキスト列に対してコンテキスト値を少なくとも1つ選択してください。
たとえば、この図では'Address_Line1'と'Address_Line2'が'IN' (インド)のアドレス情報を説明するために選択されていますが、'JP' (日本)では同じ属性(ATTRIBUTE1とATTRIBUTE2)が'Postal_Code'と'Province'にマップされています。
Oracle E-Business Suite AdapterはOracle E-Business Suiteモジュール・ブラウザで定義されたフレックスフィールド・マッピングを使用して、拡張XSDを生成します。このXSDには、設計時に選択されたマッピングに基づくフレックスフィールド・セグメント名が含まれます。Oracle E-Business Suite Adapterはランタイム処理のために、Oracle Databaseアダプタと連携して拡張スキーマ・ファイルを処理します。
フレックスフィールド構造とコンテキスト値の定義に関するガイドライン
次のいずれかの条件が満たされた場合、付加フレックスフィールドのコンテキスト値またはキー・フレックスフィールドの構造を選択することはできません。
コンテキストまたは構造にセグメントもセグメント・マッピングもない。
少なくとも1つのセグメントを持つコンテキスト値または構造値のみ選択できる。
コンテキストまたは構造にセグメントがあるが、いずれのセグメントもマッピング・ページでマップされた表のどの列とも一致しない。
コンテキストまたは構造のセグメントがすべてOracle E-Business Suiteで無効にされている。
コンテキストまたは構造そのものがOracle E-Business Suiteで無効にされている。
フレックスフィールドのサブフロー・ウィザードの手順6 (フレックスフィールドのサブフロー - フレックスフィールドの構成)では、有効なコンテキストまたは構造のみ表示されます。
フレックスフィールドのマッピングは、拡張スキーマまたはXSDファイルの生成に使用されます。
重複するフレックスフィールドは使用できません。フレックスフィールドをマップできるのは一度のみです。
範囲キー・フレックスフィールドはサポートされません。
値セットと修飾子はサポートされません。
PL/SQL APIでは、1つのフレックスフィールドを構成するすべてのフレックスフィールド・セグメントに対するフレックスフィールド・マッピングは、親レベルで、または1つのレコード・タイプ内で行う必要があります。
PL/SQL APIでは、コンテキスト列のマッピングをセグメントがマップされたレベルのパラメータと対応させる必要があります。つまり、PL/SQL APIで、付加フレックスフィールドのセグメントが選択されたデータ・タイプ(レコード・タイプまたは親タイプ)にマップされた場合、コンテキスト列のマッピングも同じデータ・タイプとの間で行う必要があります。
設計時にパートナ・リンクを作成しているときに、選択したインタフェースがフレックスフィールドを含むように構成されている場合、フレックスフィールド情報がOracle E-Business Suiteモジュール・ブラウザの右側のペインに表示されます。
たとえば、PL/SQL APIのSYNC_ACCT_ORDERは、検索して取得するか、「その他インタフェース」→「カスタム・オブジェクト」→「PLSQL API」ノードの下にリストされたHZ_AIA_CUSTOM_PKGから選択できます。このAPIの中に構成されたフレックスフィールド・データがあれば、それがOracle E-Business Suiteモジュール・ブラウザに表示されます。
フレックスフィールド・マッピング情報を持つAPI
注意: 選択したAPIまたはインタフェース表で、事前構成済みのフレックスフィールド・マッピングが使用できる場合、ポップアップ・ウィンドウが表示され、このような事前構成済みマッピングを使用するかどうかを指定できます。「はい」をクリックすると、「フレックスフィールドの構成」領域にフレックスフィールドの定義の一部として、これらのマッピングが表示されます。これらは必要に応じて、後で変更できます。
これらのマッピングを使用しない場合は「いいえ」をクリックして、ポップアップ・ウィンドウを閉じます。
Oracle E-Business Suiteモジュール・ブラウザ内のフレックスフィールド・マッピング・データについて
選択したインタフェースに関連付けられたフレックスフィールド情報は、Oracle E-Business Suiteモジュール・ブラウザの次の各領域に表示して構成することができます。
注意: また、単にブラウザで「OK」をクリックしてパートナ・リンクの作成を進めるのみで、選択したインタフェースについてフレックスフィールド・マッピングの構成または変更をバイパスすることもできます。
パラメータ(またはインタフェース表の列)と対応するフレックスフィールドのマッピング領域
この領域には、選択したインタフェースのパラメータまたはインタフェース表の列と、対応するフレックスフィールド・マッピング情報が表示されます。
PL/SQL APIでは、レコード・タイプのパラメータは表内にツリー構造として表示されますので、目的のパラメータを見つけるために、ツリー・ノードを展開したり、折りたたんだりすることができます。オープン・インタフェース表では、インタフェース表の列名が表にリストされるだけです。
「フレックスフィールドの構成」領域
この領域では次のタスクを実行できます。
フレックスフィールド・マッピング定義の変更
選択したインタフェースがカスタムであってもシードされたものであっても、フレックスフィールド・マッピング情報が一度ブラウザに表示されたら、付加フレックスフィールドのコンテキスト値とキー・フレックスフィールドの構造を変更できるようになります。
Oracle E-Business Suite Adapterは、モジュール・ブラウザからのフレックスフィールド定義を使用して拡張XSDを生成します。このXSDには、設計時にマッピング情報に基づいて選択されたフレックスフィールド・セグメント名がパラメータ名または表の列名とともに含められます。
フレックスフィールド・マッピングを変更する方法の詳細は、「フレックスフィールド・マッピング定義の変更」を参照してください。
新しいマッピングの作成
選択したインタフェースに新しいマッピングを作成するには、「フレックスフィールド・メタデータ」セクションで「マッピングの追加」を選択します。新しいフレックスフィールド・マッピング・ウィザードが表示され、各構成ページで、キー・フレックスフィールドや付加フレックスフィールドを追加したり、選択したインタフェースとOracle E-Business Suiteインスタンスで定義されたフレックスフィールドとの間のフレックスフィールド・マッピングを構成することができます。
「新しいマッピングの追加または構成」を参照してください。
既存マッピングのインポート
新しいマッピングを作成するかわりに、「フレックスフィールド・メタデータ」セクションで 「ファイルからインポート」を選択して作成された既存のマッピングを使用できます。これにより選択したインタフェースに対して希望するフレックスフィールド・マッピングを選択できます。
希望するマッピングがインポートされたら、必要に応じて付加フレックスフィールドのコンテキスト値を変更したり、キー・フレックスフィールドの構造を変更できます。
「既存のフレックスフィールド・マッピングのインポート」の項を参照してください。
フレックスフィールドマッピングの構成ファイルの確認
パートナ・リンクを作成すると、拡張XSDファイルとフレックスフィールド構成ファイルおよびマッピング・ファイルが生成されます。これらのファイルを見て、フレックスフィールドの詳細を確認できます。「フレックスフィールド・マッピングの構成の確認」を参照してください。
Oracle E-Business Suiteモジュール・ブラウザで利用可能なインタフェースのリストの検索またはブラウズの終了後、選択したPL/SQLインタフェースまたはオープン・インタフェース表がフレックスフィールドを使って構成されている場合、APIまたは表のフレックスフィールド情報がウィンドウの右側ペインに表示されます。
選択したAPIまたはオープン・インタフェース表について新しいマッピングを追加または構成するには、「フレックスフィールドの構成」領域にある「マッピングの追加」をクリックします。ウィザードで表示される一連のフレックスフィールド選択ページの指示に従って、選択したAPIまたはインタフェース表の新しいマッピングを構成できます。
フレックスフィールドのサブフロー - ようこそ
「ようこそ」ページの「次へ」をクリックすると、「フレックスフィールド・タイプの選択」ページが表示され、構成または追加するフレックスフィールドとしてキー・フレックスフィールドまたは付加フレックスフィールドを選択できます。
フレックスフィールドのサブフロー - フレックスフィールド・タイプの選択
構成するフレックスフィールドのタイプとして、「キー・フレックスフィールド」または「付加フレックスフィールド」ラジオ・ボタンを選択します。
選択したAPIまたはインタフェース表について、ビジネスのニーズに合せて複数のキー・フレックスフィールドまたは付加フレックスフィールドを構成できることに注意してください。
次を参照してください。
サンプル・ビジネス・シナリオ
INV_EBI_ITEM_PUB.PROCESS_ITEM_LIST APIを例に取り、フレックスフィールド・データを使用したインバウンドWebサービスの作成について説明します。
サード・パーティ・アプリケーションから在庫品目リストの処理を求めるリクエストが発行されると、キー・フレックスフィールド・データが入力ペイロードの一部としてルーティングされ、Oracle E-Business Suiteで品目リストを更新するためにPL/SQL APIのINV_EBI_ITEM_PUB.PROCESS_ITEM_LISTが起動されます。更新されたデータは、レスポンス・メッセージとしてクライアントに渡されます。
次の図は、サービス起動プロセスの流れを示しています。
サービスをデプロイした後、Oracle E-Business Suiteアプリケーションから在庫品目リストに対する問合せを直接行うことで、プロセスを検証できます。取得された品目データは、ペイロードからの入力と同じであるはずです。
パートナ・リンク作成の一環としてのキー・フレックスフィールド・マッピングの構成
APIとして選択したINV_EBI_ITEM_PUB.PROCESS_ITEM_LISTについてキー・フレックスフィールド・マッピングを構成するには、「フレックスフィールドの構成」領域にある「マッピングの追加」をクリックします。ウィザードで表示される一連のフレックスフィールド選択ページの指示に従って、選択したAPIの新しいマッピングを構成できます。
「ようこそ」ページで「次へ」をクリックします。「フレックスフィールド・タイプの選択」ページが表示されます。
フレックスフィールドのサブフロー - フレックスフィールド・タイプの選択
キー・フレックスフィールドを構成するには、次の手順を実行します。
「フレックスフィールド・タイプの選択」ページで「キー・フレックスフィールド」ラジオ・ボタンを選択します。「次」をクリックします。「フレックスフィールド・アプリケーションの選択」ページが表示されます。
目的のアプリケーション名を見つけるには、検索キーワード(%App%など)を入力して「問合せ」をクリックし、検索を実行します。検索基準と一致したエントリがすべて表示されます。たとえば、フレックスフィールドが所属するアプリケーションの名前として、「Inventory」ラジオ・ボタンを選択します。
フレックスフィールドのサブフロー - フレックスフィールド・アプリケーションの選択
または、直接「問合せ」をクリックして検索キーワードなしの空白検索を実行します。この場合は、すべてのフレックスフィールド・アプリケーション名が選択肢として表示されます。
「次」をクリックします。
「フレックスフィールドの選択」ページで、検索キーワードを入力し(必要な場合)、「問合せ」をクリックして検索を実行します。一致したキー・フレックスフィールドがすべて選択肢として表示されます。目的のキー・フレックスフィールドのラジオ・ボタンを選択します。
フレックスフィールドのサブフロー - フレックスフィールドの選択
「次」をクリックして処理を続行してください。
「データ型の選択とマッピングの構成」ページが表示され、そこでキー・フレックスフィールドのマッピングを選択できます。選択したキー・フレックスフィールド名が自動的にフレックスフィールド名として表示されます。
フレックスフィールドのサブフロー - データ型の選択とマッピングの構成
レコード・タイプを持たない単純なAPIの場合、フレックスフィールド・マッピングを構成するには、「データ型の選択」ドロップダウン・リストから<Parent_type>を選択します。すると、必要なフレックスフィールド・メタデータがすべてOracle E-Business Suiteデータベースから取得され、親レベルのパラメータがマッピングのために表示されます。
注意: Parent_typeは、プロシージャ・レベルですべてのスカラー・パラメータをマッピングに含めるための疑似タイプです。
複雑なAPIの場合は、レコード・タイプを選択することもできます。API内で1つのレコード・タイプが複数回出現する場合は、参照のためにパスのリストが表示されます。レコード・タイプからのパラメータがフレックスフィールド表の列にマップされた場合、それが出現したすべてのパスに同じマッピングを適用できます。
このマッピング・ページでは、手作業でマッピングすることも、自動マップ機能を使用することもできます。
自動マップ機能はすべてのセグメントを、パラメータ名の一部に列名を含むパラメータにマップします。たとえば、表のSEGMENT1列はパラメータSEGMENT1にマップされます。パラメータ名と表の列名のセットが複数ある場合は、接頭辞を指定できます。
たとえば、P_SEGMENT1、P_SEGMENT2、P_SEGMENT3、P_SEGMENTn (nは番号)のようなP_で始まるパラメータをすべて取得するには、接頭辞としてP_を入力します。「自動マップ」をクリックすると、接頭辞P_で始まるすべてのパラメータが、自動マップされた表の列名とともに表示されます。
注意: フレックスフィールドの値は、アプリケーションのデータベース表に格納されます。一般に、キー・フレックスフィールドではSEGMENTnと呼ばれる列にデータが格納され、付加フレックスフィールドではATTRIBUTEnと呼ばれる列にデータが格納されます(nは番号です)。
手動マップでは、対応するパラメータに対してマップする表の列を選択できます。
注意: パラメータがすでに表の列にマップされている場合、そのパラメータを別の列に再マップすることはできません。この場合は、マップされたパラメータの代わりに「他のフレックスフィールドにマップ済」と表示されます。
現在のマッピングをクリアするには、「マッピングのクリア」をクリックします。「他のフレックスフィールドにマップ済」のマークが付いているマップ済の列はすべて、システムから削除されません。
「次」をクリックして処理を続行してください。
フレックスフィールドの構成は、キー・フレックスフィールドの構造と付加フレックスフィールドの最低1つのコンテキスト値がないと完了しません。
「フレックスフィールドの構成」ページで、必要に応じて「構造」フィールドに検索キーワードを入力するか、単に「問合せ」をクリックして空白検索を実行します。選択したキー・フレックスフィールドに対して一致した構造がすべて表示されます。
構造は1つのみ選択します(SYSTEM_ITEMSなど)。
望みどおりの構造が選択肢としてウィザードに表示されるようにするには、特定の基準を満たす必要があることに注意してください。「フレックスフィールド構造とコンテキスト値の定義に関するガイドライン」を参照してください。
フレックスフィールドのサブフロー - フレックスフィールドの構成
注意: フレックスフィールド・マッピングに含められるキー・フレックスフィールドの構造は1つのみです。付加フレックスフィールドの場合は、複数のコンテキスト値をマッピングに含めることができます。
「終了」をクリックします。
Oracle E-Business Suiteモジュール・ブラウザ・ウィンドウが表示されます。新しく追加したキー・フレックスフィールド構造と、マップされたパラメータが「パラメータと対応するフレックスフィールドのマッピング」領域に表示されます。
キー・フレックスフィールドの情報も、「フレックスフィールド定義」セクションに表示されます。
選択したキー・フレックスフィールドの情報の表示
「OK」をクリックします。
「アプリケーション・インタフェース」ページが開き、選択したAPIが表示されます。
選択したAPIの表示
「次へ」をクリックし、「終了」をクリックします。
パートナ・リンクに対応するWSDLファイルが生成されます。拡張XSDファイル(たとえばProcessItem_KFF_flex.xsd)も作成されます。このXSDファイルには、フレックスフィールドのセグメント名で置き換えられたパラメータを表す要素を使用してプロシージャの引数を記述するスキーマが収められています。
「適用」をクリックし、「OK」をクリックします。
さらに、構成ファイルとフレックスフィールド・マッピング・ファイルも作成されます。これらのファイルの詳細は、「フレックスフィールド・マッピングの構成の確認」を参照してください。
選択したAPIについて付加フレックスフィールド・マッピングを追加する方法は、「PL/SQL APIでの付加フレックスフィールド・マッピングの構成」を参照してください。
パートナ・リンクの作成時に構成されたキー・フレックスフィールドのマッピング・データを、設計時に表示できます。
キー・フレックスフィールド・マッピングを使ったコンポジットの例
次の例では、SOAコンポジットのBPELプロセスにおけるキー・フレックスフィールドのマッピングについて説明します。
BPELプロセスを持つ新しいSOAコンポジット・アプリケーションを作成します。
前述のINV_EBI_ITEM_PUB.PROCESS_ITEM_LIST APIに対して構成したキー・フレックスフィールド・マッピングを使用するProcesItem_KFFと呼ばれるパートナ・リンク・サービスを追加します。
キー・フレックスフィールド・マッピングを構成する方法の詳細は、「PL/SQL APIでのキー・フレックスフィールド・マッピングの構成」を参照してください。
サービス起動用のフレックスフィールド・データを含む入力ペイロードを読み取るために、ファイル・アダプタのパートナ・リンクを追加します。
「ファイル・ディレクトリ」ダイアログで、入力ペイロードxmlファイル(たとえばinput_payload.xml)が存在する物理ディレクトリ(たとえば/usr/tmp)を入力します。
「メッセージ」ダイアログで、「URL」フィールドの横にある「スキーマ・ファイルを参照」アイコンを選択して「タイプ・チューザ」を開きます。
「タイプ・エクスプローラ」をクリックして、「プロジェクトのスキーマ・ファイル」→「ProcessItem_KFF_sp.xsd」→「ProcessItem_KFF_flex.xsd」→「InputParameters」を選択します。
メッセージ・スキーマの参照と選択
「OK」をクリックします。選択したスキーマ情報は、「URL」フィールドと「スキーマ要素」フィールドに自動的に移入されます。
選択したメッセージ・スキーマの情報の表示
2つのinvokeアクティビティを構成します。
最初のinvokeアクティビティは、入力ペイロードのデータを同期的に読み取るために、ファイル・アダプタのパートナ・リンクと関連付けます。
2番目のinvokeアクティビティは、サービスを起動するために、フレックスフィールド・マッピングを含んでいるパートナ・リンクProcessItem_KFFと関連付けます。
ファイル・アダプタから受け取った入力ペイロードを、サービス起動用に2番目のinvokeアクティビティに渡すために、assignアクティビティを追加します。
Oracle E-Business Suiteで定義された一致するフレックスフィールド・セグメントに対応する、マップされたキー・フレックスフィールドの列名が、assignアクティビティに表示されます。「assignアクティビティでのキー・フレックスフィールドを使用したパラメータの割当て」を参照してください。
SOAコンポジット内のBPELプロセスの構築
設計時タスクを作成する方法の詳細は、「PL/SQL APIに関する設計時タスク」を参照してください。
Oracle E-Business Suiteでのフレックスフィールドの検証
Oracle Inventoryアプリケーションでシステム品目キー・フレックスフィールドのキー・フレックスフィールド・セグメントを定義するときには(アプリケーション開発者職責)、「セグメント要約 - システム品目」ウィンドウでSEGMENT1のみが品目(Item)として指定されます。
システム品目のキー・フレックスフィールド・セグメント要約
次の表は、キー・フレックスフィールドのマッピング・データとOracle E-Business Suiteで定義された実際のセグメントとの関係を示しています。
フレックスフィールドの構成時にマップされたキー・フレックスフィールド・セグメント | Oracle E-Business Suiteで定義されたキー・フレックスフィールド・セグメント |
---|---|
SEGMENT1 | Item |
SEGMENT2 | 定義されていません |
SEGMENTn | 定義されていません |
マッピングが完了すると、システム品目キー・フレックスフィールドに対してマップされたセグメント列名がOracle E-Business Suiteモジュール・ブラウザに表示されます。この場合は、SEGMENT1内の対応する列名であるItemのみが表示されます。
マップされたセグメント列名Itemの表示
キー・フレックスフィールドおよびキー・フレックスフィールド・セグメントの定義方法の詳細は、Oracle E-Business Suiteフレックスフィールド・ガイドの「キー・フレックスフィールドの計画と定義」を参照してください。
スキーマ・ファイル内のフレックスフィールドの検証
Oracle JDeveloperで拡張XSDファイル(たとえばProcessItem_KFF_flex.xsd)を選択し、マップされたキー・フレックスフィールド列(Item)が、フレックスフィールド名System_Itemsの下にflex型として表示されていることを確認します。
スキーマ・ファイル内のマップされたキー・フレックスフィールドの表示
assignアクティビティでのキー・フレックスフィールドを使用したパラメータの割当て
SOAコンポジット・アプリケーション内のBPELプロセス・ダイアグラムのassignアクティビティに、マップされたキー・フレックスフィールドを表示して、ペイロードからの入力変数を2番目のinvokeアクティビティに渡してサービスを起動するために使用できます。
assignアクティビティでのマップされたキー・フレックスフィールドの表示
assignアクティビティを使用して、入力ペイロード情報をターゲット・パラメータのItemオブジェクトに渡します。
注意: キー・フレックスフィールドの構成時に列名SEGMENT1にマップされたターゲット・パラメータns2:SEGMENT1が、ここではns3:Item (ns2:System_Itemsの下)に変換されてassignアクティビティの中に表示されています。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke_SynchRead_OutputVariable」→「本文」→「ns2:InputParameters」→「ns2:P_ITEM」→「ns2:P_ITEM_ITEM」→「ns2:MAIN_OBJ_TYPE」(データ型はINV_EBI_ITEM_MAIN_OBJ)→「ns2: System_Items」にナビゲートして「ns3: Item」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke1_ProcessItem_KFF_InputVariable」→「InputParameters」→「ns2:InputParameters」→「ns2:P_ITEM」→「ns2:P_ITEM_ITEM」→「ns2:MAIN_OBJ_TYPE」(データ型はINV_EBI_ITEM_MAIN_OBJ)→「ns2: System_Items」にナビゲートし、「ns3: Item」を選択します。
ソース・ノード(ns3: Item)を、指定したターゲット・ノード(ns3: Item)にドラッグして接続します。 これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
「適用」をクリックして「OK」をクリックし、assignアクティビティの構成を完了します。
注意: あるいは、ソースとターゲットのns2:InputParameters変数はどちらも同じものなので、単にソース・ノード(ns2:InputParameters)をターゲット・ノード(ns2:InputParameters)にドラッグして接続するという方法で、assignアクティビティを完成させることもできます。
invokeアクティビティへの入力変数の割当て
ここに表示されているデータ型INV_EBI_ITEM_MAIN_OBJが、「データ型の選択とマッピングの構成」ページでドロップダウン・リストから指定されたデータ型(INV_EBI_ITEM_PUB:INV_EBI_ITEM_MAIN_OBJ)とまったく同じであることに注意してください。選択したデータ型のパスとしてP_ITEMがリストされます。
データ型の選択とマッピングの構成
SOAコンポジット・アプリケーションに含まれているBPELプロセス(FlexfieldKFF)をOracle WebLogic管理対象サーバー(たとえばsoa-server1)にデプロイすると、前述のように構成したキー・フレックスフィールドがsoa-server1サーバーに表示され(http://<servername>:<portnumber>/soa-infra)、ペイロード・データを指定してサービスの起動をテストできます。
注意: プロセスのテストと管理はOracle Enterprise Manager Fusion Middleware Controlコンソールからも実行できることに注意してください。この例では、マップされたキー・フレックスフィールドが、最上位レベルから複数のサブレベルにネストされた入力ペイロードの一部として使用されています。これは、マップされたキー・フレックスフィールドItemに到達するためには、最上位レベルからいくつものパラメータ・ノードを展開する必要があることを意味します(「ペイロード」→「P_ITEM」→「P_ITEM_ITEM」→「MAIN_OBJ_TYPE」)。しかし、ペイロード・パラメータのネストが深すぎる場合、Oracle Enterprise Manager Fusion Middleware Controlコンソールでのペイロード・パラメータの表示には一定の制限があります。
マップされたキー・フレックスフィールドの「リクエスト」タブでの表示
したがって、この場合は、マップしたキー・フレックスフィールドにsoa-server1サーバー内のsoa-infraから直接アクセスします。
Oracle Enterprise Manager Fusion Middleware Controlコンソールからサービスの起動をテストする方法の詳細は、「BPELプロセスを使用したデプロイ済SOAコンポジット・アプリケーションのテスト」を参照してください。
WebLogicページの「Oracle SOA/BPMプラットフォームへようこそ 」で、デプロイ済みのキー・フレックスフィールド・プロジェクトをクリックします。
「Webサービスのテスト・クライアント」ページが開き、選択したプロジェクトが表示されます。「テスト」をクリックします。前もって構成しておいたキー・フレックスフィールドが、入力ペイロードの一部として、「Webサービスのテスト・クライアント」ページの「パラメータ」領域に表示されます。
「テスト」ページでのキー・フレックスフィールドの表示
「パラメータ」領域で、「ペイロード」→「P_ITEM」→「P_ITEM_ITEM」→「MAIN_OBJ_TYPE」→「System_Items」の順に展開します。マップされたキー・フレックスフィールドItemがペイロードの一部として表示されます。
マップされたキー・フレックスフィールド「Item」のパラメータとしての表示
適切なデータをペイロードとして入力し、「起動」をクリックしてサービスを起動します。
サンプル・ビジネス・シナリオ
HZ_AIA_CUSTOM_PKG.SYNC_ACCT_ORDER APIを例に取り、フレックスフィールド・データを使用したインバウンドWebサービスの作成について説明します。
サード・パーティ・アプリケーションから顧客情報の同期を求めるリクエストが発行されると、付加フレックスフィールド・データがペイロードの一部としてルーティングされ、Oracle E-Business Suiteで組織および顧客アカウントを更新するためにPL/SQL APIのHZ_AIA_CUSTOM_PKG.SYNC_ACCT_ORDERが起動されます。同期された顧客データは、レスポンス・メッセージとしてクライアントに渡されます。
次の図は、サービス起動プロセスの流れを示しています。
フレックスフィールド・データを使用したインバウンド・サービスの起動
サービスをデプロイした後、Oracle Customer Onlineアプリケーションから顧客データの問合せを直接行うことで、プロセスを検証できます。取得された顧客データは、ペイロードからの入力と同じであるはずです。
パートナ・リンク作成の一環としての付加フレックスフィールド・マッピングの構成
APIとして選択したHZ_AIA_CUSTOM_PKG.SYNC_ACCT_ORDERについて付加フレックスフィールド・マッピングを構成するには、「フレックスフィールドの構成」領域にある「マッピングの追加」をクリックします。ウィザードで表示される一連のフレックスフィールド選択ページの指示に従って、選択したAPIの新しいマッピングを構成できます。
「ようこそ」ページで「次へ」をクリックします。「フレックスフィールド・タイプの選択」ページが表示されます。
フレックスフィールドのサブフロー - フレックスフィールド・タイプの選択
付加フレックスフィールドを構成するには、次の手順を実行します。
「フレックスフィールド・タイプの選択」ページで「付加フレックスフィールド」ラジオ・ボタンを選択し、フレックスフィールド・マッピング・ウィザードで前述のキー・フレックスフィールドの場合と同様のアプローチを使用します。
「フレックスフィールド・タイプの選択」ページで「次へ」をクリックします。「フレックスフィールド・アプリケーションの選択」ページが表示されます。
目的のアプリケーションを見つけるには、検索キーワード(%App%など)を入力するか単に「問合せ」をクリックして、検索を実行します。付加フレックスフィールドに対して一致したアプリケーションがすべて表示されます。たとえば、付加フレックスフィールドが所属するアプリケーションの名前として、「Receivables」ラジオ・ボタンを選択します。
フレックスフィールドのサブフロー - フレックスフィールド・アプリケーションの選択
「次」をクリックします。
「フレックスフィールドの選択」ページで、必要に応じて検索キーワード(たとえばHZ%)を入力し、「問合せ」をクリックして検索を実行します。一致した付加フレックスフィールドがすべて選択肢として表示されます。
目的の付加フレックスフィールド(たとえばHZ_LOCATIONS)を選択し、「次へ」をクリックします。
フレックスフィールドのサブフロー - フレックスフィールドの選択
「データ型の選択とマッピングの構成」ページが表示され、そこで付加フレックスフィールドのマッピングを選択できます。
選択した付加フレックスフィールド名HZ_LOCATIONSが自動的にフレックスフィールド名として表示されます。
フレックスフィールドのサブフロー - データ型の選択とマッピングの構成
フレックスフィールド・マッピングを構成するには、「データ型の選択」ドロップダウン・リストから目的のデータ型を選択します。すると、必要なフレックスフィールド・メタデータがすべてOracle E-Business Suiteデータベースから取得され、親レベルのパラメータがマッピングのために表示されます。
親タイプ: 親タイプは、プロシージャ・レベルですべてのスカラー・パラメータをマッピングに含めるための疑似タイプです。スカラー・パラメータのみを含む単純なAPIに使用できます。
レコード・タイプ: レコード・タイプは、スカラー・タイプに加えてレコード・タイプも含んでいる複雑なAPIに対して選択できます。
付加フレックスフィールド・マッピングでのコンテキスト列の選択
付加フレックスフィールドの場合は、コンテキスト列に関する追加のマッピングを実行する必要があります。これは、フレックスフィールド・マッピングがレコードのタイプ間を超えられないためです。コンテキスト列も含めた表のすべての列を、1つのレコード・タイプまたは親タイプに属するスカラー・パラメータにマップする必要があります。
「コンテキスト列のマップ ATTRIBUTE_CATEGORY」フィールドで、マッピング情報を表示するカテゴリの名前をドロップダウン・リストから選択します。たとえば、ドロップダウン・リストからATTRIBUTE_CATEGORYを選択します。
注意: パラメータがすでに表の列にマップされている場合、そのパラメータを別の列に再マップすることはできません。この場合は、マップされたパラメータの代わりに「他のフレックスフィールドにマップ済」と表示されます。
キー・フレックスフィールドの場合と同様に、マッピングは手作業で行うことも、「自動マップ」をクリックして自動マップ機能を利用することもできます。
自動マップ機能は表のすべての列を、パラメータ名の一部に列名を含むパラメータにマップします。たとえば、ATTRIBUTE1からATTRIBUTE20までの表列名が自動的に表示され、自動マップ機能によってそれぞれATTRIBUTE1からATTRIBUTE20までのパラメータにマップされます。
パラメータ名と表の列名のセットが複数ある場合は、自動マッピングのために接頭辞を指定する必要があります。これにより、マッピングの対象とみなす必要がある潜在的パラメータがマップされます。まず自動マッピングの対象にするパラメータを見つけるために、パラメータ接頭辞(たとえばINDUSTRY_)を入力します。次に、「自動マップ」をクリックします。接頭辞INDUSTRY_で始まるすべてのパラメータが、自動マップされた表の列名とともに表示されます。パラメータINDUSTRY_ATTRIBUTE1はATTRIBUTE1列にマップされ、パラメータINDUSTRY_ATTRIBUTEnはATTRIBUTEn列にマップされます。
自動マップ機能を使用するかわりに、フレックスフィールド・マッピングで対応するパラメータにマップする表の列名をドロップダウン・リストから手作業で選択することもできます。
現在表の列に設定されているマッピングのみをクリアするには、「マッピングのクリア」をクリックします。「他のフレックスフィールドにマップ済」のマークが付いているマップ済の列はすべて、システムから削除されません。
「次へ」をクリックして、次のページに進みます。
「フレックスフィールドの構成」ページで、選択した付加フレックスフィールドに対して少なくとも1つのコンテキスト値を選択します。たとえば、希望するコンテキスト値(ChileやEcuadorなど)を選択します。
選択の前に、「コンテキスト」フィールドに検索キーワードを入力するか、単に「問合せ」をクリックして、検索を実行できます。
付加フレックスフィールドの場合、APIパラメータを通じてランタイムがコンテキスト値を使用できるようにする必要があります。
望みどおりのコンテキスト値が選択肢としてウィザードに表示されるようにするには、特定の基準を満たす必要があることに注意してください。「フレックスフィールド構造とコンテキスト値の定義に関するガイドライン」を参照してください。
フレックスフィールドのサブフロー - フレックスフィールドの構成
「終了」をクリックしてフレックスフィールドの構成を完了します。
Oracle E-Business Suiteモジュール・ブラウザ・ウィンドウが表示されます。新しく追加した付加フレックスフィールド情報が、選択したコンテキスト値のセグメント値も含めて、ウィンドウの右側のペインに表示されます。
選択した付加フレックスフィールドの情報の表示
「OK」をクリックします。
「アプリケーション・インタフェース」ページが開き、選択したAPIが表示されます。
選択したAPIの「アプリケーション・インタフェース」ページでの表示
「次へ」をクリックし、「終了」をクリックします。
パートナ・リンクに対応するWSDLファイルが生成されます。拡張XSDファイル(たとえばSynAccOrder_flex.xsd)も作成されます。このXSDファイルには、フレックスフィールドのセグメント名で置き換えられたパラメータを表す要素を使用してプロシージャの引数を記述するスキーマが収められています。
「適用」をクリックし、「OK」をクリックします。
さらに、構成ファイルとフレックスフィールド・マッピング・ファイルも作成されます。これらのファイルの詳細は、「フレックスフィールド・マッピングの構成の確認」を参照してください。
新しいフレックスフィールド・マッピングを構成または追加した後、変更が必要になった場合は、まず変更対象のフレックスフィールド・タイプを選択して、必要な変更を行います。選択したマッピングの詳細を変更する方法の詳細は、「フレックスフィールド・マッピング定義の変更」を参照してください。
キー・フレックスフィールド・マッピングの場合と同様に、パートナ・リンクの作成時に構成された付加フレックスフィールドのマッピング・データは、SOAコンポジット内のBPELプロセスにまとめられた次のアクティビティとともに設計時に表示できます。
付加フレックスフィールド・マッピングを使ったコンポジットの例
次の例では、SOAコンポジットのBPELプロセスにおける付加フレックスフィールドのマッピングについて説明します。
BPELプロセスを持つ新しいSOAコンポジット・アプリケーションを作成します。
HZ_AIA_CUSTOM_PKG.SYNC_ACCT_ORDER APIに対して構成した前述の付加フレックスフィールド・マッピングを使用するSynAccOrderと呼ばれるパートナ・リンク・サービスを追加します。
付加フレックスフィールド・マッピングを構成する方法の詳細は、「PL/SQL APIでの付加フレックスフィールド・マッピングの構成」を参照してください。
サービス起動用のフレックスフィールド・データを含む入力ペイロードを読み取るために、ファイル・アダプタのパートナ・リンクを追加します。
「ファイル・ディレクトリ」ダイアログで、入力ペイロードxmlファイル(たとえばinput_payload.xml)が存在する物理ディレクトリ(たとえば/usr/tmp)を入力します。
「メッセージ」ダイアログで、「URL」フィールドの横にある「スキーマ・ファイルを参照」アイコンを選択して「タイプ・チューザ」を開きます。
「タイプ・エクスプローラ」をクリックして、「プロジェクトのスキーマ・ファイル」→「SynAccOrder_sp.xsd」→「SynAccOrder_flex.xsd」→「InputParameters」を選択します。
フレックスフィールド・スキーマでのメッセージの選択
「OK」をクリックします。選択したスキーマ情報は、「URL」フィールドと「スキーマ要素」フィールドに自動的に移入されます。
選択したメッセージ・スキーマの表示
2つのinvokeアクティビティを構成します。
最初のinvokeアクティビティは、入力ペイロードのデータを同期的に読み取るために、ファイル・アダプタのパートナ・リンクと関連付けます。
2番目のinvokeアクティビティは、サービスを起動するために、フレックスフィールド・マッピングを含んでいるパートナ・リンクSynAccOrderと関連付けます。
ファイル・アダプタから受け取った入力ペイロードを、サービス起動用に2番目のinvokeアクティビティに渡すために、assignアクティビティを追加します。
Oracle E-Business Suiteで定義された一致するフレックスフィールド・セグメントに対応する、マップされた付加フレックスフィールドの列名が、assignアクティビティに表示されます。「assignアクティビティでの付加フレックスフィールドを使用したパラメータの割当て」を参照してください。
SOAコンポジット内のBPELプロセスの構築
設計時タスクを作成する方法の詳細は、「PL/SQL APIに関する設計時タスク」を参照してください。
Oracle E-Business Suiteでのフレックスフィールドの検証
Oracle ReceivablesアプリケーションでTCA Location Information (HZ_LOCATIONS)の付加フレックスフィールド属性を定義すると(アプリケーション開発者職責)、コンテキスト値に基づいて次の属性が指定されます。
コンテキスト値 | ATTRIBUTE1 | ATTRIBUTE2 |
---|---|---|
Chile | Region | Comuna |
Ecuador | Zona | Parroquia |
システム品目の付加フレックスフィールド・セグメント要約
スキーマ・ファイル内のフレックスフィールドの検証
Oracle JDeveloperで拡張XSDファイル(たとえばSynAccOrder_flex.xsd)を選択し、マップされた付加フレックスフィールドが、HZ_LOCATIONSフレックスフィールドの下にflex型のスキーマの一部として表示されていることを確認します。
さらに、マップされた表の列名(Region、Comuna、Zona、Parroquia)は、ツリー構造内にリストされたコンテキスト値(ChileとEcuador)によってグループ分けされています。コンテキスト値のノードは<choice>アイコンによって接続されており、いずれか1つのコンテキスト値とそれに関連付けられた表列のみが選択可能であることを示しています。
スキーマ・ファイル内のコンテキスト値の表示
assignアクティビティでの付加フレックスフィールドを使用したパラメータの割当て
SOAコンポジット・アプリケーション内のBPELプロセス・ダイアグラムのassignアクティビティに、マップされた付加フレックスフィールドを表示して、ペイロードから受け取った入力変数をinvokeアクティビティに渡してSynAccOrderサービスを起動するために使用できます。
マップされた付加フレックスフィールドのassignアクティビティでの表示と割当て
assignアクティビティを使用して、入力ペイロード情報をターゲット・パラメータのTCA Locationオブジェクトに渡します。
ターゲット・パラメータns2:ATTRIBUTE1は、前述のフレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
Region (コンテキスト値<sequence(Chile)>の下)
Zona (コンテキスト値<sequence(Ecuador)>の下)
ターゲット・パラメータns2:ATTRIBUTE2は、前述のフレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
Comuna (コンテキスト値<sequence(Chile)>の下)
Parroquia (コンテキスト値<sequence(Ecuador)>の下)
コンテキスト値によってグループ分けされたこれらの付加フレックスフィールド列が、assignアクティビティ内に表示されます。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke_SynchRead_OutputVariable」→「本文」→「ns2:InputParameters」→「ns2:P_ORG_CUST_OBJ」→「ns2:ORGANIZATION_OBJ」→「ns2:PARTY_SITE_OBJS」→「ns2:PARTY_SITE_OBJS_ITEM」→「ns2:LOCATION_OBJ」→「ns2:HZ_LOCATIONS」→「ns3:ATTRIBUTE_CATEGORY」にナビゲートし、「<choice>」アイコンを展開して、選択したコンテキスト値ns3:Chileについてマップした付加フレックスフィールド列ns3:Regionおよびns3:Comunaを見つけます(または、選択したコンテキスト値ns3:Ecuadorに対してns3:Zonaとns3:Parroquiaを選択します)。
「To」ナビゲーション・ツリーで、「Invoke_SyncOrder_InputVariable」→「InputParameters」→「ns2:InputParameters」→「ns2:P_ORG_CUST_OBJ」→「ns2:ORGANIZATION_OBJ」→「ns2:PARTY_SITE_OBJS」→「ns2:PARTY_SITE_OBJS_ITEM」→「ns2:LOCATION_OBJ」→「ns2:HZ_LOCATIONS」→「ns3:ATTRIBUTE_CATEGORY」にナビゲートし、「<choice>」アイコンを展開して、選択したコンテキスト値ns3:Chileについてマップした付加フレックスフィールド列ns3:Regionおよびns3:Comunaを見つけます(または、選択したコンテキスト値ns3:Ecuadorに対してns3:Zonaとns3:Parroquiaを選択します)。
assignアクティビティ内の付加フレックスフィールドにパラメータを割り当てるには、ソース・ノード(ns3:Region)をドラッグして、前述の操作で指定した最初のターゲット・ノード(ns3:Region)に接続します。これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
同じ手順を繰り返し、同じソース・ノード(ns3:Comuna)をドラッグして2番目のターゲット・ノード(ns3:Comuna)に接続し、2番目のパラメータを割り当てます。2番目のコピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
「適用」をクリックして「OK」をクリックし、assignアクティビティの構成を完了します。
注意: あるいは、ソースとターゲットのns2:InputParameters変数はどちらも同じものなので、単にソース・ノード(ns2:InputParameters)をターゲット・ノード(ns2:InputParameters)にドラッグして接続するという方法で、assignアクティビティを完成させることもできます。
assignアクティビティでの付加フレックスフィールドの割当て
SOAコンポジット・アプリケーションに含まれているBPELプロセスをOracle WebLogic管理対象サーバー(たとえばsoa-server1)にデプロイすると、前述のように構成した付加フレックスフィールドがsoa-server1サーバーに表示され(http://<servername>:<portnumber>/soa-infra)、ペイロード・データを指定してサービスの起動をテストできます。プロセスのテストと管理はOracle Enterprise Manager Fusion Middleware Controlコンソールからも実行できることに注意してください。
注意: プロセスのテストと管理はOracle Enterprise Manager Fusion Middleware Controlコンソールからも実行できます。この例では、マップされた付加フレックスフィールドが、最上位レベルから複数のサブレベルにネストされた入力ペイロードの一部として使用されています。これは、マップされた付加フレックスフィールド(RegionとComuna)に到達して表示するためには、最上位レベルからいくつものパラメータ・ノードを展開する必要があることを意味します(「ペイロード」→「P_ORG_CUST_OBJ」→「ORGANIZATION_OBJ」→「PARTY_SITE_OBJS」→「PARTY_SITE_OBJS_ITEM」→「LOCATION_OBJ」→「HZ_LOCATIONS」→「ATTRIBUTE_CATEGORY」→「HZ_LOCATIONS_1」)。しかし、ペイロード・パラメータのネストが深すぎる場合、Oracle Enterprise Manager Fusion Middleware Controlコンソールでのペイロード・パラメータの表示には一定の制限があります。
マップされた付加フレックスフィールドの特定
したがって、この場合は、マップした付加フレックスフィールドにsoa-server1サーバー内のsoa-infraから直接アクセスします。
Oracle Enterprise Manager Fusion Middleware Controlコンソールからサービスの起動をテストする方法の詳細は、「BPELプロセスを使用したデプロイ済SOAコンポジット・アプリケーションのテスト」を参照してください。
前述のキー・フレックスフィールド・プロジェクトと同様、WebLogicページの「Oracle SOA/BPMプラットフォームへようこそ 」で、デプロイ済みの付加フレックスフィールド・プロジェクトをクリックします。
「Webサービスのテスト・クライアント」ページが開き、選択したプロジェクトが表示されます。「テスト」をクリックします。前もって構成しておいた付加フレックスフィールドが、入力ペイロードの一部として、「Webサービスのテスト・クライアント」ページの「パラメータ」領域に表示されます。
「パラメータ」領域で、「ペイロード」→「P_ORG_CUST_OBJ」ノードの順に展開し、「ORGANIZATION_OBJ > PARTY_SITE_OBJS」→「PARTY_SITE_OBJS_ITEM」→「LOCATION_OBJ」→「HZ_LOCATIONS」→「ATTRIBUTE_CATEGORY」→「HZ_LOCATIONS_1」の順に移動します。
前述の設計時に構成した付加フレックスフィールドの2つのセットが、実行時に表示されるようになりました。
HZ_LOCATIONS_1_0 (設計時にassignアクティビティに構成したデフォルトの選択肢)
Region
Comuna
HZ_LOCATIONS_1_1
Zona
Parroquia
適切なデータをペイロードとして入力し、「起動」をクリックしてサービスを起動します。
サンプル・ビジネス・シナリオ
オープン・インタフェース表ONT.OE_HEADERS_IFACE_ALLを例に取り、フレックスフィールド・データを使用したインバウンドWebサービスの作成について説明します。
特定のアカウントにオーダー・データを挿入するリクエストが届いたときに、キー・フレックスフィールドと付加フレックスフィールドの両方を使用して、リクエスト元のニーズに基づいて、オーダー・データの詳細をカスタマイズできます。その後、このデータは入力ペイロードとして渡され、オープン・インタフェース表に挿入されます。挿入されたデータは選択され、出力ファイルに書き込まれます。その後、クライアントによる検証のため、レスポンス・メッセージとして返送されます。
次の図は、サービス起動プロセスの流れを示しています。
サービスをデプロイした後、出力XMLファイルを表示して、プロセスを検証できます。このデータは、ペイロードからの入力と同じであるはずです。
パートナ・リンク作成の一環としてのキー・フレックスフィールド・マッピングの構成
この例では、選択されたオープン・インタフェース表ONT.OE_HEADERS_IFACE_ALLに対するオーダー・ニーズ(特別なアカウント番号やそれに関連するアカウント名など)にキー・フレックスフィールドを使用しています。
キー・フレックスフィールド・マッピングを構成するには、「フレックスフィールドの構成」領域にある「マッピングの追加」をクリックします。ウィザードで表示される一連のフレックスフィールド選択ページの指示に従って、選択したオープン・インタフェース表の新しいマッピングを構成できます。
「ようこそ」ページで「次へ」をクリックします。「フレックスフィールド・タイプの選択」ページが表示されます。
フレックスフィールドのサブフロー - フレックスフィールド・タイプの選択
キー・フレックスフィールドを構成するには、次の手順を実行します。
「フレックスフィールド・タイプの選択」ページで「キー・フレックスフィールド」ラジオ・ボタンを選択します。「次」をクリックします。「フレックスフィールド・アプリケーションの選択」ページが表示されます。
目的のアプリケーション名を見つけるには、検索キーワード(%App%など)を入力して「問合せ」をクリックし、検索を実行します。検索基準と一致したエントリがすべて表示されます。たとえば、フレックスフィールドが所属するアプリケーションの名前として、「Application Object Library」ラジオ・ボタンを選択します。
フレックスフィールドのサブフロー - フレックスフィールド・アプリケーションの選択
または、直接「問合せ」をクリックして検索キーワードなしの空白検索を実行します。この場合は、すべてのフレックスフィールド・アプリケーション名が選択肢として表示されます。
「次」をクリックします。
「フレックスフィールドの選択」ページで、検索キーワードを入力し(必要な場合)、「問合せ」をクリックして検索を実行します。一致したキー・フレックスフィールドがすべて選択肢として表示されます。目的のキー・フレックスフィールドのラジオ・ボタンを選択します。
フレックスフィールドのサブフロー - フレックスフィールドの選択
「次」をクリックして処理を続行してください。
「マッピングの構成」ページが表示され、そこでキー・フレックスフィールドのマッピングを選択できます。選択したキー・フレックスフィールド名が自動的にフレックスフィールド名として表示されます。
このマッピング・ページでは、手作業でマッピングすることも、自動マップ機能を使用することもできます。
自動マップ機能はすべてのフレックスフィールド・セグメントを、パラメータ名の一部に列名を含むオープン・インタフェース表にマップします。たとえば、フレックスフィールド表の列SEGMENT1はインタフェース表の列TP_SEGMENT1にマップされます。インタフェース表の列とフレックスフィールド表の列名のセットが複数ある場合は、接頭辞を指定できます。
たとえば、TP_SEGMENT1、TP_SEGMENT2、TP_SEGMENT3、TP_SEGMENTn (nは番号)のようなTP_で始まるインタフェース表の列をすべて取得するには、接頭辞としてTP_を入力します。「自動マップ」をクリックすると、接頭辞TP_で始まるすべてのインタフェース表の列が、自動マップされたフレックスフィールド表の列名とともに表示されます。
注意: フレックスフィールドの値は、アプリケーションのデータベース表に格納されます。一般に、キー・フレックスフィールドではSEGMENTnと呼ばれる列にデータが格納され、付加フレックスフィールドではATTRIBUTEnと呼ばれる列にデータが格納されます(nは番号です)。
手動マッピングより対応したインタフェース表の列に対して希望するフレックスフィールド表の列を選択できます。
注意: インタフェース表の列がすでにフレックスフィールド表の列にマップされている場合、その列を別のフレックスフィールド表の列に再マップすることはできません。この場合は、マップされたインタフェース表の列の代わりに「他のフレックスフィールドにマップ済」と表示されます。
現在のマッピングをクリアするには、「マッピングのクリア」をクリックします。「他のフレックスフィールドにマップ済」のマークが付いているマップ済の列はすべて、システムから削除されません。
「次」をクリックして処理を続行してください。
フレックスフィールドの構成は、キー・フレックスフィールドの構造と付加フレックスフィールドの最低1つのコンテキスト値がないと完了しません。
「フレックスフィールドの構成」ページで、必要に応じて「構造」フィールドに検索キーワードを入力するか、単に「問合せ」をクリックして空白検索を実行します。選択したキー・フレックスフィールドに対して一致した構造がすべて表示されます。
構造は1つのみ選択します(AU_BANK_DETAILSなど)。
望みどおりの構造が選択肢としてウィザードに表示されるようにするには、特定の基準を満たす必要があることに注意してください。「フレックスフィールド構造とコンテキスト値の定義に関するガイドライン」を参照してください。
フレックスフィールドのサブフロー - フレックスフィールドの構成
注意: フレックスフィールド・マッピングに含められるキー・フレックスフィールドの構造は1つのみです。付加フレックスフィールドの場合は、複数のコンテキスト値をマッピングに含めることができます。
「終了」をクリックします。
Oracle E-Business Suiteモジュール・ブラウザ・ウィンドウが表示されます。新しく追加したキー・フレックスフィールド構造と、マップされたインタフェース表の列が「インタフェース表の列と対応するフレックスフィールド・マッピング 」領域に表示されます。
キー・フレックスフィールドの情報も、「フレックスフィールド定義」セクションに表示されます。
選択したキー・フレックスフィールドの情報の表示
フレックスフィールドの構成が完了したら、「OK」をクリックします。「アプリケーション・インタフェース」ページが開き、選択したオープン・インタフェース表が表示されます。
この例では、「マッピングの追加」をクリックして、この選択したオープン・インタフェース表への付加フレックスフィールド・マッピングを作成します。「オープン・インタフェース表での付加フレックスフィールド・マッピングの構成」を参照してください。
前述のビジネス・シナリオに基づいて、インドと日本の両方の顧客に適用される特別なオーダーをONT.OE_HEADERS_IFACE_ALLオープン・インタフェース表に挿入する必要があります。特別なオーダー・データの挿入後、リクエスト元へのレスポンス・メッセージの一部として、これらのデータを含む出力ファイルを書き出すよう依頼されました。
パートナ・リンク作成の一環としての付加フレックスフィールド・マッピングの構成
この例では、付加フレックスフィールドは所在国の異なる顧客のアドレス要件を表すために使用されます。
選択したオープン・インタフェース表ONT.OE_HEADERS_IFACE_ALLについて付加フレックスフィールド・マッピングを構成するには、「フレックスフィールドの構成」領域にある「マッピングの追加」をクリックします。ウィザードで表示される一連のフレックスフィールド選択ページの指示に従って、選択したAPIの新しいマッピングを構成できます。
「ようこそ」ページで「次へ」をクリックします。「フレックスフィールド・タイプの選択」ページが表示されます。
フレックスフィールドのサブフロー - フレックスフィールド・タイプの選択
付加フレックスフィールドを構成するには、次の手順を実行します。
「フレックスフィールド・タイプの選択」ページで「付加フレックスフィールド」ラジオ・ボタンを選択し、フレックスフィールド・マッピング・ウィザードで前述のキー・フレックスフィールドの場合と同様のアプローチを使用します。
「フレックスフィールド・タイプの選択」ページで「次へ」をクリックします。「フレックスフィールド・アプリケーションの選択」ページが表示されます。
目的のアプリケーションを見つけるには、検索キーワード(%App%など)を入力するか単に「問合せ」をクリックして、検索を実行します。付加フレックスフィールドに対して一致したアプリケーションがすべて表示されます。たとえば、付加フレックスフィールドが所属するアプリケーションの名前として、「Oracle Application Library」ラジオ・ボタンを選択します。
フレックスフィールドのサブフロー - フレックスフィールド・アプリケーションの選択
「次」をクリックします。
「フレックスフィールドの選択」ページで、必要に応じて検索キーワード(たとえばFND%)を入力し、「問合せ」をクリックして検索を実行します。一致した付加フレックスフィールドがすべて選択肢として表示されます。
目的の付加フレックスフィールド(たとえばFND_FLEX_TEST)を選択し、「次へ」をクリックします。
フレックスフィールドのサブフロー - フレックスフィールドの選択
「マッピングの構成」ページが表示され、そこで付加フレックスフィールドのマッピングを選択できます。
選択した付加フレックスフィールド名FND_FLEX_TESTが自動的にフレックスフィールド名として表示されます。
フレックスフィールドのサブフロー - マッピングの構成
付加フレックスフィールド・マッピングでのコンテキスト列の選択
付加フレックスフィールドの場合は、コンテキスト列に関する追加のマッピングを実行する必要があります。これは、複数のオープン・インタフェース表にわたってフレックスフィールドをマッピングすることはできないからです。コンテキスト列も含めたフレックスフィールド表のすべての列を、OIT表内のオープン・インタフェース表の列にマップする必要があります。
「コンテキスト列のマップ ATTRIBUTE_CATEGORY」フィールドで、マッピング情報を表示するカテゴリの名前をドロップダウン・リストから選択します。たとえば、ドロップダウン・リストからCONTEXTを選択します。
注意: オープン・インタフェース表の列がすでにフレックスフィールド表の列にマップされている場合、その列を別のフレックスフィールド表の列に再マップすることはできません。この場合は、マップされたオープン・インタフェース表の列の代わりに「他のフレックスフィールドにマップ済」と表示されます。
フレックスフィールドのサブフロー - コンテキスト列のマッピングの構成
キー・フレックスフィールドの場合と同様に、マッピングは手作業で行うことも、「自動マップ」をクリックして自動マップ機能を利用することもできます。
自動マップ機能はフレックスフィールド表のすべての列を、インタフェース表の列名の一部に列名を含むオープン・インタフェース表の列にマップします。たとえば、ATTRIBUTE1からATTRIBUTE20までのフレックスフィールド表の列名が自動的に表示され、自動マップ機能によってそれぞれATTRIBUTE1からATTRIBUTE20までのオープン・インタフェース表の列にマップされます。
オープン・インタフェース表の列とフレックスフィールド表の列名のセットが複数ある場合は、自動マッピングで接頭辞を指定する必要があります。これにより、マッピングの対象とみなす必要がある潜在的オープン・インタフェース表の列がマップされます。まず、表列の接頭辞(TPなど)を入力して、自動マッピングの対象となるインタフェース表の列を見つけます。次に、「自動マップ」をクリックします。接頭辞TP_で始まるすべてのインタフェース表の列が、自動マップされた表の列名とともに表示されます。インタフェース表の列'TP_ATTRIBUTE1'は列ATTRIBUTE1に、'TP_ATTRIBUTEn'はATTRIBUTEnにマップされます。
自動マップ機能を使用するかわりに、フレックスフィールド・マッピングで対応するインタフェース表の列にマップするフレックスフィールド表の列名をドロップダウン・リストから手作業で選択することもできます。
現在、フレックスフィールド表の列に設定されているマッピングのみをクリアするには、「マッピングのクリア」をクリックします。「他のフレックスフィールドにマップ済」のマークが付いているマップ済の列はすべて、システムから削除されません。
「次へ」をクリックして、次のページに進みます。
「フレックスフィールドの構成」ページで、選択した付加フレックスフィールドに対して少なくとも1つのコンテキスト値を選択します。たとえば、希望するコンテキスト値(INやJPなど)を選択します。
選択の前に、「コンテキスト」フィールドに検索キーワードを入力するか、単に「問合せ」をクリックして、検索を実行できます。
付加フレックスフィールドの場合、オープン・インタフェース表の列を通じてランタイムがコンテキスト値を使用できるようにする必要があります。
望みどおりのコンテキスト値が選択肢としてウィザードに表示されるようにするには、特定の基準を満たす必要があることに注意してください。「フレックスフィールド構造とコンテキスト値の定義に関するガイドライン」を参照してください。
フレックスフィールドのサブフロー - フレックスフィールドの構成
「終了」をクリックしてフレックスフィールドの構成を完了します。
Oracle E-Business Suiteモジュール・ブラウザ・ウィンドウが表示されます。新しく追加した付加フレックスフィールド情報が、選択したコンテキスト値のセグメント値も含めて、ウィンドウの右側のペインに表示されます。
選択した付加フレックスフィールドの情報の表示
「OK」をクリックします。
「アプリケーション・インタフェース」ページが開き、選択したオープン・インタフェース表が表示されます。
選択したオープン・インタフェース表の表示
「次」をクリックします。
「操作タイプ」ページが表示されます。
「アダプタ構成ウィザード」 - 「操作タイプ」ページ
「表に対して操作を実行」ラジオ・ボタンを選択し、「選択」チェック・ボックスと「挿入」チェックボックスを選択します。
「次」をクリックします。「表の選択」ページが開き、このJDeveloperプロジェクトで以前にインポートした表が表示されます。OE_HEADER_IFACE_ALL表を選択します。
「アダプタ構成ウィザード」 - 「表の選択」ページ
「次」をクリックします。「リレーションシップ」ページが表示されます。
「次」をクリックします。「属性のフィルタ処理」ページが表示されます。
「すべて選択解除」をクリックし、「orderSourceId」チェックボックスのみ選択します。
キー・フレックスフィールドと付加フレックスフィールドの両方について、あらかじめ定義したマップ済みフレックスフィールド表の列名は、このページですでに選択されています。ただし、これらの属性は淡色表示されていて、選択解除できません。
「アダプタ構成ウィザード」 - 「属性のフィルタ処理ページとマップ済みフレックスフィールド列名 」ページ
「次」をクリックします。SQL文があらかじめ入力された「選択条件の定義」ページが表示されます。
アダプタ構成ウィザード - 選択条件の定義ページ
「次」をクリックします。「詳細オプション」ページが表示されます。
「次」をクリックします。「JCAエンドポイント・プロパティ」ページが表示されます。
「次へ」をクリックし、「終了」をクリックします。
パートナ・リンクに対応するWSDLファイルが生成されます。拡張XSDファイル(たとえばAppsReference_flex.xsd)も作成されます。このXSDファイルには、フレックスフィールドのセグメント名で置き換えられたインタフェース表の列を表す要素を使用してプロシージャの引数を記述するスキーマが収められています。
「適用」をクリックし、「OK」をクリックします。
さらに、構成ファイルとフレックスフィールド・マッピング・ファイルも作成されます。これらのファイルの詳細は、「フレックスフィールドの構成の確認」を参照してください。
新しいフレックスフィールド・マッピングを構成または追加した後、変更が必要になった場合は、まず変更対象のフレックスフィールド・タイプを選択して、必要な変更を行います。選択したマッピングの詳細を変更する方法の詳細は、「フレックスフィールド・マッピング定義の変更」を参照してください。
パートナ・リンクの作成時に構成されたキー・フレックスフィールドと付加フレックスフィールドの両方のマッピング・データを、SOAコンポジット内のBPELプロセスにまとめられた次のアクティビティとともに設計時に表示することができます。
キー・フレックスフィールド・マッピングおよび付加フレックスフィールド・マッピングを使ったコンポジットの例
次の例では、SOAコンポジットのBPELプロセスにおけるキー・フレックスフィールドおよび付加フレックスフィールドの両方のマッピングを説明します。
BPELプロセスを持つ新しいSOAコンポジット・アプリケーションを作成します。
ONT.OE_HEADERS_IFACE_ALLオープン・インタフェース表に対して構成した前述のキー・フレックスフィールド・マッピングと付加フレックスフィールド・マッピングを使用するAppsReferenceと呼ばれるパートナ・リンク・サービスを追加します。
ファイル・アダプタWriteSelectOutputに対するパートナ・リンクを追加し、挿入したオーダー・データを出力ファイルとしてXML形式で書きこみます。
「ファイル・ディレクトリ」ダイアログで、出力xmlファイル(たとえばoutput_payload.xml)が存在する物理ディレクトリ(たとえば/usr/tmp)を入力します。
「メッセージ」ダイアログで、「URL」フィールドの横にある「スキーマ・ファイルを参照」アイコンを選択して「タイプ・チューザ」を開きます。
「タイプ・エクスプローラ」をクリックして、「プロジェクトのスキーマ・ファイル」→「AppsReference_table.xsd」→「OeHeaderIFaceAllCollection」を選択します。
フレックスフィールドのメッセージ・スキーマの選択
「OK」をクリックします。選択したスキーマ情報は、「URL」フィールドと「スキーマ要素」フィールドに自動的に移入されます。
選択したメッセージ・スキーマの表示
3つのinvokeアクティビティを構成します。
1番目のInvokeアクティビティは、データを挿入するために、オープン・インタフェース表の列ONT.OE_HEADERS_IFACE_ALLと関連付けます。
Invokeの詳細の表示
2番目のInvokeアクティビティは、選択したオーダー・データを使ってサービスを起動するために、フレックスフィールド・マッピングを含んでいるパートナ・リンクAppsReferenceと関連付けます。必ず「出力」タブをクリックして、出力変数を指定してください。
Invokeの詳細の表示
3番目のInvokeアクティビティは、出力ファイルを書き込むために、ファイル・アダプタのパートナ・リンクWriteSelectOutputと関連付けます。
2つのAssignアクティビティを追加します。
入力ペイロードの一部としてあらかじめ定義しておいたキー・フレックスフィールドと付加フレックスフィールドの両方を含むオーダー・データを1番目のInvokeアクティビティに渡し、サービスAppsReferenceを呼び出します。
Oracle E-Business Suiteで定義された一致するフレックスフィールド・セグメントに対応する、マップされたキー・フレックスフィールドおよび付加フレックスフィールドの列名が、assignアクティビティに表示されます。「assignアクティビティでのキー・フレックスフィールドと付加フレックスフィールドを使用したパラメータの割当て」を参照してください。
サービス呼出しから出力の詳細を入力データとしてファイル・アダプタに渡します。
SOAコンポジット内のBPELプロセスの構築
設計時タスクを作成する方法の詳細は、「オープン・インタフェース表に関する設計時タスク」を参照してください。
スキーマ・ファイル内のフレックスフィールドの検証
Oracle JDeveloperで拡張XSDファイル(たとえばAppsReference_flex.xsd)を選択し、マップされたキー・フレックスフィールドがflex型でSample_Adapter_KFFの下に表示されていること、およびマップされた付加フレックスフィールドが、FND_FLEX_TESTフレックスフィールドの下にflex型のスキーマの一部として表示されていることを確認します。
次の表は、キー・フレックスフィールドについて、マッピング・データとOracle E-Business Suiteで定義された実際のセグメントとの関係を示しています。
フレックスフィールドの構成時にマップされたキー・フレックスフィールド・セグメント | Oracle E-Business Suiteで定義されたキー・フレックスフィールド・セグメント |
---|---|
SEGMENT1 | BSB_Number |
SEGMENT2 | Account_Number |
SEGMENT3 | Account_Name |
マッピングが完了すると、キー・フレックスフィールドBSB_Numberに対してマップされたセグメント列名、Account_NumberとAccount_NameがOracle E-Business Suiteモジュール・ブラウザに表示されます。
スキーマ・ファイル内のマップされたキー・フレックスフィールド・セグメントの表示
付加フレックスフィールドの場合、ツリー構造にリストされたマップ済みの表の列名Address_Line1、Address_Line2、Address_Line3、Town/City、State、およびPin_Codeはコンテキスト値INで、Postal_Code、Province、City、Address_Line1、Address_Line2、およびAddress_Line3はコンテキスト値JPでグループ化されます。コンテキスト値のノード間は「<choice>」アイコンによって接続されており、いずれか1つのコンテキスト値とそれに関連付けられた表列のみが選択可能であることを示しています。
スキーマ・ファイル内のマップされた付加フレックスフィールド・セグメントの表示
assignアクティビティでのキー・フレックスフィールドおよび付加フレックスフィールドを使用したパラメータの割当て
SOAコンポジット・アプリケーション内のBPELプロセス・ダイアグラムのassignアクティビティに、マップされたキー・フレックスフィールドおよび付加フレックスフィールドを表示して、ペイロードから受け取った入力変数をinvokeアクティビティに渡してAppsReferenceサービスを起動するために使用できます。
assignアクティビティでのマップされたキー・フレックスフィールドおよび付加フレックスフィールドの表示
Assignアクティビティで、マップされたキー・フレックスフィールドは「変数」→「プロセス」→「変数」→「Invoke_Insert_InputVariable」→「OeHeadersIfaceAllCollection」→「ns4:OeHeadersIfaceAllCollection」→「ns4:OeHeadersIfaceAll」→「ns5:Sample_Adapter_KFF」の下に表示されます。
マップされた付加フレックスフィールドは「変数」→「プロセス」→「変数」→「Invoke_Insert_InputVariable」→「OeHeadersIfaceAllCollection」→「ns4:OeHeadersIfaceAllCollection」→「ns4:OeHeadersIfaceAll」→「ns5:FND_FLEX_TEST」の下に表示されます。<choice>ノードを展開し、選択したコンテキスト値(INまたはJP)に基づいて、セグメント値を見つけます。
ターゲット・パラメータns5:ATTRIBUTE1は、前述の付加フレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
Address_Line1(コンテキスト値<sequence(IN)>の下)
Postal_Code(コンテキスト値<sequence(JP)>の下)
ターゲット・パラメータns5:ATTRIBUTE2は、前述のフレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
Address_Line2(コンテキスト値<sequence(IN)>の下)
Province(コンテキスト値<sequence(JP)>の下)
ターゲット・パラメータns5:ATTRIBUTE3は、前述のフレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
Address_Line3(コンテキスト値<sequence(IN)>の下)
City(コンテキスト値<sequence(JP)>の下)
ターゲット・パラメータns5:ATTRIBUTE4は、前述のフレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
Town/City(コンテキスト値<sequence(IN)>の下)
Address_Line1(コンテキスト値<sequence(JP)>の下)
ターゲット・パラメータns5:ATTRIBUTE5は、前述のフレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
State(コンテキスト値<sequence(IN)>の下)
Address_Line2(コンテキスト値<sequence(JP)>の下)
ターゲット・パラメータns5:ATTRIBUTE6は、前述のフレックスフィールド構成時に次の付加フレックスフィールド列にマップされています。
Pin_Code(コンテキスト値<sequence(IN)>の下)
Address_Line3(コンテキスト値<sequence(JP)>の下)
変数の割り当て
1番目のAssignアクティビティについては、次の手順を使用して変数を割り当てます。
マップされたフレックスフィールドを使用したパラメータの割当て
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「inputVariable」の順にナビゲートして、「body」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke_Insert_InputVariable」の順にナビゲートして、「OeHeadersIfaceAllCollection」を選択します。
ソース・ノード(本体)を、選択したターゲット・ノード(OeHeadersIfaceAllCollection)にドラッグします。 これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
2番目のAssignアクティビティについては、次の手順を使用して変数を割り当てます。
マップされたフレックスフィールドを使用したパラメータの割当て
ソースとターゲットに含まれるOeHeadersIfaceAllCollectionノード変数は同じものなので、各フレックスフィールドを指定する代わりに、ソース・ノード(OeHeadersIfaceAllCollection)をターゲット・ノード(OeHeadersIfaceAllCollection)にただドラッグするだけで、2番目のAssignアクティビティは完成します。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke_AppsReferenceSelect_OutputVariable」の順にナビゲートして、「OeHeadersIfaceAllCollection」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke_Write_InputVariable」の順にナビゲートして、「body」を選択します。
ソース・ノード(OeHeadersIfaceAllCollection)を、選択したターゲット・ノード(body)にドラッグします。 これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
「適用」をクリックして「OK」をクリックし、assignアクティビティの構成を完了します。
SOAコンポジット・アプリケーションに含まれているBPELプロセスをOracle WebLogic管理対象サーバー(たとえばsoa-server1)にデプロイすると、前述のように構成したキー・フレックスフィールドおよび付加フレックスフィールドがOracle Enterprise Manager Fusion Middleware Controlコンソール(http://<servername>:<portnumber>/em)に表示されます。
ファームのベース・ドメインで、「SOA」→「soa-infra (soa-server1)」→「デフォルト」を展開して、SOAインフラストラクチャ・ホーム・ページとメニューをナビゲートし、デプロイ済のSOAコンポジット・アプリケーション('Insert [1.0]'など)にアクセスします。
「Insert [1.0]」を選択し、ページ最上部にある「テスト」をクリックします。インスタンスを起動するための「Webサービスのテスト」ページが表示されます。
「入力引数」セクションで使用するXMLペイロード・データを指定できます。
XMLペイロード・データの提供
先ほど定義したキー・フレックスフィールド・マッピングおよび付加フレックスフィールド・マッピングの両方とも、入力ペイロード・フィールドの一部として表示されます。
マップされたフレックスフィールドを入力ペイロードの一部として含める
ペイロードの一部としてマップされた付加フレックスフィールドを表示
SOAP Bodyセクションで、「ペイロード」→「OeHeadersIfaceAll」→「OeHeadersIfaceAll」→「FND_FLEX_TEST」の順に展開します。
実行時のマップされたフレックスフィールドの表示
前述の設計時に構成した付加フレックスフィールドのセットが、ペイロード入力の一部として渡され、実行時に表示されます。
FND_FLEX_TEST(コンテキスト値'IN')
Address_Line1
Address_Line2
Address_Line3
Town/City
State
Pin_Code
ペイロードの一部としてマップされたキー・フレックスフィールドを表示
SOAP Bodyセクションで、「ペイロード」→「OeHeadersIfaceAll」→「OeHeadersIfaceAll」→「Sample_Adapter_KFF」の順に展開します。
マップされたキー・フレックスフィールドが、次のマップ済みセグメントとともに入力ペイロード・フィールドの一部として表示されます。
BSB_Number
Account_Number
Account_Name
入力ペイロードの一部としてマップされたキー・フレックスフィールドの表示
入力ペイロードとして適切なデータを入力します。「起動」をクリックしてサービスを呼び出します。
「インスタンスID」列で特定のインスタンスIDをクリックすると、様々なサービス・コンポーネントとバインディング・コンポーネントのメッセージ・フローが表示されます。「フローのトレース」ページが表示されます。
BPELコンポーネントの挿入リンクをクリックします。インスタンスの詳細が表示されます。
「監査証跡」タブで、1番目のInvokeアクティビティの下にある<payload>リンクをクリックします。ペイロードの詳細が表示されます。
ファイル・アダプタを定義したときに書込み操作に指定したディレクトリ(\user\tmpなど)に移動します。出力XMLファイルを開きます。このデータは、1番目のInvokeアクティビティのペイロードで表示された入力の詳細と同じであるはずです。
出力コンテンツはリクエスト元に対するレスポンス・メッセージの一部です。
レスポンス・メッセージの表示
新しいマッピングを構成するかわりに、選択したインタフェースのために単に既存のマッピングをインポートすることもできます。構成済のマッピングを使用すれば、インタフェースのフレックスフィールド・マッピングを短時間で確立したり、構成済のマッピングを土台として必要に応じた変更を加えることができます。
既存のマッピングをインポートするには、「フレックスフィールドの構成」領域で「ファイルからインポート」をクリックします。「オープン」ウィンドウが表示され、目的のフレックスフィールド・マッピングを選択できます。
目的のフレックスフィールド・マッピングの選択
インポートするマッピングを選択したら、「オープン」をクリックします。選択したマッピング・ファイルが「フレックスフィールド・データのインポート」のプロジェクト・フィールドに自動的に表示されます。
たとえば、HZ_AIA_CUSTOM_PKG_SYNC_ACCT_ORDER_SyncOrder_mapping.xmlファイルを選択すると、選択したAPIに対してインポートされたマッピングが、選択したマッピング・ファイル名とともに自動的に「パラメータと対応するフレックスフィールドのマッピング」領域に表示されます。
インポートしたフレックスフィールド・マッピング
選択したインタフェースに対して希望するマッピングをインポートするときには、キー・フレックスフィールドの構造と付加フレックスフィールドのコンテキスト値を選択する必要があります。
まず、「フレックスフィールド定義」セクションで変更が必要なキー・フレックスフィールドまたは付加フレックスフィールドを選択し、「編集」をクリックします。「フレックスフィールドのサブフロー - ようこそ」ページが表示されます。「次へ」をクリックし、付加フレックスフィールドの場合は希望するフレックスフィールド・コンテキスト値を選択します。
インポートしたマッピングに対するコンテキスト値の選択
「終了」をクリックして、付加フレックスフィールドのマッピング情報を完成させます。更新された付加フィールド・コンテキスト値(Ecuador)が、「パラメータと対応するフレックスフィールドのマッピング」領域と「フレックスフィールド定義」セクションの両方に追加されます。
インポートしたマッピングによるマップされたフレックスフィールドの表示
「OK」をクリックする前に、同じアプローチを使用して、構造情報を必要とするキー・フレックスフィールドを更新します。
選択したマッピングの詳細を変更する方法の詳細は、「フレックスフィールド・マッピング定義の変更」を参照してください。
Oracle E-Business Suite Adapterでは、必要なだけ、キー・フレックスフィールドと付加フレックスフィールドの両方のフレックスフィールド・マッピング低誤を変更できます。ただし、変更できるのは付加フレックスフィールドのコンテキスト値とキー・フレックスフィールドの構造のみです。構造またはコンテキスト値の変更以上の更新が必要な場合は、まずそのフレックスフィールド・マッピングを削除してから新しいフレックスフィールド・マッピングを構成する必要があります。
フレックスフィールドのマッピング・データの変更
フレックスフィールド・マッピング・データを変更するには、「フレックスフィールド定義」セクションで変更するキー・フレックスフィールドまたは付加フレックスフィールドを選択し、「編集」をクリックします。選択したフレックスフィールド・タイプに対応する適切なフレックスフィールド・ページが表示され、そこでフレックスフィールド・マッピングの詳細を変更できます。
フレックスフィールドのマッピング・データの変更
たとえば、付加フレックスフィールド(HZ_LOCATIONS)の構造を変更します。フレックスフィールドのサブフロー ようこそウィザードで「次へ」をクリックすると、「フレックスフィールドの構成」ウィンドウが表示されます。
フレックスフィールドのサブフロー - フレックスフィールドの構成
「問合せ」をクリックし、コンテキスト値として「Ecuador」チェック・ボックスのみを選択します。「終了」をクリックして変更を完了します。更新されたフレックスフィールド情報が、「フレックスフィールド定義」セクションに反映されます。
変更したフレックスフィールド・マッピング・データの検証
フレックスフィールド構成xmlファイル(<projectname>_flex-config.xml)で変更を検証することもできます。「フレックスフィールド・マッピングの構成の確認」を参照してください。
それぞれの「フレックスフィールドのサブフロー」ウィンドウの構成または追加方法の詳細は、「新しいマッピングの追加または構成」を参照してください。
フレックスフィールド・マッピング・データの削除
フレックスフィールド・マッピング・データを削除するには、削除するキー・フレックスフィールドまたは付加フレックスフィールドを選択して「削除」をクリックします。選択したフレックスフィールド・マッピング・データとそれに関連付けられた構造または値がデータベースから削除されます。
また、[Ctrl]キーと[Shift]キーを使用して、複数のフレックスフィールド・マッピングを選択してから削除することもできます。
フレックスフィールド・マッピング情報を含むパートナ・リンクを作成した後、Oracle JDeveloperから「SOA」→「Schemas」の順にフォルダを展開して拡張XSDファイル(たとえばProcessItem_KFF_flex.xsd)を選択し、前述の構成または更新したフレックスフィールド・マッピングの情報を検証します。
設計時に選択されたマッピングに基づいて、拡張スキーマ情報がフレックスフィールド・セグメント名とともに表示されます。
拡張XSDファイルの表示
さらに、XSDファイルに加えて次の2つのxmlファイルが作成されます。「SOA」 > 「Adapters」フォルダを開いて、ファイルの詳細を表示します。
マッピングXML: マッピングxmlファイル(たとえばINV_EBI_ITEM_PUB_PROCESS_ITEM_LIST_ProcessItem_KFF_mapping.xml)には、マッピング・ウィザード・パネルで取得されたマッピング情報が格納されます。この情報は、同じAPIのために再利用したり、別のパートナ・リンクからインポートすることができます。
キー・フレックスフィールド・マッピングの詳細の表示
もう1つのマッピング例(ONT_OE_HEADERS_IFACE_All_mapping.xml)は、先ほど定義したオープン・インタフェース表のものです。この例には、キー・フレックスフィールドと付加フレックスフィールドの両方のマッピングが含まれています。
キー・フレックスフィールド・マッピングと付加フレックスフィールド・マッピングの詳細の表示
選択したAPIまたはオープン・インタフェース表に対してフレックスフィールド・マッピングをインポートする方法の詳細は、「既存のフレックスフィールド・マッピングのインポート」を参照してください。
構成XML: 構成xml (たとえばOE_ORDER_PUB_PROCESS_LINE_GL_Flexfield_flex-config.xml)には、キー・フレックスフィールド・マッピングおよび付加フレックスフィールド・マッピングの両方を含む(構成されている場合)フレックスフィールド情報が格納されます。これは再利用できません。
構成xmlはパートナ・リンク内のファイルであり、編集も再利用もできないことに注意してください。
フレックスフィールド構成の詳細の表示
Oracle E-Business Suite Adapterは、Oracle SOA Suiteのロギング・フレームワークを実装し、診断ログ・ファイルをテキスト形式で記述します。したがって、Oracle E-Business Suite Adapterを使用してOracle E-Business Suiteサービスを起動すると、必ずシステム管理者がアクセスできるログ・メッセージが記録されます。これによって、問題の識別メカニズムが強化され、Oracle E-Business Suite Adapterの実行時に、サービスを起動する際の問題を追跡できるようになります。
Oracle E-Business Suite Adapterおよびテクノロジ・アダプタは、JCAバインディング・コンポーネントのLogManagerインタフェースを実装し、これによって、インバウンドとアウトバウンドの両方の相互作用のログ・ファイルがOracle Diagnostic Logging(ODL)形式でsoa-diagnostic.logファイルにリダイレクトされます。これらのログ・ファイルは、すべてのタイプのイベント(起動と停止の情報、エラーと警告メッセージ、HTTPリクエストへのアクセス情報、追加情報など)を記録します。これによって、発生する可能性のある問題を管理者が効率的に特定して解決するために役立つ、起動プロセスについてのインサイド・アウトのクイック・ビューが表示されます。Oracle Enterprise Manager Fusion Middleware Controlコンソールで適切なログ・レベルを構成すると、Oracle E-Business Suite Adapterおよびテクノロジ・アダプタの実行時に単一ファイルに書き込まれたODLレベルのログ・ファイルを表示できます。
ロギング・メカニズムがどのように動作するかについては、この章の次の項で説明します。
SOA Suiteの詳細は、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』を参照してください。
Oracle E-Business Suite Adapterとテクノロジ・アダプタのすべてのログは、soa-diagnostic.logファイルにOracle Diagnostic Logging(ODL)形式でリダイレクトされます。Oracle E-Business Suite Adapterのログを表示できるようにするには、Oracle Enterprise Manager Fusion Middleware Controlコンソールを使用して、適切なメッセージ・タイプとそれに関連付けられたログ・レベルをログ出力oracle.soa.adapter用に設定し、有効にする必要があります。これによって、Oracle SOA Suiteレベルでログ設定が有効になります。
注意: ログ出力構成は$FMWHOME/user_projects/domains/soainfra/config/fmwconfig/servers/soa_server1/logging.xmlにあり、すべてのOracle JCAアダプタに対応するログ出力名はoracle.soa.adapterと呼ばれます。
次の表に、診断メッセージ・タイプとログ・レベルを示します。
注意: 各メッセージ・タイプで、メッセージ・レベルに設定できる値は1(重大度が最も高い)から32(重大度が最も低い)です。各メッセージ・タイプに一部のレベルだけがサポートされているコンポーネントもあります。一般に、タイプだけで指定する必要があり、レベルを指定する必要はありません。
各ログ出力のデフォルトのメッセージ・タイプは、NOTIFICATION、レベル1に設定されています。
メッセージ・タイプ | レベル | 説明 |
---|---|---|
INCIDENT_ERROR | 1 | 製品の不具合によって発生し、Oracleサポートに報告する必要のある深刻な問題。 たとえば、リカバリ不能なエラーなどの深刻な問題があります。 |
ERROR | 1 | 管理者が注意する必要があるが、製品の不具合によって発生するものではない深刻な問題。 Oracle Fusion Middlewareではログ・ファイルを処理できないが、ドキュメントに対する権限を修正することで問題を解決できる場合などが、これに該当します。 |
WARNING | 1 | 管理者による確認を要する、潜在的な問題。 |
NOTIFICATION | 1 | プライマリ・サブコンポーネントや機能のアクティブ化や非アクティブ化などの主要なライフサイクル・イベント。 |
NOTIFICATION | 16 | 通常のイベントをレポートする粒度の詳細なレベル。 |
TRACE | 1 | パブリックAPIエントリや終了ポイントなど、管理者に重要なイベントに関するトレースまたはデバッグ情報。 |
TRACE | 16 | 特定のサブシステムにおける問題を診断するためにOracleサポート・サービスが利用できる詳細トレース情報または詳細デバッグ情報。 |
TRACE | 32 | 特定のサブシステムにおける問題を診断するためにOracleサポート・サービスが利用できるきわめて詳細なトレース情報またはデバッグ情報。 |
Oracle SOA SuiteでOracle E-Business Suite Adapterの診断メッセージのタイプとログ・レベルを設定するには、次のように操作します。
次の手順に従って、メッセージ・タイプとそれに関連付けられたログ・レベルを設定します。
http://<servername>:<portnumber>/emに移動します。
Oracle Enterprise Manager Fusion Middleware Controlコンソールのホーム・ページが表示されます。
ユーザー名とパスワードを入力して、コンソールにログオンします。
「ナビゲータ」ツリーで「SOA」フォルダの「soa-infra」を右クリックします。
ポップアップ・メニューから「ログ」>「ログ構成」を選択します。
注意: SOAインフラストラクチャ」メニューをクリックして、ドロップダウン・メニューから「ログ」>「ログ構成」を選択しても、「ログ構成」ページにアクセスできます。
ログ出力のリストを表示でき、ログ・ファイルに書き込む情報の量と種類、およびログ・レベル状態を設定するためのOracle Diagnostic Logging(ODL)レベルを構成できる「ログ構成」ページが開きます。
「ログ・レベル」タブを選択します。
「表示」ドロップダウン・リストから次のいずれかの値を選択します。
ランタイム・ログ出力(デフォルト): ランタイム出力は、実行時に自動的に作成され、サービスの実行時にアクティブになります。たとえば、oracle.soa.b2bまたはoracle.soa.bpelはランタイム出力です。ランタイム出力のログ・レベルは、コンポーネントを再起動するとリセットされます。
永続ログ・レベル状態のログ出力: 永続ログ出力は、構成ファイルに保存され、コンポーネントの起動時にアクティブになるログ出力です。これらのログ出力のログ・レベルは、コンポーネントを再起動しても保持されます。
注意: デフォルトでは、ログ・レベルはランタイム出力用に設定されています。ランタイム出力は、コンポーネントを再起動するとリセットされます。コンポーネントを再起動してもログ・レベルが保持されるようにするには、「表示」リストから「永続ログ・レベル状態のログ出力」を選択します。
oracle.soaノードを展開し、「ログ出力名」リストでoracle.soa.adapterランタイム・ログ出力を検索します。Oracle Diagnosticの「ログ・レベル」ドロップダウン・リストからログ出力レベルを選択します。たとえば、「TRACE:32 (FINEST)」を選択します。
「適用」をクリックします。
「ログ・ファイル」タブでのログ・ファイルの作成と編集
「ログ・ファイル」列に表示されるログ・ヘッダー・リンクをクリックして、特定のログ・ファイルを編集できます。基本的な構成設定や詳細なログ設定を構成できる「ログ・ファイル」タブが開きます。これらの設定には、ハンドラ名、ログ・メッセージが記録されるログ・ファイル、ログ・メッセージの処理機、使用されるローテーション・ポリシー、ログ・ファイル構成クラスに基づくその他のパラメータが含まれます。
たとえば、表からログ・ハンドラを選択し、「構成の編集」を選択します。「ログ・ファイルの編集」ダイアログ・ボックスが表示されます。
ログ・ファイルの場所を変更するには、「ログ・パス」フィールドで新しいパスを入力します。
メッセージ・レベルを構成するには、「ログ・レベル」ドロップダウン・リストからロギング・レベルを選択します。たとえば、「TRACE:32 (FINEST)」を選択します。
ログ・ファイル・ローテーションを構成するには、「ローテーション・ポリシー」セクションで、適切な情報を指定して、「サイズ・ベース」または「時間ベース」のログ・ファイルを選択します。
ログ・ファイルの構成方法の詳細は、see the Managing Log Files and Diagnostic Data Chapter, 『Oracle Fusion Middleware管理者ガイド』の「ログ・ファイルと診断データの管理」の章を参照してください。
SOA Suiteの詳細は、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』を参照してください。
Oracle SOA Suiteのoracle.soa.adapterランタイム・ログ出力に設定されたログ・レベルに基づき、ランタイム実行時にPL/SQL APIおよびコンカレント・プログラムのインタフェースが起動されている間、これらのインタフェースのロギングを自動的に制御または有効化できます。Oracle E-Business Suite側でFNDロギング・フレームワークを別途有効化する必要はありません。
注意: この自動FNDロギングを使用できるのは、Oracle E-Business Suiteリリース12.1.3以上のみです。
oracle.soa.adapterランタイム・ログ出力と、対応するOracle E-Business Suiteのログ・レベルのマッピングを次の表に示します。
ランタイム・ログ出力oracle.soa.adapterのログ・レベル | Oracle E-Business Suiteのログ・レベル |
---|---|
INCIDENT_ERROR | LEVEL_UNEXPECTED |
ERROR | LEVEL_ERROR |
WARNING | LEVEL_EXCEPTION |
NOTIFICATION 1, 16, 32 | LEVEL_EVENT |
TRACE 1 | LEVEL_PROCEDURE |
TRACE 16, 32 | LEVEL_STATEMENT |
Oracle E-Business Suite Adapterとテクノロジ・アダプタは、JCAバインディング・コンポーネントのLogManagerインタフェースを実装し、Oracle Diagnostic Logging(ODL)フォーマットで実行時に単一ファイルに書き込まれたログ・ファイルがリダイレクトされます。
アウトバウンドとインバウンドの両方の相互作用で、ログ・ファイルは単一ファイルsoa-diagnostic.logにリダイレクトされます。
server-soa管理対象サーバーにデプロイされたOracle SOA Suiteのログ・ファイルは、MW_HOME/user_projects/domains/<domain_name>/servers/server-soa/logs/soa-diagnostic.logに格納されます。
Oracle E-Business Suite Adapterログ・ファイルを検索して表示するには、Oracle Enterprise Manager Fusion Middleware Controlコンソール、WLST displayLogsコマンド行ツールを使用するか、またはローカル・クライアントにログ・ファイルをダウンロードして、別のツール(テキスト・エディタや別のファイル表示ユーティリティなど)を使用して表示します。WLSTコマンド行ツールを使用してログ・ファイルを検索して表示する方法の詳細は、『Oracle Fusion Middleware管理者ガイド』の「ログ・ファイルおよび診断データの管理」の章を参照してください。
次の手順を使用して、Oracle Enterprise Manager Fusion Middleware Controlコンソールからアダプタ・ログを検索します。
http://<servername>:<portnumber>/emに移動します。
Oracle Enterprise Manager Fusion Middleware Controlコンソールのホーム・ページが表示されます。
ユーザー名とパスワードを入力して、コンソールにログオンします。
左側のペインにある「ナビゲータ」ツリーから「ログ・メッセージ」ページにアクセスするには、次の2つの方法があります。
「SOA」フォルダから「soa-infra」を右クリックします。
「WebLogicドメイン」フォルダから「soainfra」を右クリックします。
ポップアップ・メニューから「ログ」→「ログ・メッセージの表示」を選択します。「ログ・メッセージ」ページに、「検索」セクションとデフォルトの検索基準が表示されたメッセージのサマリーが表示された表が表示されます。
Oracle E-Business Suite Adapterのログ・メッセージを検索するための検索基準を入力します。
日付範囲: ドロップダウン・リストから値を選択し、適切な数値を入力します。たとえば、「最新」として6時間などです。
ドロップダウン・リストから「時間間隔」を選択する場合は、カレンダ・アイコンで「開始日」を選択した後、日付と時間を選択します。同様に、カレンダ・アイコンで「終了日」を選択した後、日付と時間を選択します。
メッセージ・タイプ: 1つ以上のメッセージ・タイプを選択します。たとえば、Oracle E-Business Suite Adapter用に以前に構成されているメッセージ・タイプの場合は、「トレース」チェック・ボックスを選択します。
メッセージ: 値のリストから「次を含む」を選択した後、テキスト・ボックスに「Oracle E-Business Suite Adapter」と入力します。
必要に応じて、「検索」セクションに追加の検索基準を指定します。
「フィールドの追加」をクリックして、さらに検索基準を追加することもできます。この操作によって、ホストなどさらに基準を追加でき、検索結果を特定のホストに絞り込むことができます。その後、「追加」をクリックします。
「検索」をクリックして、検索を実行します。検索基準に一致するすべてのメッセージが検索され、表に表示されます。これらのメッセージはメッセージとして表示することも、「表示」フィールドで選択した値に応じて、メッセージ・タイプやメッセージIDごとにグループ分けすることもできます。
表からいずれかのログ・メッセージをクリックします。メッセージ・レベル、コンポーネント、ECID(Execution Context ID)、関係ID、実際のメッセージなどのメッセージの詳細がメッセージ表の下に表示されます。
「ECID」リンクをクリックすると、「ECIDごとの関連メッセージ」ページに同じECIDを持つ関連メッセージが検索されます。関連メッセージの詳細は、「ログ・ファイルとコンポーネント間のメッセージの関連付け」を参照してください。
ログ・メッセージをOracle Diagnosticログ・テキスト・ファイル(.txt)、XMLファイル(.xml)またはカンマ区切りリスト(.csv)ファイルとしてエクスポートする場合は、「メッセージをファイルにエクスポート」ドロップダウン・リストから適切な出力オプションを選択します。
「ターゲット・ログ・ファイル」をクリックして、管理対象サーバー(server-soa)に関連するログ・ファイルのリストが表示される「ログ・ファイル」ページを開きます。
ファイルを選択して「ログ・ファイルの表示」をクリックします。選択したログ・ファイルの「ログ・ファイルの表示」ページが表示され、このログに含まれるメッセージのリストを表示できます。
メッセージの詳細を表示するには、メッセージを選択します。メッセージ・レベル、コンポーネント、ECID、関係ID、実際のメッセージなどのメッセージの詳細が、メッセージ表の下に表示されます。
時間またはECIDを基準にして関連メッセージを表示するには、「関連メッセージの表示」をクリックして、「時間ごと」または「ECID(実行コンテキストID)ごと」を選択します。
または、メッセージの詳細から「ECID」リンクを直接クリックしても、「ECIDごとの関連メッセージ」ページに同じECIDを持つ関連メッセージを検索できます。
Oracle Fusion Middlewareコンポーネントは、診断メッセージにメッセージ相関情報を提供します。メッセージ相関情報は、診断メッセージを表示したユーザーがコンポーネント間のメッセージの関係を判定する際に役立ちます。診断メッセージのそれぞれに、実行コンテキストID(ECID)と関係IDが組み込まれています。
ECIDは、特定のリクエストの実行に関連付けられたグローバルに一意の識別子です。ECIDは、リクエストが最初に処理されるときに生成されます。関係IDは、同じリクエストのかわりに、あるプロセスの1つのスレッドで実行された作業と、このプロセスまたは他のプロセスの別のスレッドで実行された作業を区別します。
Oracle Enterprise Manager Fusion Middleware Controlコンソールにログ・メッセージを表示した状態で、ログ・メッセージを選択した後、「関連メッセージの表示」ドロップダウン・リストから次のいずれかの値を選択すると、関連するメッセージを表示することができます。
注意: 「関連メッセージの表示」は、検索基準に基づいて一致するすべてのメッセージを表示している状態で、「表示」フィールドで「メッセージ」 が選択されているときだけ選択できます。「表示」フィールドで「メッセージ・タイプ別グループ」または「メッセージID別グループ」が選択されていると、一致するすべてのメッセージがメッセージ・タイプまたはメッセージIDごとにグループ分けされて表示されます。この場合、「関連メッセージの表示」フィールドは使用できません。
時間別: 「時間ごとの関連メッセージ」ページが表示され、選択したメッセージと同じタイムスタンプを持つすべてのメッセージが表示されます。
ECID(実行コンテキストID)ごと: 「ECID(実行コンテキストID)ごと」ページが表示され、選択したメッセージと同じECIDを持つすべてのメッセージが表示されます。
メッセージの関連付け情報を使用して関連メッセージを検索して、複数のメッセージを調査し、最初に問題が発生したコンポーネントを識別できます。メッセージ相関データは、起動されるAPIで生成されるエラーを診断するためのクリア・パスを確立する助けになることがあります。
Business Suiteインタフェースの起動中に発生する可能性のある問題またはエラーの根本原因を特定するため、Oracle E-Business Suite Adapterでは、わかりやすく説明的な例外やエラー・メッセージを生成するようになりました。これらは特に、任意のPL/SQL APIの起動中に使用できます。
アダプタの前処理中、およびデータベース・アダプタやAQアダプタによるランタイム実行中にエラーを処理するほか、PL/SQL APIが生成した機能エラーを、取得するために追加のコールを行う必要なくいつでも取得できます。これらのメッセージにより、ランタイムにおける障害の原因を特定しやすくなります。
さらに、他のJCAアダプタによって使用されている共通ロギング・フレームワークに基づき、Oracle E-Business Suite Adapterに関するすべてのエラーと例外およびデバッグ情報がロギングされます。これにより、実行中に発生したことを管理者や開発者が把握し、問題解決に必要な行動を取りやすくなります。
Oracle E-Business Suite Adapterでサポートされている統合インタフェースの起動中に問題やエラーが発生した場合(OE_ORDER_PUB.CHANGE_ORDER APIの起動時に入力した注文番号が存在しないなど)、例外(ORA-20100: 注文番号が存在しません)がスローされ、このようなエラーに機能エラーが含まれます。このタイプの例外は、API実行中の機能的な問題な問題を報告するために幅広く使用されます。
ほとんどのPL/SQL APIでは、機能エラーはAdapterのランタイム・エンジンによって捕捉されたSQLExceptionとして、コードとメッセージとともに、あるいはAPI出力パラメータの一部としてスローできます。しかし、一部のPL/SQL APIは実行中に機能エラーをスローせず、メモリ・スタックに蓄積し続けます。エラーをフェッチする責任は、APIのコール元に繰延べられます。
たとえば、HRMS APIは、FND_MSG_PUB.putパッケージを使用して、FND_MESSAGEスタックに機能エラーを配置します。APIコールが完了したら、コール元はFND_MSG_PUB.GET()メソッドを使用して、このスタックから明示的にエラーをフェッチする必要があります。
注意: このリリースでは、エラー・メッセージはスタックFND_MSG_PUBからのみ取得できます。
明示的な処理が必要なAPI用には、APIErrorHandlerという新しいJCAプロパティが導入され、FND_MESSAGEメモリ・スタックから機能エラーをフェッチできるようになりました。
実行時に、JCAプロパティが設定されている場合、エラー・ハンドラはPL/SQL APIの実行直後に起動されます。これにより1つ以上のエラーが戻され場合、Oracle E-Business Suite Adapterは実行時例外を送出します。catchAllフォルト・ハンドラなどの例外ハンドラは、この機能に由来するメッセージを処理するために使用できます。
このようなAPIの機能エラーをフェッチするには、次の機能エラー処理パラメータをWSDLファイル(XX_apps.jca)に追加する必要があることに注意してください。
<property name="APIErrorHandler" value="FND_MSG_PUB.GET_DETAIL"/>
BPELプロセスを使用したSOAコンポジット・アプリケーションのシナリオ
この例は、APIErrorHandler JCAプロパティをcatchAllフォルト・ハンドラとともに使用して、サービス呼出し時に発生するフォルトをすべて捕捉する方法を説明するために、Create Project(PA_PROJECT_PUB.CREATE_PROJECT)と呼ばれるPL/SQL APIを使用しています。
実行時にサービス呼出しが正常に実行されると、既存のプロジェクトを使用することにより、Oracle Projectsでプロジェクトが作成されるはずです。エラーが発生すると、catchAllフォルト・ハンドラがエラー・メッセージを捕捉します。これらのメッセージは、xmlファイルに書き込まれます。
機能要件
PL/SQL API(PA_PROJECT_PUB.CREATE_PROJECT)を使用してOracle Projectで正常にプロジェクトを作成するには、次の機能要件が適切である必要があります。
既存のプロジェクトがOracle Projectにおいてテンプレートに関連付けられている。
Oracle Projectでのプロジェクトの作成を担当する有効なOracle E-Business Suiteユーザーが、このPA_PROJECT_PUB.CREATE_PROJECT APIを実行する権限を持っている。
この例には、次の設計時アクティビティが含まれています。
メインのプロセスを作成して、パートナ・リンクを介してCreate Projectサービスを起動します。
Create Project API用のパートナ・リンクを作成します。
invokeアクティビティを追加してAPIを呼び出します。
assignアクティビティを追加して、サービス呼出しの入力を割り当てます。
別のassignアクティビティを追加して、サービス呼出しの出力を割り当てます。
いま作成したメイン・プロセス上にCatchAllプロセスを追加して、サービス呼出し時にフォルトが発生したら捕捉します。
操作タイプを「Write File」として、ファイル・アダプタを作成します。
assignアクティビティを追加して、catchAllフォルト・ハンドラからフォルトを渡します。
invokeアクティビティを追加してファイル・アダプタ・パートナ・リンクを呼び出し、xmlファイルにエラー・メッセージを書き込みます。
BPELプロセスを使用したSOAコンポジット・アプリケーションの作成フロー
この項では、プロセス・シナリオに基づき、次の設計時タスクについて説明します。
コンポジット・アプリケーションのデプロイとテスト
設計時アクティビティを完了したら、コンポジット・アプリケーションをデプロイし、ファイル・アダプタによって生成される出力ファイルにフォルトが含まれるかどうかをテストします。
「BPELプロセスを使用したSOAコンポジット・アプリケーションの検証とテスト」を参照してください。
プロジェクト作成に関するペイロード情報は、「プロジェクト作成のためのサンプル・ペイロード」を参照してください。
この手順を使用して、様々なBPELプロセス・アクティビティを含む新規のSOAコンポジット・アプリケーションを作成します。
BPELプロセスを使用した新しいSOAコンポジット・アプリケーションを作成する手順:
Oracle JDeveloperを開きます。
「アプリケーション・ナビゲータ」で「新規アプリケーション」をクリックします。
「SOAアプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。
「アプリケーション名」フィールドに適切なアプリケーション名を入力し、「アプリケーション・テンプレート」リストから「SOAアプリケーション」を選択します。
「次」をクリックします。「SOAアプリケーションの作成 - プロジェクトの名前付け」ページが表示されます。
「プロジェクト名」フィールドにプロジェクトの適切な名前を入力します(たとえば、TestProjectCreation)。
「プロジェクト・テクノロジ」タブで「Webサービス」を選択し、「SOA」が「使用可能」テクノロジ・リストから選択されて、「選択済」テクノロジ・リストに表示されていることを確認します。
「次」をクリックします。「SOAアプリケーションの作成 - SOA設定の構成」ページが表示されます。
「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して、「終了」をクリックします。新しいアプリケーションとSOAプロジェクトが作成されました。これにより、SOAコンポジットが自動的に作成されます。
「BPELプロセスの作成」ページが表示されます。
デフォルトで選択されている「BPEL 2.0仕様」をそのままにします。BPEL 2.0仕様をサポートするBPELプロジェクトが作成されます。
「名前」フィールドに適切なBPELプロセス名を入力します。「テンプレート」フィールドの「同期BPELプロセス」を選択します。「トランザクション」ドロップダウン・リストから「required」を選択し、「OK」をクリックします。receiveアクティビティとreplyアクティビティを持つ同期BPELプロセスが作成されます。指定した名前を使用したbpelおよびwsdlを含む必要なソース・ファイル、および関連するコンポジットも生成されます。
この手順を使用して、後で呼び出されるPL/SQL APIのための、CreateProjectApiと呼ばれるパートナ・リンクを作成します。
パートナ・リンクを作成する手順は、次のとおりです。
「Oracle Applications」を「BPELサービス」リストからプロセス・ダイアグラムの右側の「パートナ・リンク」スイムレーンにドラッグ・アンド・ドロップします。「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。「次」をクリックします。
「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。
「サービス名」フィールドにネット・サービス名を入力します。たとえば、CreateProjectApiです。「次」をクリックします。「サービス接続」ダイアログが表示されます。
データベース接続を指定して、Oracle Applications Module Browserに進みます。
Oracle Applications Module Browserで、「Projectsパッケージ (PJ_PF)」→「Projects (pa)」→「プロジェクト (PA_PROJECT)」→「plsql」→「プロジェクト定義 (PA_PROJECT_PUB)」とナビゲートして「Create Project(PA_PROJECT_PUB.CREATE_PROJECT)」を選択し、PL/SQL APIを見つけます。
Oracle Applications Module Browserの詳細は、「Oracle Applicationsモジュール・ブラウザについて」を参照してください。
「アプリケーション・インタフェース」ページで「次へ」をクリックします。
「終了」ページで「終了」をクリックして、Oracle E-Business Suite Adapterの構成プロセスを完了します。
ウィザードにより、CreateProjectApi_sp.xsdスキーマに対応するCreateProjectApi.wsdlファイルが生成されます。このWSDLファイルをパートナ・リンクに使用できます。
ドロップダウン・リストから「パートナ・リンク・タイプ」および「パートナ・ロール」フィールドを選択します。「適用」をクリックして、「OK」をクリックし、パートナ・リンク構成を完了します。
パートナ・リンクとして今しがた作成したAPIの機能エラーを取得する手順:
Oracle JDeveloperで「SOA」→「アダプタ」フォルダの順にナビゲートして、CreateProjectApi_apps.jcaをダブルクリックします。次の機能エラー処理パラメータを追加して、CreateProjectApi_apps.jcaファイルに変更を保存します。
<property name="APIErrorHandler" value="FND_MSG_PUB.GET_DETAIL"/>
機能エラー処理パラメータの表示
この手順を使用して、出力をテキスト・ファイルへ書き込むことによってBPELプロセスを構成します。
Oracle JDeveloperで、「ファイル・アダプタ」サービスを、「BPELサービス」リストから、プロセス・ダイアグラムの正しい「パートナ」スイムレーンにドラッグ・アンド・ドロップします。「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。
「次」をクリックします。「サービス名」ダイアログ・ボックスが表示されます。
ファイル・アダプタ・サービスの名前(WriteErrorなど)を入力します。
「次」をクリックします。「アダプタ・インタフェース」ダイアログ・ボックスが表示されます。
「操作およびスキーマから定義(後で指定)」ラジオ・ボタンを選択し、「次へ」をクリックします。「操作」ダイアログ・ボックスが表示されます。
操作タイプ(たとえば「Write File」)を指定します。
この操作タイプは、「操作名」フィールドに自動的に移入されます。
「次へ」をクリックして、「ファイル・ディレクトリ」ダイアログ・ボックスにアクセスします。
「ディレクトリは次のように指定します」フィールドで、「物理パス」を選択します。「発信ファイルのディレクトリ(物理パス)」フィールドにディレクトリ・パス(/usr/tmp/など)を入力します。出力ファイルの命名規則(pa_%SEQ%_%yyMMddHHmmss%.xmlなど)を指定します。
「次」をクリックします。「メッセージ」ダイアログ・ボックスが表示されます。
「URL」フィールドの前の「スキーマ・ファイルを参照」を選択します。「タイプ・チューザ」ウィンドウが表示されます。
「タイプ・チューザ」ウィンドウの右上隅にある「スキーマ・ファイルのインポート」ボタンをクリックします。
「スキーマ・ファイルのインポート」ウィンドウで、「リソースの参照」ボタンをクリックして、スキーマにError.xsdファイルを追加します。「プロジェクトにコピー」チェック・ボックスを選択します。「OK」をクリックします。
「オプションをコピー」の、「インポートされたファイルの元のディレクトリ構造を保持」チェック・ボックスを選択して、「OK」をクリックします。
選択されたError.xsdがURLとして表示され、スキーマ要素として例外要素が選択されます。
選択したスキーマの情報の表示
「次へ」をクリックし、「終了」をクリックします。パートナ・リンクに対応するWSDLファイルが生成されます。メインの「パートナ・リンクの作成」ダイアログ・ボックスが表示され、新規WSDLファイルWriteError.wsdlが指定されています。
「適用」をクリックし、「OK」をクリックして構成を完了し、ファイル・アダプタ・サービスに必須のWSDL設定を持つパートナ・リンクを作成します。
BPELプロセス・ダイアグラムにWriteErrorパートナ・リンクが表示されます。
この手順では、catchAllアクティビティを追加して、呼出し処理時にフォルトが発生したら捕捉します。
Oracle JDeveloperの拡張されたscopeアクティビティで、「CatchAllの追加」アイコンをクリックします。
catchAllアクティビティの追加
catchAllアクティビティが「main」スコープ・アクティビティの右側に作成されます。
catchAllアクティビティのBPELダイアグラムでの表示
この手順では、次の目的で2つのinvokeアクティビティを構成します。
CreateProjectApiパートナ・リンク・サービスを呼び出します。
その後、出力ファイルにエラー・メッセージを書き込むWriteErrorファイル・アダプタ・パートナ・リンクを呼び出します。
CreateProjectApiパートナ・リンク用にinvokeアクティビティを追加する手順:
Oracle JDeveloperの「コンポーネント・パレット」で、「BPELコンストラクト」を展開します。「invoke」アクティビティを、コンポーネント・パレットから、プロセス・ダイアグラムの中央スイムレーンの「receiveInput」アクティビティと「replyOutput」アクティビティの間にドラッグ・アンド・ドロップします。
invokeアクティビティをCreateProjectApiサービスにリンクします。「Invokeの編集」ダイアログ・ボックスが表示されます。
Invokeアクティビティの名前を入力します(InvokeCreateProjectAPIなど)。
「入力」タブで、「入力変数」フィールドの横にある「作成」アイコンをクリックして、新しい変数を作成します。「変数の作成」ダイアログ・ボックスが表示されます。
変数の名前を入力します。デフォルト名を受け入れることもできます。「グローバル変数」ラジオ・ボタンが選択されていることを確認して、「OK」をクリックします。
「出力」タブを選択します。手順4と同じ方法を使用して、出力変数を作成します。
「invokeを編集する」ダイアログで「適用」をクリックします。
「Invokeの編集」ダイアログ・ボックスの「OK」をクリックして、invokeアクティビティの構成を終了します。
プロセス・ダイアグラムにinvokeアクティビティが表示されます。
WriteErrorファイル・アダプタ・パートナ・リンクに2番目のinvokeアクティビティを追加する手順:
Oracle JDeveloperの「コンポーネント・パレット」で、「BPELコンストラクト」を展開します。2番目の「invoke」アクティビティを、コンポーネント・パレットから、catchAllプロセス・ダイアグラムの中央スイムレーンにドラッグ・アンド・ドロップします。
invokeアクティビティをWriteErrorサービスにリンクします。「Invokeの編集」ダイアログ・ボックスが表示されます。
最初のinvokeアクティビティの手順4に記載した説明に従って、このinvokeアクティビティの入力変数を作成します。
「適用」をクリックし、「Invokeの編集」ダイアログ・ボックスの「OK」をクリックして、invokeアクティビティの構成を終了します。
プロセス・ダイアグラムに2番目のinvokeアクティビティが表示されます。
この手順では、3つのassignアクティビティを構成します。
invokeアクティビティを介してCreateProjectApiサービスに入力情報を渡す。
invokeアクティビティを介してCreateProjectApiサービスからの出力情報を渡す。
catchAllアクティビティを介して捕捉したフォルトを、WriteErrorファイル・アダプタへの入力として渡す。
「main」スコープに最初のassignアクティビティを追加する手順は、次のとおりです。
Oracle JDeveloperの「コンポーネント・パレット」で、「BPELコンストラクト」を展開します。「assign」アクティビティを、プロセス・ダイアグラムの中央スイムレーンの「receiveInput」アクティビティと「invoke」アクティビティの間にドラッグ・アンド・ドロップします。
「Assign」アクティビティをダブルクリックして、「Assignの編集」ダイアログ・ボックスにアクセスします。
「一般」タブをクリックして、assignアクティビティの名前を入力します(「AssignInput」など)。
「コピー・ルール」タブを選択してソース・ツリーとターゲット・ツリーを展開します。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「inputVariable」の順にナビゲートして、「payload」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「CreateProjectApi_InputVariable」にナビゲートして、「InputParameters」を選択します。
ソース・ノード(payload)を、指定したターゲット・ノード(InputParameters)にドラッグして接続します。これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
割り当てられた要素を使用したマッピングの表示
「Assignの編集」ダイアログ・ボックスが表示されます。
「適用」をクリックして、「OK」をクリックし、assignアクティビティの構成を完了します。
2番目のassignアクティビティを追加する手順は、次のとおりです。
assignアクティビティを、コンポーネント・パレットのBPELコンストラクト・セクションから、プロセス・ダイアグラムの中央スイムレーンの、invokeおよびreplyOutputアクティビティの間にドラッグ・アンド・ドロップすることによって、2番目のassignアクティビティを追加します。
最初のassignアクティビティの作成で説明した手順2から手順3を繰り返して、「AssignOuput」と呼ばれる2番目のassignアクティビティを追加します。
「コピー・ルール」タブを選択してソース・ツリーとターゲット・ツリーを展開します。
「From」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「CreateProjectApi_OutputVariable」の順にナビゲートして、「OutputParameters」を選択します。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「outputVariable」にナビゲートして、「payload」を選択します。
ソース・ノード(OutputParameters)を、指定したターゲット・ノード(payload)にドラッグして接続します。これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
割り当てられた要素を使用したマッピングの表示
「適用」をクリックして、「OK」をクリックし、assignアクティビティの構成を完了します。
catchAllアクティビティに第3のassignアクティビティを追加する手順:
assignアクティビティを、コンポーネント・パレットのBPELコンストラクト・セクションから、catchAllプロセス・ダイアグラムの、invokeアクティビティの前にドラッグ・アンド・ドロップすることによって、3番目のassignアクティビティを追加します。
最初のassignアクティビティの作成で説明した手順2から手順3を繰り返して、2番目のassignアクティビティを追加します。
「assignを編集する」ダイアログで、最初のパラメータを入力します。
式アイコンをクリックして、「式ビルダー」ダイアログを呼び出します。
式ビルダーによる値の割当て
「式」ボックスに「substring-before(substring-after(ora:getFaultAsString(),"Following error occurred while executing the API"),"API returned an error")」と入力します。「OK」をクリックします。
「From」ナビゲーション・ツリー・ノードと「To」ナビゲーション・ツリー・ノードの間の「Assignの編集」ダイアログの中央に、式値を持つ「式」アイコンが表示されます。
「To」ナビゲーション・ツリーで、「変数」→「プロセス」→「変数」→「Invoke_Write_Exception_InputVariable」→「body」→「ns4:例外」とナビゲートして、「ns4: message string」を選択します。
式アイコンを指定したターゲット・ノード(ns4: message string)にドラッグします。これでソース・ノードとターゲット・ノードを接続する線が作成されます。コピー・ルールは、「Assignの編集」ダイアログ・ボックスの下部にある「From」セクションと「To」セクションに表示されます。
式アイコンを使用したマッピングの表示
「適用」をクリックして、「OK」をクリックし、assignアクティビティの構成を完了します。
BPELプロセス・フローの完成
「TestProjectCreation」をクリックして、Oracle JDeveloperのコンポジット・ダイアグラムを表示します。
コンポジット・ダイアグラムの表示
BPELプロセスを使用したSOAコンポジット・アプリケーションのデプロイ
設計時に、SOAコンポジット・アプリケーションに含まれるBPELプロセスを作成した後で、先にBPELプロセスとともにSOAコンポジットをデプロイし、次にOracle Enterprise Manager Fusion Middleware管理コンソール(http://<servername>:<portnumber>/em)で、手動でプロセスをテストする必要があります。
ヒント: Oracle JDeveloperを使用してBPELプロセスとともにSOAコンポジットをデプロイする前に、設計時環境とランタイム・サーバーとの間の接続を確立する必要があります。サービス呼出しを処理するOracle SOA Suiteサーバー上にOracle E-Business Adapterが構成されていることを確認します。構成の詳細は、次を参照してください。
SOAコンポジット・アプリケーションをデプロイするには、Oracle JDeveloperの「アプリケーション」ウィンドウで、SOAコンポジット・プロジェクトを選択します。プロジェクト名(TestProjectCreationなど)を右クリックし、表示されるメニューから「デプロイ」→[プロジェクト名]→[serverConnection]を選択します。
SOAコンポジット・アプリケーションのデプロイ
たとえば、正しく設定されたサーバー接続がある場合、「デプロイ」→「TestProjectCreation」→「soa-server1」と選択できます。
「サーバーの選択」ページで、前に確立したサーバー接続「soa-server1」を選択します。「次」をクリックします。
「SOAサーバー」ページでデフォルトのターゲットSOAサーバー('soa-server1')の選択を受け入れます。
「次」と「終了」をクリックすると、デプロイメント・プロセスが開始されます。
コンパイルが成功したことは「SOA - ログ」ウィンドウで、デプロイが成功したことは「デプロイメント - ログ」ウィンドウで確認できます。
デプロイされたSOAコンポジットの検証とテスト
Oracle Enterprise Manager Fusion Middleware管理コンソールで、ファームのベース・ドメインから、SOA >soa-infraを展開して、SOA Infrastructureのホームページとメニューを介してナビゲートし、その管理対象サーバーに対してSOA Infrastructure内で実行されている、デプロイされたSOAコンポジット・アプリケーションにアクセスします。SOAインフラストラクチャから、開始するSOAコンポジット・アプリケーションをクリックします。ページの最上部で「テスト」をクリックします。
「Webサービスのテスト」ページの「入力引数」セクションで、使用するXMLペイロード・データを指定できます。プロセスに必要な入力文字列を入力して、「Webサービスのテスト」をクリックし、プロセスを起動します。
完了すると、「レスポンス」タブにテスト結果が表示されます。
「レスポンス」タブで、「メッセージ・フロー・トレースの起動」リンクをクリックして結果の詳細を表示します。「フローのトレース」ページが表示されます。
ランタイム・ステータスの「フローのトレース」ページでの表示
テスト中にエラーが発生した場合は、「フォルト」タブに表示されます。
「トレース」リージョンのTestProjectCreationリンクをクリックして、「監査証跡」タブに呼出しの詳細を表示します。
BPELプロセス・インスタンスの詳細の表示
BPELプロセス・フロー・ダイアグラムを確認するには、フロー・タブをクリックします。アクティビティの詳細およびプロセス全体のペイロードのフローを表示するには、プロセス・ダイアグラムのアクティビティをクリックします。
たとえば、「invokeCreateProjectAPI (失敗)」をクリックするとフォルトが表示されます。
BINDING.JCA-12563
Exception occurred when binding was invoked.
Exception occurred during invocation of JCA binding: "JCA Binding execute of Reference operation 'CreateProjectApi' failed due to: API Execution Error.
Following error occurred while executing the API "PA_PROJECT_PUB.CREATE_PROJECT": "1. PAPA_FUNCTION_SECURITY_ENFORCEDNFND_ERROR_LOCATION_FIELDNFND_MESSAGE_TYPEE
".
API returned an error.
Correct the inputs for the API call. Contact oracle support if error is not fixable.
".
The invoked JCA adapter raised a resource exception.
Please examine the above error message carefully to determine a resolution.
さらに、サービス呼出し時にファイル・アダプタ・パートナ・リンクを介して収集されたフォルトを検証します。たとえば、ファイル・アダプタ・パートナ・リンク作成時に、書込み操作のために指定したoutputDir (/usr/tmp/)に移動します。出力ファイル(たとえば、pa_%SEQ%_%yyMMddHHmmss%.xml)を開くと、次のフォルトが表示されます。
<part name="detail">
<detail>API Execution Error.
Following error occurred while executing the API "PA_PROJECT_PUB.CREATE_PROJECT": “
1. PA PA_FUNCTION_SECURITY_ENFORCED N
FND_ERROR_LOCATION_FIELD
FND_MESSAGE_TYPE E".
API returned an error.
Correct the inputs for the API call. Contact oracle support if error is not fixable.
</detail>
</part>
<part name="code">
<code>EBzA-201</code>
</part>
次の情報は、Oracle E-Business Suiteでプロジェクトを作成する際のサンプル・ペイロードを示しています。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:InputParameters xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/sp/EBSReference">
<ns1:P_API_VERSION_NUMBER>1.0</ns1:P_API_VERSION_NUMBER>
<ns1:P_COMMIT>F</ns1:P_COMMIT>
<ns1:P_INIT_MSG_LIST>T</ns1:P_INIT_MSG_LIST>
<ns1:P_PM_PRODUCT_CODE>MSPROJECT</ns1:P_PM_PRODUCT_CODE>
<ns1:P_PROJECT_IN>
<ns1:PM_PROJECT_REFERENCE>AGL-AMG Project 6</ns1:PM_PROJECT_REFERENCE>
<ns1:PROJECT_NAME>AGL-AMG Project 6</ns1:PROJECT_NAME>
<ns1:PA_PROJECT_NUMBER>SAGIR-P6</ns1:PA_PROJECT_NUMBER>
<ns1:CREATED_FROM_PROJECT_ID>1005</ns1:CREATED_FROM_PROJECT_ID>
<ns1:CARRYING_OUT_ORGANIZATION_ID>478</ns1:CARRYING_OUT_ORGANIZATION_ID>
<ns1:PROJECT_STATUS_CODE>ACTIVE</ns1:PROJECT_STATUS_CODE>
<ns1:DESCRIPTION>TaskDesc</ns1:DESCRIPTION>
<ns1:START_DATE>2014-01-01T00:00:00</ns1:START_DATE>
<ns1:COMPLETION_DATE>2018-12-31T00:00:00</ns1:COMPLETION_DATE>
<ns1:PROJECT_RELATIONSHIP_CODE>Primary</ns1:PROJECT_RELATIONSHIP_CODE>
</ns1:P_PROJECT_IN>
<ns1:P_KEY_MEMBERS>
<ns1:P_KEY_MEMBERS_ITEM>
<ns1:PERSON_ID>2960</ns1:PERSON_ID>
<ns1:PROJECT_ROLE_TYPE>PROJECT MANAGER</ns1:PROJECT_ROLE_TYPE>
</ns1:P_KEY_MEMBERS_ITEM>
</ns1:P_KEY_MEMBERS>
<ns1:P_CLASS_CATEGORIES>
<ns1:P_CLASS_CATEGORIES_ITEM>
<ns1:CLASS_CATEGORY>Construction</ns1:CLASS_CATEGORY>
<ns1:CLASS_CODE>New Building</ns1:CLASS_CODE>
</ns1:P_CLASS_CATEGORIES_ITEM>
<ns1:P_CLASS_CATEGORIES>
<ns1:P_TASKS_IN>
<ns1:P_TASKS_IN_ITEM>
<ns1:PM_TASK_REFERENCE>1</ns1:PM_TASK_REFERENCE>
<ns1:PA_TASK_NUMBER>1</ns1:PA_TASK_NUMBER>
<ns1:TASK_DESCRIPTION>Plant function</ns1:TASK_DESCRIPTION>
<ns1:PM_PARENT_TASK_REFERENCE></ns1:PM_PARENT_TASK_REFERENCE>
</ns1:P_TASKS_IN_ITEM>
<ns1:P_TASKS_IN_ITEM>
<ns1:PM_TASK_REFERENCE>1.1</ns1:PM_TASK_REFERENCE>
<ns1:PA_TASK_NUMBER>1.1</ns1:PA_TASK_NUMBER>
<ns1:TASK_DESCRIPTION>Plant function</ns1:TASK_DESCRIPTION>
<ns1:PM_PARENT_TASK_REFERENCE>1</ns1:PM_PARENT_TASK_REFERENCE>
</ns1:P_TASKS_IN_ITEM>
</ns1:P_TASKS_IN>
<ns1:P_ORG_ROLES/>
<ns1:P_STRUCTURE_IN/>
<ns1:P_EXT_ATTR_TBL_IN/>
</ns1:InputParameters>
</soap:Body>
</soap:Envelope>
Oracle E-Business SuiteとOracle SOA Suite間の保護された接続に対してJ2EEデータ・ソースを実装することには、2つの明確な利点があります。1つ目は、AppsまたはAppsと同等のスキーマのユーザー名やパスワードを必要としないOracle E-Business Suiteのアプリケーション・データベースに対して、FNDユーザー名/パスワード(Oracle E-Business Suiteのユーザー名とパスワードの概念)のみを使用して、安全に接続できることです。2つ目は、パスワードがミドルウェアに保存されないことです。これにより、セキュリティ上のリスクが取り除かれるだけでなく、パスワードをOracle E-Business SuiteとSOA Suite間で同期して保持する必要がありません。
Oracle E-Business Suite Adapterは実行時にユーザーを認証し、J2EEデータ・ソースを介してOracle E-Business Suiteデータベースに接続します。この方法は、アプリケーション・データベースにアクセスするために接続プールを定義することが、Oracle E-Business Suite固有です。
データベース接続の構成の一環として必要なアプリケーション・ログインのユーザー名およびパスワードなどのアカウントの詳細情報が、J2EEデータ・ソース作成時に入力パラメータとしてdbcファイルの位置とともに追加されます。
このプロセスを完了するため、次の手順を使用してOracle E-Business SuiteデータベースへのJ2EEデータ・ソース接続を定義します。
Oracle E-Business Suite環境にサービス指向アーキテクチャ(SOA)スイート中間層ノードを登録し、接続をインスタンス化するためのデータ・ソース実装で使用されるdbcファイルを生成します。
SOAスイート・サーバーが稼動する中間層サーバーにdbcファイルをコピーし、SOAスイートの所有者がアクセス権を持つファイル・システム上の場所に配置します。
接続プールを作成します。ここには、コネクション・ファクトリのプロパティとしてアプリケーションのログイン・ユーザー名、パスワードおよびdbcファイルの場所を入力する必要があります。
アプリケーション・データ・ソースを作成します。この手順では、Oracle E-Business Suite Adapterのアプリケーション・データベース接続のために、アプリケーション・データ・ソースをJava Naming and Directory Interface(JNDI)名と関連付けます。
J2EEデータ・ソース機能を使用したネイティブOracle E-Business Suite接続機能を使用するには、
注意: この機能を使用可能にするには、最小限の要件として、Oracle E-Business Suiteリリース11iは11i.ATG_PF.H.Delta.6(RUP6)であり、Oracle E-Business Suiteリリース12は12.0.4リリースであることが必要です。
または、Oracle E-Business Suiteと外部アプリケーション・サーバー間の接続を有効化するのに必要なパッチを適用する必要があります。詳細は、My Oracle Supportナレッジ・ドキュメント787637.1を参照してください。
Copyright © 2005, 2016, Oracle and/or its affiliates. All rights reserved.