закладки внутри транзакции WF4.0 - PullRequest
1 голос
/ 27 мая 2011

Я создаю длительный рабочий процесс с созданием закладки для персистентности. Когда я выполняю рабочий процесс, он работает как шарм. Проблема здесь, когда я заключаю весь рабочий процесс в область транзакции, он не завершает свое выполнение, как только он достигает .waitone() Я не вижу выполнения.

Конечно, нам нужна транзакция для представления в рабочем процессе. Я проверил настройку кода неисправности в БД и включил его. Я думаю, что проблема заключается в закладках в WF 4.0 и транзакциях поверх них.

Ответы [ 3 ]

1 голос
/ 27 мая 2011

Сколько времени занимает рабочий процесс, чтобы выполнить. TransactionScope имеет тайм-аут по умолчанию, равный 1 минуте, если для его выполнения требуется больше времени, он будет прерван. А транзакция ACID, которая длится 1 минуту, обычно является длинной, она не должна длиться более секунды или 2, так как большинство транзакций блокируют ресурсы, такие как базы данных.

Другое дело, что вы не можете сохранить рабочий процесс в середине транзакции. Транзакция является атомарной единицей, и ее сохранение в середине может означать, что вы сможете перезапустить ее с середины, и это очень нарушит атомарную природу транзакции.

0 голосов
/ 03 июня 2011

Microsoft подтверждает, что WF 4.0 не поддерживает длительное выполнение рабочие процессы внутри транзакции . (У меня нет этого документа, но у нас был звонок с командой Microsoft, они подтвердили, что это не поддерживается). Что может произойти, если вы сделаете это: рабочий процесс приостанавливается или зависает

Странно, что у Full WF 4.0 есть проблемы с операционными областями (вызванными вне проекта рабочего процесса). Несмотря на то, что я говорю PersistableIdle.unload (который должен сохраняться в базе данных и выгружаться из памяти), это выглядит как простая работа. Я не понимаю, почему возникают проблемы с транзакциями.

0 голосов
/ 30 мая 2011

Зачем вам нужна закладка в транзакции?

...