2012-01-31 13 views
0

同期BPELプロセスの途中でクライアントに結果を返す可能性がある場合は、同期BPELプロセスの応答コンポーネントがOracle SOAで

私は応答コンポーネントをBPELプロセスの途中に置いていましたが、クライアントはプロセス全体が完了するまで待ちます。同期のためにBPELで応答メカニズムがどのように機能するのか不思議です。

+0

返信コンポーネントは、終了コンポーネントが必要であるため、プロセスを終了しません。基本的には、クライアントは応答が発生するとすぐにそれを取得する必要があります。あなたのプロセスを記述できますか? –

+0

しかし、私が終了コンポーネントを使用する場合、以下のアクティビティは実行されません。私はちょうどクライアントに結果を返信し、その後他の活動を続行したい。 – jonathan

+0

終了コンポーネントを置かないでください:新しい同期プロセスを作成し、asignコンポーネントを追加して出力変数に値をコピーし、**応答コンポーネントの後に1分間**待機コンポーネントを追加し、それをコンソールから開始します。それが起こるとすぐに返信が表示されますが、フロー画面を確認すると、まだ実行中です –

答えて

0

応答アクティビティは、応答をクライアントに送り返すことができます。返信アクティビティ後のアクティビティが期待どおりに実行されるかどうか。

あなたが確認する必要があることは、それぞれの受信アクティビティに対して1つの返信アクティビティしか存在しないことです。

2

はい、Replyアクティビティを配置し、後に他のアクティビティを行うことができます。

ただし、返信後にWaitアクティビティを配置して、BPELエンジンが実際に返信メッセージを送信するようにする必要があります。

また、待機アクティビティは3最小秒またはOracle Enterprise Managerのは、Fusion Middleware ControlのシステムMBeanブラウザでMinBPELWaitプロパティの値を待つように設定する必要があります。さもなければ、サーバーはそれを無視します。

は、以下を参照してください。http://docs.oracle.com/cd/E23943_01/dev.1111/e10224/bp_events.htm#SOASE516

0

代わり待ちの、あなたは脱水作用を使用することができます。トランザクションが完了しないかぎり、bpelは応答しないので、基本的には、応答アクティビティを使用するトランザクションを終了する必要があります。これを行うには、トランザクションをコミットして、新しいトランザクションを開始する必要があります。

注:待機を使用すると、bpelプロセスが遅くなります。あなたのcomposite.xmlで

0

は、それが出て追加脱水で作業する必要があり、あなたの同期BPELコンポーネントのプロパティの下に変更してみてくださいまたは待つとクライアントの呼び出しで何の待ち時間があってはなりません。

bpel.config.transaction = required 
bpel.config.oneWayDeliveryPolicy=async.persist 
関連する問題