BPEL для синхронизации данных

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


person Surya    schedule 16.07.2009    source источник
comment
Я создал процесс, который вызывает findEmp, и другой, который синхронизирует один emp, используя getEmp(id). Я вызывал односторонние вызовы последнего в цикле, больше никаких тайм-аутов.   -  person Surya    schedule 26.08.2009


Ответы (1)


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

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

person Christian    schedule 30.07.2009