0

Я использую параллельные фигуры в оркестровке BizTalk. В форме есть четыре параллельные ветви, и в каждой ветви я использую форму области (Тип транзакции = Нет) с последующим блоком catch, а логика выполнения помещается в форму области.Параллельные формы в BizTalk Server

Эта параллельная форма также содержится в области (Тип транзакции = Нет) в оркестровке с соответствующим блоком catch.

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

Но в моей оркестровке, если выполнение одной ветви завершается, другое исполнение ветви не запускается даже. Похоже, что начало другой ветки начинается после успешного выполнения предыдущего кода ветвления.

Скажите, пожалуйста, какой может быть возможный источник этого поведения?

ответ

1

Согласно MSDN, Параллельная форма будет иметь все его филиалы работают независимо См MSDN: http://msdn.microsoft.com/en-us/library/ee253584(v=bts.10).aspx

Однако это с точки зрения бизнес-процессов, а не с технической одной. Если одна из ваших ветвей терпит неудачу, вполне возможно, что другие ветви не будут выполнены. Насколько я знаю, у вас нет никакого контроля над порядком исполнения (не уверен в этом).

Смотрите этот небольшой пост в блоге для получения дополнительной информации: http://blogs.msdn.com/b/pkelcey/archive/2006/08/22/705171.aspx

шаблон агрегатор может быть хорошей идеей здесь, в зависимости от конкретной ситуации. Это даст вам полный контроль над ситуацией.

0

В принципе, если одна из ветвей терпит неудачу, то все ветви терпят неудачу. Ключевым моментом, который следует помнить, является:

All branches come together at the end of the Parallel Actions shape, and processing does not continue until all have completed. 

Таким образом, если одна из ветвей терпит неудачу, они никогда не сходятся. Если в одной ветке выбрано исключение, блок catch поймает его, а все остальные ветви перестанут обрабатывать любые входящие сообщения. Я понимаю, что параллельные ветви в основном используются в корреляции сообщений для ситуаций, когда вам нужно ждать появления более одного сообщения, чтобы иметь возможность продолжить. Порядок выполнения филиала определяется порядком полученных сообщений, ожидаемых каждой ветвью.

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