Biztalk Получение ошибки «NullPartException» при использовании xpath - PullRequest
1 голос
/ 21 декабря 2011

Профиль: Biztalk 2009, обновление 4 на Windows 2008 Server SP2 (платформа разработки) Привет! При использовании xpath для сопоставления моих выходных данных с помощью Конструктора сообщений и Назначения сообщений со следующим кодом:

    sXPath = System.String.Format("/*[local-name()='ProcessSalesOrder' and namespace-uri()='http://www.TestSchemas.net/TestSchemas_V2_2/schemas']/*[local-name()='header' and namespace-uri()='http://www.TestSchemas.net/TestSchemas_V2_2/schemas']/*[local-name()='detail' and namespace-uri()='http://www.TestSchemas.net/TestSchemas_V2_2/schemas' and position()={0}]", nLoopCount);
    System.Diagnostics.Debug.WriteLine(sXPath);
    SingleInput = xpath(Input, sXPath);

Я получаюИсключение в средстве просмотра событий;

    Exception thrown from: segment 1, progress 15
    Inner exception: The part 'part' of message 'SingleInput' contained a null value at the end of the construct block.

    Exception type: NullPartException
    Source: Microsoft.XLANGs.Engine
    Target Site: Void ConstructionCompleteEvent(Boolean)

У меня есть простая оркестровка с одним портом получения, одним портом отправки с использованием двух схем.Я получаю количество записей неограниченной «детализации» в переменную с именем nRecordCount, и я использую счетчик цикла в MessageLoop, чтобы увеличить это значение в конце объекта Expression с nLoopCount = nLoopCount + 1; в качестве выражения.

Orchestration

Подробная структура 2-й схемы (Имя: SalesOrderDetail_V2_2.xsd) такая же, как 1-я (Имя: SalesOrderRequest_V2_2.xsd), но все теги заголовка удалены.

enter image description here

и SalesOrderRequest_V2_2.xsd ниже

enter image description here

Кажется, что квадратный колышек пытается быть сопоставленным с раундомотверстие.Я попытался отладить это, но не удалось выполнить следующий код в файле file.cs в точке, показанной ниже;

enter image description here

Я также не могу найти ничего полезного в Orchestration Debug.Кто-нибудь может пролить немного света на то, что я, возможно, упускаю при использовании Xpath?

Весь проект был заархивирован и доступен для загрузки по следующему адресу

https://skydrive.live.com/redir.aspx?cid=533fd5a521c8c878&resid=533FD5A521C8C878!1848&parid=533FD5A521C8C878!119&authkey=!AE4gYqCoqmZd8xs

Пожалуйста, смотрите эту ссылку для возможного исправления.Мне удалось получить работоспособное решение, если я изменил файл структуры схемы (XSD).

Вот ссылка: xpath - Как заставить метод B работать?

1 Ответ

0 голосов
/ 21 декабря 2011

У меня недавно был очень похожий сценарий (создание пакета сообщений из одного входного сообщения), и в итоге я получил только немного другое решение:

Внутри цикла я создаю простое сообщение Counter, назначаятекущее значение счетчика.

Далее внутри формы сообщения Construct у меня есть карта, которая использует сообщение Counter и исходное исходное сообщение в качестве входных сообщений и схему пакетного сообщения в качестве выходных.

ВнутриКарта Я использую функцию скрипта «Вызов шаблона Xslt», которая получает значение счетчика из сообщения счетчика в качестве параметра Xslt.Этот параметр, который я использую для извлечения нужного исходного узла, в основном с тем же XPath (т.е. position () = $ param), что и вы.

Я знаю, что использование шаблона Call Xslt может не подойти вампросто из-за огромного количества полей.

У меня нет готовой среды разработки BizTalk dev, но извлечение узла последовательности также должно быть возможно с использованием "простых" функтоидов вместо Call Xslt Template.

...