我有一项任务涉及使用Orchestration对多记录XML文件进行反批处理,然后根据一个字段的值对其进行排序。循环外的第一个表达式得到记录计数:
recordCount = System.Convert.ToInt32(xpath(CustFile,("count/*[local-name()='Root' and namespace-uri()='']/*[local-name()='People' and namespace-uri()='']/*[local-name()='Customer' and namespace-uri()='']")));
counter = 0;
recordNumber = 0;
循环中的Next表达式设置Xpath值:
sXPath = System.String.Format("/*[local-name()='Root' and namespace-uri()='']/*[local-name()='People' and namespace-uri()='']/*[local-name()='Customer' and namespace-uri()='']", recordNumber);
Next Expression定义最终消息:
InternalCust = xpath(CustFile,sXPath);
最后的表达式将循环的记录计数器递增回来,然后用下一条记录重新开始:
counter = counter + 1;
我想我可以管理输出消息的排序,但是当我尝试按原样运行它时,我在控制台中收到以下错误:
xlang / s引擎事件日志条目:未捕获的异常(请参阅下面的'内部异常')已暂停服务实例' BizTalk_SelfStudy_Week_4_Project.BizTalk_Orchestration1(ae65e0c4-9db7-6f19-1e08-6f4fbe08affe )&#39 ;. 在管理恢复或终止之前,服务实例将保持暂停状态。 如果恢复,则实例将从其上一个持久状态继续,并可能重新抛出相同的意外异常。
InstanceId:4a2d7256-4882-4853-8f7c-6e6054e78c4c
形状名称:发布消息
ShapeId:6ee14c8d-e55b-408b-be63-e5d83fa412a6
抛出异常:段1,进度19
内部例外:部分'部分'消息' InternalCust'在构造块的末尾包含一个空值。
异常类型:NullPartException 资料来源:Microsoft.XLANGs.Engine 目标站点:Void ConstructionCompleteEvent(布尔值) 以下是堆栈跟踪,用于标识发生异常的位置
at Microsoft.XLANGs.Core.Part.ConstructionCompleteEvent(Boolean fKillUnderlyingPart) 在Microsoft.XLANGs.Core.XMessage.ConstructionCompleteEvent(Boolean killUnderlyingPartWhenDirty) 在BizTalk_SelfStudy_Week_4_Project.BizTalk_Orchestration1.segment1(StopConditions stopOn) 在Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s,StopConditions stopCond,Exception& exp)
我很茫然,因为我已经尝试验证xpath,而我得到的只是验证器上的无效令牌消息。想法有人吗?
答案 0 :(得分:0)
正如Johns-305指出的那样,你构建XPath是错误的
sXPath = System.String.Format("/*[local-name()='Root' and namespace-uri()='']/*[local-name()='People' and namespace-uri()='']/*[local-name()='Customer' and namespace-uri()='']", recordNumber);
缺少占位符,例如' {0}'它会将recordNumber替换为。
它可能应该如下所示,它告诉它选择哪个Customer实例。
sXPath = System.String.Format("/*[local-name()='Root' and namespace-uri()='']/*[local-name()='People' and namespace-uri()='']/*[local-name()='Customer' and namespace-uri()=''][{0}]", recordNumber);
它还有助于Debug an Orchestration允许您看到XPath没有包含记录编号并测试生成的X路径,对此有用的工具是Dan Sharps XML Viewer < / p>