| Oracle® Fusion Middlewareリリース・ノート 11gリリース1(11.1.1) for Linux x86 B55924-02 |
|
![]() 戻る |
![]() 次へ |
この章では、Oracle BPEL Process Managerに関連する問題について説明します。内容は次のとおりです。
この項では、一般的な問題および回避方法について説明します。内容は次のとおりです。
Oracle BPEL Process Managerでdvm:lookupValue()などのドメイン値マップXPath関数を使用すると、特にswitch-caseアクティビティの条件式で、関数が例外エラーとともに失敗します。
回避方法として、次の手順を実行します。
assignアクティビティ・ブロックを使用して、変数(dvm_outなど)にドメイン値マップ関数の出力を取得します。
dvm_out変数をswitchアクティビティ文で使用します。
invokeアクティビティ内の起動プロパティの前に相関セット要素が出現すると、BPELプロセスのコンパイル時にエラーが発生します。この理由は、相関セット要素がbpelx:inputPropertyエントリの前に配置されるためです。
<invoke name="Invoke_850" inputVariable="Invoke_850_send_InputVariable"
partnerLink="send850" portType="ns2:B2B_send_ptt"
operation="send">
<correlations>
<correlation initiate="yes" set="CorrelationSet_1" pattern="out"/>
</correlations>
<bpelx:inputProperty name="b2b.documentProtocolVersion"
expression="'4010'"/>
<bpelx:inputProperty name="b2b.documentTypeName" expression="'850'"/>
<bpelx:inputProperty name="b2b.fromTradingPartnerId"
expression="'GlobalChips'"/>
<bpelx:inputProperty name="b2b.toTradingPartnerId"
expression="'AcmeRID'"/>
</invoke>
この問題が発生する可能性があるのは、invokeアクティビティでBPELプロセスを作成し、そのinvokeアクティビティの相関セットを作成してから、invokeアクティビティの複数のプロパティを更新した場合です。
この問題を回避するには、Oracle JDeveloperの「ソース」ビューでBPELプロセスを開き、起動プロパティの下に相関セット要素を手動で移動します。
<invoke name="Invoke_850" inputVariable="Invoke_850_send_InputVariable"
partnerLink="send850" portType="ns2:B2B_send_ptt"
operation="send">
<bpelx:inputProperty name="b2b.documentProtocolVersion"
expression="'4010'"/>
<bpelx:inputProperty name="b2b.documentTypeName" expression="'850'"/>
<bpelx:inputProperty name="b2b.fromTradingPartnerId"
expression="'GlobalChips'"/>
<bpelx:inputProperty name="b2b.toTradingPartnerId"
expression="'AcmeRID'"/>
<correlations>
<correlation initiate="yes" set="CorrelationSet_1" pattern="out"/>
</correlations>
</invoke>
BPELインスタンスの監査証跡情報は、Webブラウザの言語ではなくサーバーの言語で表示されます。
『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の付録H「正規化されたメッセージ・プロパティ」の表H-1およびH-2で、Oracle BPEL Process ManagerおよびOracle Web Servicesアドレス指定プロパティについて説明しています。これらのプロパティをreceiveアクティビティなどのアクティビティでbpelx:propertyとともに正しく使用するには、wsa.またはbpel.接頭辞を含めないようにしてください。次に例を示します。
<receive name="receiveInput" partnerLink="bpelprocessb_client"
portType="client:BPELProcessB" operation="process" variable="inputVariable"
createInstance="yes">
<bpelx:property name="action" variable="v1"/>
<bpelx:property name="messageId" variable="v2"/>
<bpelx:property name="relatesTo" variable="v3"/>
<bpelx:property name="replyToAddress" variable="v4"/>
<bpelx:property name="replyToPortType" variable="v5"/>
<bpelx:property name="replyToService" variable="v6"/>
</receive>
エンティティ変数を参照してエンティティ・キーのローカル・パートを選択すると、展開された要素ツリーにエンティティ・アイコンが表示されます。これらのアイコンは、カッコ内の青い「x」で識別され、エンティティ・キーを含む要素が示されます。これらの要素を選択しても、「キーの指定」ダイアログの「キー・ローカル・パート」または「キー・ネームスペースURI」フィールドは更新されません。かわりに、これらの要素を展開して実際のキーを選択し、キーのローカル・パートおよびネームスペースを取得する必要があります。次に例を示します。
「エンティティのバインド」ダイアログで、「追加」アイコンをクリックして「キーの指定」ダイアログを起動します。
「キー・ローカル・パート」フィールドの右側で、「エンティティ変数の参照」アイコンをクリックします。
カッコ内の青い「x」がエンティティ・キーを含む要素を示しています。これらの要素は選択しないでください。
これらの要素を展開して、選択できるエンティティ・キーを表示します。
エンティティ・キーを選択し、「OK」をクリックします。
「キーの指定」ダイアログの「キー・ローカル・パート」および「キー・ネームスペースURI」フィールドに、選択に基づいた情報が移入されます。
BPELのボイス・アクティビティで、ソース・コードで生成されたメッセージ・コンテンツのMIMEタイプは、text/vxml形式です。ただし、コンポジットからボイスXMLドライバに送信されるメッセージは、text/plain形式である必要があります。その理由は、ボイスXMLドライバによって、宛先ポイントに送信される前のメッセージにボイスXMLラッパーが追加されるためです。
ドライバに送信されるメッセージ・コンテンツがMIMEタイプのtext/vxml形式である場合、メッセージ配信障害が発生します。そのため、ボイス・ペイロード・コンテンツのMIMEタイプをOracle JDeveloperの「ソース」モードでtext/plainに手動で変更する必要があります。
<scope name="VoiceApproval">
. . .
. . .
<copy>
<from expression="string('text/plain')"/>
<to variable="varNotificationReq" part="VoicePayload"
query="/VoicePayload/ns1:Content/ns1:MimeType"/>
</copy>
. . .
. . .
</scope>
Oracle BPEL Process Manager 10.1.3 Client Java APIでコーディングされたカスタム・アプリケーションは、11gリリース1 PS2のClient Java APIに現在アップグレードできません。Oracle BPEL Process Manager 10.1.3 APIでコーディングされているプログラムは、再記述する必要があります。また、現在のAPIは、以前のリリースの11g APIと互換性がありません(ただし、その差異はごくわずかです)。
今回のリリースのAPIバージョンは、最終形となります。このAPIバージョンは、現在完全にサポートされており、今後のリリースで下位互換性が維持されます。
詳細は、次のURLから参照してください。
http://www.oracle.com/technology/products/soa/bpel/collateral/documentation.html
この項では、構成に関する問題およびその回避方法について説明します。内容は次のとおりです。
ora:getAttachmentContent関数は、SOAP添付コンテンツを読み取り、SOAP添付ファイルのhrefを保持するBPEL変数を引数として指定することで、そのデータをBPELプロセスでBASE64形式にエンコードします。次の例は、この関数の使用方法を示しています。
<copy>
<from expression="ora:getAttachmentContent('input','bin')"/>
<to variable="initiateTaskInput" part="payload"
query="/taskservice:initiateTask/task:task/task:attachment/task:content"/>
</copy>
この例では、"input/bin"変数にhrefが格納された添付コンテンツを、BASE64でエンコードされた形式のcontent変数にコピーしています。
この項では、ドキュメントの訂正箇所を示します。内容は次のとおりです。
Oracle JDeveloperの「BPELプロセスの作成」ダイアログのオンライン・ヘルプには、「テンプレート」ドロップダウン・リストで使用できる「イベントのサブスクライブ」オプションの説明が含まれません。
このオプションを選択すると、ダイアログがリフレッシュされ、ビジネス・イベント表と、「フィルタ」、「追加」および「削除」アイコンが表示されます。
「追加」アイコンをクリックすると、サブスクライブするイベントを選択できます。選択した内容は、イベント表に表示されます。その後、一貫性レベルと、このイベントをパブリッシュするかどうかを選択できます。
「フィルタ」アイコンをクリックすると、選択したイベントのフィルタ式を作成できます。この選択によって、「式ビルダー」ダイアログが表示されます。
「削除」アイコンをクリックすると、選択したイベントを削除できます。
ビジネス・イベントの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「ビジネス・イベントおよびイベント配信ネットワークの使用」を参照してください。
『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「BPELプロセスでのパラレル・フローの使用」に含まれるFlowNアクティビティ作成時の処理に関する項に、使用すると選択エラーが発生するreceiveアクティビティのcount XPath関数の次の構文が記載されています。
expression="count(bpws:getVariableData('inputVariable','payload','/client:Nflow
HotelsProcessRequest/client:ListOfHotels/client:HotelName'));"/>
かわりに、次の構文を使用してください。
count($InputVariable.payload/client:HotelName)