Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt Biztalk映射内联脚本全局未更新_Xslt_Biztalk - Fatal编程技术网

Xslt Biztalk映射内联脚本全局未更新

Xslt Biztalk映射内联脚本全局未更新,xslt,biztalk,Xslt,Biztalk,下午好 问题: 我正在尝试计算biztalk映射中的输出节点数。 我不想使用“记录计数”functoid或xslt转换,因为有很多条件决定是否生成节点 我所尝试的: 我创建了一个脚本functoid并声明了一个全局变量(在C#中) 我创建了一个脚本functoid来输出全局变量,并将其绑定到我的输出节点: public string E1_Records() { return E1_Record_Count.ToString(); } 我创建了一个脚本functoid,它连接到控制是否生成

下午好

问题:

我正在尝试计算biztalk映射中的输出节点数。 我不想使用“记录计数”functoid或xslt转换,因为有很多条件决定是否生成节点

我所尝试的

我创建了一个脚本functoid并声明了一个全局变量(在C#中)

我创建了一个脚本functoid来输出全局变量,并将其绑定到我的输出节点:

public string E1_Records()
{
  return E1_Record_Count.ToString();
}
我创建了一个脚本functoid,它连接到控制是否生成节点的逻辑functoid。此脚本统计创建的节点数:

public void IncrementE1Count( string isOutput )
{
  try
  {
     if ( System.Convert.ToBoolean( isOutput )  )
      ++E1_Record_Count;
  }
  catch
  {
  }
}
什么不起作用:

结果我总是得零分。我已经更改了全局声明和输出,因此全局声明、初始化和输出都是正确的。为全局变量创建第二个声明会引发错误,因此该变量只有一个全局实例

我注释掉了脚本中除了增量行以外的所有内容,以更改全局变量。这让我觉得它永远不会被执行。该脚本functoid与控制输出节点的同一逻辑functoid绑定(我确实得到了)

你知道怎么回事吗


我正在使用Biztalk Server 2010。

由于脚本functoid没有输出,Biztalk 2010中使用的新xslt 2计算器优化了对它的所有调用

如果我添加一个输出值并将包含递增函数的脚本functoid连接到一个输出节点,那么它将被调用并工作

此函数的任何输出都没有值,因为调用它时节点的计数将不完整。所以我需要输出一些东西,但我没有任何价值。我更改了函数以返回一个常量字符串,用于设置需要常量值的节点


这不是一个好方法,但我看不到任何其他简单的方法可以欺骗xslt对其进行评估。

我相信我已经解决了类似于几年前的问题,方法是在映射之前设置一个值和/或在映射之外进行计数。依靠XSLT(映射器)保持状态(计数等)是我试图避免的事情。可能不是您要寻找的答案,但我使用.NET helper类的方式比尝试欺骗XSLT和映射器要多。

我发现创建编排并使用两个顺序转换来计算节点数是最简单的

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