1

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

4

1 に答える 1

1

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

さらに、Oracle BPEL のトランザクション タイムアウトを延長できます。これは、transaction-manager.xml の構成パラメーターです (10.1.3.3.x および 10.1.3.4.x で行う必要がある EJB タイムアウトにも微調整が必​​要です)。Oracle BPEL ドキュメントには、この変数を変更する方法が記載されています。

于 2009-07-30T13:39:28.263 に答える