1

我正在尝试使用 Oracle SOA BPEL 在 HR 服务和我们的本地数据库之间同步大约 1000 名员工的数据。我通过 findEmp 调用获取所有员工的 ID,并循环遍历 empCount 次以从同一 HR 服务获取 getEmp(empID),并在每个循环中更新/插入我们的数据库。这在大约 60 多名员工之后超时,尽管此过程是一个异步过程。我应该如何重新设计流程?

4

1 回答 1

1

发生超时是因为您的 BPEL 代码中没有任何脱水点。Oracle BPEL 需要在 Java 事务超时之前脱水。如果您使用的是 Oracle BPEL DB Adapter,您实际上可以一次提交多个对象以供处理到数据库,只需将多个对象放入 DB Adapter 的元素中即可。这可能会有很大帮助,因为您可以一次获取所有数据,然后一次全部写入。

此外,您可以延长 Oracle BPEL 的事务超时 - 它是 transaction-manager.xml 中的一个配置参数(您还需要对 10.1.3.3.x 和 10.1.3.4.x 上的 EJB 超时进行一些调整)。Oracle BPEL 文档告诉您如何更改此变量。

于 2009-07-30T13:39:28.263 回答