2012-02-06 3 views
0

Представьте себе следующую настроитьSiebel 8 состояние гонки

  1. Набор п независимых задач в списке задач должно быть завершено в Siebel
  2. Задачи , б и т.д. могут быть разработаны на отдельных резьбах
  3. Когда нить начинает рабочий поток регистрирует состояния всех n Задачи
  4. нити продолжают до завершения, и в конечном итоге отправки сообщения JMS в очередь

Мы имеем следующую задачу:

  • тему , который работает на задаче завершает свою работу и знаки задача в закрыт
  • в то же время нити , который работает на задаче б также завершает свою работу и помечает задача б в закрыто
  • Два JMS сообщения помещаются в очередь и посланные на другой серверной системы
  • Вот проблема: первое сообщение JMS говорит о том, что состояние из списка задач является a=closed b=open и говорит, что второе сообщение JMS a=open b=closed
  • задача может законно быть повторно открыта пользователем Siebel (скажем, для целей проверки мошенничества)
  • задний конец система получает два JMS сообщения в любом так как промежуточное ПО не делает t гарантийный заказ
  • Система заднего конца получает одно сообщение JMS, в котором сообщается closed,open, а другое вскоре после этого сообщает open,closed. Это может произойти в любом порядке, но результат тот же. Это появляется к задней торцевой системы, что весь список задач не была закрыта в то время как в Siebel все задачи ( и б в данном примере) были закрыты

мне сказали, что есть никак не в Siebel, что фиксация в базе данных, которая изменяет состояние задач, выполняемых в потоке рабочего потока, может быть только происходит в самом конце рабочего потока. Это имеет решающее значение после того, как сообщения JMS были отправлены с обманчивым состоянием. По-видимому, это связано с необходимостью отката рабочего процесса при ошибке.

Вопросы: Является ли приведенное выше утверждение истинным, что эта проблема никогда не может быть решена в Сибеле? Если нет, тогда кто-нибудь скажет мне, можно ли исправить это в Siebel, чтобы сообщение JMS было отправлено с правильным состоянием задач. Я наивно думаю, что это решается с помощью семафоров, но, честно говоря, я был испорчен в том смысле, что мне никогда не приходилось иметь дело с семафорами, и я точно не знаю, существует ли эта концепция даже в Сибеле. Любая помощь?

ответ

0

Невозможно прочитать данные до того, как они будут привязаны к базе данных, может контролировать время.

Используйте бизнес-службу для синхронного вызова рабочих процессов или использования бизнес-службы вместо рабочего процесса и отправьте сообщение JMS после фиксации базы данных. Инструкции к call a workflow process from business service.

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