2009-07-16 18 views
1

Oracle SOA BPELを使用して、HRサービスとローカルDBの間で約1000人の従業員のデータを同期しようとしています。私はfindEmp呼び出しで全従業員のIDを取得し、同じHRサービスからgetEmp(empID)をempCount回実行し、すべてのループでdbに更新/挿入します。これは約60人の奇妙な従業員の後にタイムアウトしますが、このプロセスは非同期プロセスです。プロセスフローをどのように再設計するべきですか?データ同期用BPEL

+0

findEmpを呼び出すプロセスと、getEmp(id)を使用して単一のempを同期させるプロセスを作成しました。後者への一方向の呼び出しをループで呼び出しました。これ以上のタイムアウトはありません。 – Surya

答えて

1

BPELコードに脱水ポイントがないため、タイムアウトが発生しています。 Oracle BPELは、Javaトランザクションがタイムアウトする前に脱水する必要があります。 Oracle BPEL DBアダプタを使用している場合は、データベースに処理するために複数のオブジェクトを一度に送信できます.DBアダプタの要素に複数のオブジェクトを置くだけです。一度にすべてのデータを取得して一度に書き込むことができるので、これは非常に役に立ちます。

さらに、Oracle BPELのトランザクション・タイムアウトを拡張することもできます。これは、transaction-manager.xmlの構成パラメータです(10.1.3.3.x & 10.1.3.4で行う必要があるEJBタイムアウトの調整もあります)。バツ)。 Oracle BPELのドキュメントでは、この変数の変更方法について説明しています。