Перехват исключения при проверке конвейера в BizTalk Orch

Я делаю доказательство концепции по обнаружению ошибки проверки в оркестровке. В конце концов, мы можем захотеть сопоставить их обратно с ответным сообщением.

Я создал форму выражения, которая вызывает конвейер получения с проверкой (как описано здесь: https://docs.microsoft.com/en-us/biztalk/core/how-to-use-expressions-to-execute-pipelines).

Это атомарная область, в которой есть обработчик компенсации, но нет обработчика исключений. Конвейер взорвался при проверке и завершил оркестровку. Как я могу зафиксировать это и посмотреть на данные, которые он генерирует? В конце концов, я попробую этот компонент, который перехватывает несколько исключений:

rcvPipelineOutputMsgs1 = 
 Microsoft.XLANGs.Pipeline.XLANGPipelineManager.ExecuteReceivePipeline
(typeof(Myapp.Pipelines.ValidateAtlastRequestPipeline), msg_In);

Ошибка была записана в журнал событий. Данные неверны, и я хочу получить ошибку, но я хочу ее поймать.

Shape name: Call Validation
ShapeId: efe2529a-acaa-416b-ad8e-c3faef9624c5
Exception thrown from: segment 2, progress 3
Inner exception: There was a failure executing pipeline "Myapp.Pipelines.ValidateAtlastRequestPipeline". Error details: "The XML Validator failed to validate.
Details: The element 'LtlTenderRequest' has invalid child element 'DocumentName'. List of possible elements expected: 'Tenders'.. ".

Exception type: XLANGPipelineManagerException

введите здесь описание изображения


person NealWalters    schedule 13.03.2018    source источник
comment
Вы пытались добавить блок исключения во внешнюю область Call Rcv Pipeline для проверки схемы?   -  person Dijkgraaf    schedule 14.03.2018


Ответы (1)


Поместите атомарную область (необходимую для выполнения PipelineManager) в длительную область действия (и оркестрацию) с обработчиком исключений. Компенсационный блок вообще не нужен.

Вы должны иметь возможность перехватывать XLANGPipelineManagerException напрямую или просто Exception.

person Johns-305    schedule 14.03.2018
comment
Спасибо, но область-оболочка должна быть долговременной (не транзакционная, потому что она не может содержать в себе атомарную область). - person NealWalters; 14.03.2018