Встроенный сценарий сопоставления Biztalk не обновлен - PullRequest
1 голос
/ 02 июня 2011

Добрый день,

Проблема:

Я пытаюсь подсчитать выходные узлы в сопоставлении biztalk.Я не хочу использовать functoid количества записей или преобразование xslt, так как есть много условий, которые определяют, генерируется ли узел.

Что я пробовал :

Я создал сценарий functoid и объявил глобальную переменную (в C #).

// global to save count
public int E1_Record_Count = 0;

Я создал сценарий functoid для вывода глобальной переменной и привязал его к моему выходному узлу:

public string E1_Records()
{
  return E1_Record_Count.ToString();
}

Я создал скрипт-функтоид, который связан с логическим функтоидом, который управляет созданием узла.Этот скрипт подсчитывает количество созданных узлов:

public void IncrementE1Count( string isOutput )
{
  try
  {
     if ( System.Convert.ToBoolean( isOutput )  )
      ++E1_Record_Count;
  }
  catch
  {
  }
}

Что не работает:

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

Я закомментировал все, кроме строки приращения в скрипте, чтобы изменить глобальное.Это заставляет меня думать, что это никогда не выполняется.Этот скрипт-функтоид связан с тем же логическим функтоидом, который управляет выходными узлами (что я получаю).

Есть идеи, что не так?

Я использую Biztalk Server 2010.

Ответы [ 3 ]

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

Я думаю, что я решил нечто похожее на это несколько лет назад, установив значение ДО отображения и / или выполнив подсчет вне отображения. В зависимости от XSLT (картограф) для сохранения состояния (счетчиков и т. Д.) Я просто стараюсь избегать этого. Возможно, это не тот ответ, который вы ищете, но я использую вспомогательные классы .NET гораздо чаще, чем пытаясь обмануть XSLT и маппер.

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

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

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

Так как скрипт functoid не выводил, новый оценщик xslt 2, используемый в biztalk 2010, оптимизировал любые вызовы к нему.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...