Oracle Fusion Middleware Adapter for Oracle Applicationsユーザーズ・ガイド 11g リリース1(11.1.1.7.0) 部品番号 B61389-04 | ![]() 目次 | ![]() 前 | ![]() 次 |
この項では、次の問題点と回避策について説明します。
XMLファイル内とXSDファイル内での要素の順序が一致している必要がある。
このリリース(11.1.1.7.0)以降、Adapter for Oracle Applicationsを使用して入力としてAPIに渡される要素の順序は、対応するスキーマのシーケンス・タグ下に現れる要素の順序と厳密に一致している必要があります。
旧リリースのAdapter for Oracle Applicationsでは、これらの要素を任意の順序で渡すことができました。ただし現在は、要素の順序が対応するスキーマでの順序と一致している必要があります。
ビジネス・イベント・グループの追加サポートを有効にして次の手順を実行し、リスニング中のイベント・グループに含まれるアウトバウンド・ビジネス・イベントに対して存在しているすべてのパートナ・リンクを変更します。
重要: この回避策は、イベント・グループのリスニングにAdapter for Oracle Applicationsを使用している場合にのみ適用されます。そのビジネス・イベントがリスニング中のどのイベント・グループの一部でもない場合は必要ありません。
既存のビジネス・イベントのパートナ・リンクについて、JCAプロパティ「MessageSelectorRule」を更新します。このためには、次のいずれかの手順を実行します。
アダプタ構成の再実行(推奨)
(Oracle JDeveloper 11.1.1.6.0以上で)アウトバウンド・ビジネス・イベントの既存パートナ・リンクの構成ウィザードを再実行または編集すると、適切なMessageSelectorRuleを使用してアーティファクトが更新されます。
JCAプロパティの手動更新
または、ファイルXXX_apps.jcaに格納されているビジネス・イベント・パートナ・リンクのJCAプロパティ「MessageSelectorRule」を次のように変更します。
注意: <EVENT_NAME>はビジネス・イベント名と置き換えます。
既存プロパティは次の値です。
<property name="MessageSelectorRule" value="tab.user_data.event_name = '<EVENT_NAME>'"/>
これを次のように変更します。
<property name="MessageSelectorRule" value="tab.user_data.event_name = '<EVENT_NAME>' AND tab.user_data.getvalueforparameter('GROUP') IS NULL"/>
対応するOracle ApplicationsのWF_BPEL_Q上で、既存サブスクライバを削除します。
ビジネス・イベント・パートナ・リンクが格納されているSOAコンポジット・アプリケーションをデプロイ解除します。
次のスニペットを使用してサブスクライバを削除します。
注意: <CONSUMER_NAME>はサブスクライバ名と置き換えます。この値は、XXX_apps.jcaファイルに、JCAプロパティ「Consumer」の値として格納されています。
begin
subscriber := sys.aq$_agent('<CONSUMER_NAME>', NULL, NULL);
dbms_aqadm.remove_subscriber(queue_name => 'WF_BPEL_Q', subscriber => subscriber);
end;
SOAコンポジット・アプリケーションを再デプロイします。
ビジネス・イベント・グループの詳細は、「ビジネス・イベント・グループ」を参照してください。
オーバーロードされた機能については、「DataSecurityCheck」で「IRepOverloadSeq」を渡す必要がある
Adapter for Oracle Applicationsでは、次の2つの新しいJCAプロパティを使用して、オーバーロードされたPL/SQL APIのアクセス制御を扱います。この機能は統合リポジトリのユーザー・インタフェースから作成された権限付与と連動し、どのプロファイル・オプションにも依存しません。
DataSecurityCheck
IRepOverloadSeq
ユーザーが機能セキュリティ認可チェックの実行を希望する場合、次のプロパティ情報をWSDLファイル(XX_apps.jca)に追加する必要があります。
<property name="DataSecurityCheck" value="yes"/>
ただし、もう一方のプロパティIRepOverloadSeqは、設計時、パートナ・リンク作成中にAdapter for Oracle Applicationsによって自動的に導出されます。これらの2つのプロパティに基づき、ヘッダー・プロパティとして渡されるユーザー名に対して機能セキュリティ・チェックが実行されます。
このセキュリティ・サポートは、統合リポジトリ内で使用可能なすべてのインタフェースで機能することに注意してください。その他のインタフェースについては、プロファイル・オプション「BPEL用EBSアダプタ、機能セキュリティ使用可能(EBS_ADAPTER_FUNCTION_SEC_ENABLED)」を使用して、機能セキュリティを有効にする必要があります。
オーバーロードされた機能に対するセキュリティのサポートの詳細は、「オーバーロードされた機能に対する機能セキュリティのサポート」を参照してください。
PL/SQL APIを使用する場合のレコード・タイプに対するデフォルト値の移入
Oracle E-Business Suiteから公開された特定のPL/SQL APIは、入力としてレコード・タイプを取ります。このようなAPIは、正常に実行されるために、これらのレコード・タイプ内のパラメータにデフォルト値が移入されることを予期しています。
デフォルト値は、文字の場合はFND_API.G_MISS_CHAR、日付の場合はFND_API.G_MISS_DATE、および数値の場合はFND_API.G_MISS_NUMです。Oracle Adapter for Oracle Applicationsでは、次にしめすようにレコード・タイプ内のパラメータがnil値として渡される場合には、これらの値をデフォルト値に設定できます。
<PRICE_LIST_REC>
<ATTRIBUTE1 xsi:nil="true"/>
<ATTRIBUTE2 xsi:nil="true"/>
<ATTRIBUTE3 xsi:nil="true"/>
...
</PRICE_LIST_REC>
これは、transformアクティビティの機能を使用するか、nil値のXML入力を直接渡して、それらをassignアクティビティ内のレコード・タイプに割り当てることによって実現できます。
既存のPL/SQL SOAコンポジットを別のリリース・インスタンスに対して使用する場合のラッパー・パッケージの再作成
ユーザーがOracle E-Business Suiteリリース11iインスタンスに対して作成されたPL/SQL APIのSOAコンポジットを使用しており、このコンポジットをリリース12インスタンスに対して使用するか、またはその逆の場合、ターゲット・インスタンスの互換性を確保するために、SOAコンポジットのラッパー・パッケージを再作成する必要があります。この方法を使用すると、ターゲット・インスタンスに対して生成されたラッパーSQLファイル内のシグネチャが更新され、ターゲット・インスタンス内でシグネチャが同じであるか、または変更されているかに関する混乱が回避されます。
WSDLコンテキスト情報のデフォルト値
アプリケーション・コンテキストは、ビジネス・アクティビティに必要となったり、BPELプロセスを完了するのに必要となるヘッダー変数を渡すときに使用されます。コンテキストを設定する場合は、ヘッダー・プロパティ(「ユーザー名」、「職責」、「職責アプリケーション」、「セキュリティ・グループ」および「NLS言語」を含む)に渡される値が考慮されます。
新しいヘッダー・プロパティ「職責アプリケーション」、「セキュリティ・グループ」および「NLS言語」の値が渡されない場合、コンテキスト情報は「ユーザー名」と「職責」に基づいて判断されます。
デフォルトの「ユーザー名」はSYSADMIN、デフォルトの「職責」はSYSTEM ADMINISTRATOR、デフォルトの「セキュリティ・グループ・キー」は「標準」、およびデフォルトの「NLS言語」はUSです。
生成WSDLに指定されているデフォルト値は変更できます。これは、コンテキスト情報を静的に変更する方法です。これらの値は、デプロイ済のビジネス・プロセスのすべての起動に適用されます。ただし、ビジネス・プロセスの起動ごとに異なるコンテキスト情報を提供する必要がある場合は、ヘッダー値に動的に値を移入できます。コンテキスト情報はinvokeアクティビティを構成することにより指定できます。
アプリケーション・コンテキストの詳細は、「正規化されたメッセージ・プロパティのサポート」を参照してください。
XML GatewayトランザクションのBPELにデフォルト設定される相関ID
Oracle Adapter for Oracle Applicationsの「アダプタ構成ウィザード」は、インバウンドまたはアウトバウンド・インタフェースのXML Gatewayトランザクションの相関IDを指定しません。かわりに、BPELのデフォルト相関IDがWSDLファイルで自動的に設定されます。この構成を機能させるには、対応するXML GatewayトランザクションにBPELと同一の相関ID値を設定するようにOracle Applicationsを構成する必要があります。
Adapterでデフォルトと異なる相関IDを使用するには、Oracle Applicationsで相関IDを構成した後、アダプタ・サービスWSDLの<jca:operation>セクションに含まれるCorrelation="BPEL"行を編集する必要があります。「BPEL」を、Oracle Applicationsで指定した相関IDの文字列値に置き換えます。
複合型とDEFAULT句を使用するストアド・プロシージャの回避策
「アダプタ構成ウィザード」がラッパーSQLストアド・プロシージャを生成する必要があるストアド・プロシージャを使用する場合、生成されるラッパー・ストアド・プロシージャにDEFAULT句が引き継がれないという制限があります。
回避策として、特定のストアド・プロシージャに対して次の手順を1回のみ実行します。
生成されたラッパーSQLスクリプトを開きます。
ベース・ストアド・プロシージャから対応するラッパーにすべてのDEFAULT句をコピーします。
SQL*Plusを使用して、ラッパーSQLスクリプトをデータベースにリロードします。
生成されたXSDを編集します。パラメータがDEFAULT句を持つ場合は、XSD内の対応する要素に追加の属性db:default="true"が必要です。
たとえば、次のようなSQLを使用します。
FINANCE$INVOICE(isTrue INTEGER DEFAULT 1, value NUMBER DEFAULT 0)
XSD内のisTrueおよびvalueの要素には、新しい属性が必要です。
<element name="ISTRUE" ... db:default="true" .../>
<element name="VALUE" ... db:default="true" .../>
基礎となるAPIが再作成された場合、パートナ・リンクを作成できない
同じ名前と別のパラメータのセットを使用して再作成されたAPIのラッパーを生成することはできません。
注意: これは、生成されたラッパーを必要とするパッケージ化プロシージャとトップレベルまたはルート・プロシージャの両方で発生する可能性があります。
次の例は、この問題を示しています。
トップレベルで定義される初期APIを作成します。
SQL> create procedure test (a number, b varchar2, c BOOLEAN)
BOOLEANパラメータは、ラッパーが必要であることを示しています。
「アダプタ構成ウィザード」でストアド・プロシージャのデータベース・アダプタを使用して、このAPIのラッパーを生成およびロードします。
APIをドロップし、別のパラメータのセットを使用してAPIを再作成します。
SQL> drop procedure test
SQL> create procedure test (a number, b varchar2, c number, d BOOLEAN)
「アダプタ構成ウィザード」を使用してこのAPIのパートナ・リンクを生成しようとすると、次のメッセージが表示されて失敗します。
The wrapper procedure, TOPLEVEL$TEST, could not be found
回避策として、JDeveloper BPEL Designerを終了し、ストアド・プロシージャを作成した後、2番目のパートナ・リンクを作成する前に、JDeveloper BPEL Designerを再起動します。
Copyright © 2005, 2013, Oracle and/or its affiliates. All rights reserved.