2009-07-16 2 views
1

Я пытаюсь использовать Oracle SOA BPEL для синхронизации данных около 1000 сотрудников между HR-сервисом и нашим локальным db. Я получаю идентификаторы всех сотрудников с вызовом findEmp и прокручиваю через него время empCount для getEmp (empID) из той же службы HR и обновления/вставки в наш db в каждом цикле. Это время после примерно 60 нечетных сотрудников, хотя этот процесс является асинхронным процессом. Как мне перепроектировать процесс?BPEL для синхронизации данных

+0

Я создал процесс, который вызывает findEmp и другой, который синхронизирует одну emp с помощью getEmp (id). Я вызывал односторонние вызовы к последнему в цикле, больше никаких тайм-аутов. – Surya

ответ

1

Тайм-аут происходит потому, что у вас нет точек обезвоживания в коде BPEL. Oracle BPEL необходимо обезвоживать до истечения срока действия Java-транзакции. Если вы используете Oracle BPEL DB Adapter, вы можете отправить сразу несколько объектов для обработки в базу данных, просто добавьте несколько элементов в элемент из адаптера DB. Это может сильно помочь, поскольку вы можете сразу получить все свои данные, а затем написать все сразу.

Кроме того, вы можете продлить тайм-аут транзакции для Oracle BPEL - это параметр конфигурации в файле transaction-manager.xml (есть также некоторые настройки для тайм-аутов EJB, которые необходимо выполнить для 10.1.3.3.x & 10.1.3.4. Икс). В документах Oracle BPEL рассказывается, как изменить эту переменную.

Смежные вопросы