2009-07-16 7 views
1

J'essaie d'utiliser Oracle SOA BPEL pour synchroniser des données d'environ 1000 employés entre un service RH et notre base de données locale. Je reçois les identifiants de tous les employés avec un appel findEmp et je fais un looping entre les temps empCount et getEmp (empID) du même service RH et je mets à jour/insère dans notre db dans chaque boucle. Cela expire après environ 60 employés, même si ce processus est un processus asynchrone. Comment devrais-je repenser le flux de processus?BPEL pour la synchronisation de données

+0

J'ai créé un processus qui appelle findEmp et un autre qui synchronise un seul emp en utilisant getEmp (id). J'ai invoqué des appels à sens unique à ce dernier dans une boucle, pas plus de temps morts. – Surya

Répondre

1

Le délai d'expiration est dû au fait que vous n'avez aucun point de déshydratation dans votre code BPEL. Oracle BPEL doit se déshydrater avant la fin de la transaction Java. Si vous utilisez l'adaptateur de base de données Oracle BPEL, vous pouvez réellement soumettre plusieurs objets à la fois pour le traitement de la base de données, en insérant simplement plus d'un dans l'élément de l'adaptateur de base de données. Cela peut aider beaucoup, puisque vous pouvez aller chercher toutes vos données à la fois, puis les écrire toutes en même temps.

De plus, vous pouvez étendre le délai de transaction pour Oracle BPEL - c'est un paramètre de configuration dans transaction-manager.xml (il y a aussi quelques ajustements aux délais d'EJB que vous devez faire sur 10.1.3.3.x & 10.1.3.4. X). Les documents Oracle BPEL vous indiquent comment modifier cette variable.

Questions connexes