逻辑存在不存在';t工作-BizTalk映射程序

逻辑存在不存在';t工作-BizTalk映射程序,biztalk,biztalk-mapper,Biztalk,Biztalk Mapper,这个问题使我困惑了一段时间。我有一个带有段和标记标识符的平面文件。其中一个段是可选的。这很好,但是我需要逻辑来确定这个片段是否存在。如果它不存在,我需要做些别的事情。如果该段存在,则所有工作均按计划进行。如果没有,则BizTalk似乎甚至无法识别或执行与该段相关的任何functoid 以下是平面文件段: 这是我的逻辑存在与逻辑不相联系: 同样,如果段完全消失(意味着没有创建/转换平面文件xml节点),则逻辑存在甚至不会执行。我试过脚本和functoid。我开始相信这是映射程序中的一个错误。非常感

这个问题使我困惑了一段时间。我有一个带有段和标记标识符的平面文件。其中一个段是可选的。这很好,但是我需要逻辑来确定这个片段是否存在。如果它不存在,我需要做些别的事情。如果该段存在,则所有工作均按计划进行。如果没有,则BizTalk似乎甚至无法识别或执行与该段相关的任何functoid

以下是平面文件段: 这是我的逻辑存在与逻辑不相联系:


同样,如果段完全消失(意味着没有创建/转换平面文件xml节点),则逻辑存在甚至不会执行。我试过脚本和functoid。我开始相信这是映射程序中的一个错误。非常感谢您的帮助。

尝试使用
值映射
functoid而不是
值映射(展平)
functoid


还要确保“值映射”functoid的参数顺序正确。逻辑运算符必须是第一个参数。有时参数会出现错误,functoid会按预期停止工作。

由于输入文件是平面文件,FFDASM会创建一个空节点。由逻辑存在运行的测试在空节点上计算为true<代码>逻辑字符串应该在这里工作(我以前认为它会为空字符串返回true,但它不应该)

但是,在本例中,我可能会用C#scripting functoid替换所有这些(包括值映射器):

公共字符串allowfnotempty(字符串测试、字符串输出)
{
如果(!string.IsNullOrWhiteSpace(test))
返回输出;
返回“”;
}
首先将当前链接到
逻辑字符串的节点的输入赋予它,然后将第二个输入赋予您的
值映射(展平)
第二个,并将其直接输出到目标节点

如果在多个位置使用它,可以将其放入辅助程序集

如果希望将其保留为XSLT,可以执行自定义调用模板:



您是否已验证ScheduleDate在不应该存在的情况下确实不存在?实际上,对于空元素,逻辑字符串Functoid将返回false