BizTalk 如何在流程里利用循环拆分消息


这篇文章也是酝酿了很久的了,在POC的时候总是有哥们儿问到拆分结果集的问题.有的时候就只能通过循环这种方式来做,苦于还没有一个合适的例子奉献给大家,今天就写一篇这样的文章和大家分享.希望可以对大家的工作,学习有所帮助.

首先介绍一下思路
1.获得类似记录的节点的count,假设我们有300条相似记录现在要拆分成1条1条的,那么这个count就是300
2.设置一个index值 这个值是0为起始的
3.进行循环 循环的条件是 index < count
4.将index所对应的条目信息send到port
5.累加index : index = index + 1;

流程截图:


大体思路如图 应该就能看的明白,这里需要一个DLL的帮助来解析XML消息,我贴一下源码,主要两个方法 一个是负责取COUNT的,一个是根据index取到内容信息:
publicclassClass1
{
publicstaticintgetLength(XmlDocumentxd)
{
returnxd.ChildNodes[0].ChildNodes.Count;
}


publicstaticXmlDocumentgetInfo(XmlDocumentxd,intindex)
{
XmlDocumentxdResult
=newXmlDocument();
xdResult.InnerXml
="<ns0:Rootxmlns:ns0=\"http://BizTalkLoopProject.Schema1\"><info>"+xd.ChildNodes[0].ChildNodes[index].InnerXml+"</info></ns0:Root>";
returnxdResult;
}

}

部署的时候 只要使用FILE Adapter就可以了
看一下输入和输入文件:
input (one file)
<ns0:Rootxmlns:ns0="http://BizTalkLoopProject.Schema1">
<info>
<a>a1</a>
<b>b1</b>
</info>
<info>
<a>a2</a>
<b>b2</b>
</info>
</ns0:Root>
output (two files)
<?xmlversion="1.0"encoding="utf-8"?><ns0:Rootxmlns:ns0="http://BizTalkLoopProject.Schema1">
<info>
<a>a1</a>
<b>b1</b>
</info>
</ns0:Root>
<?xmlversion="1.0"encoding="utf-8"?><ns0:Rootxmlns:ns0="http://BizTalkLoopProject.Schema1">
<info>
<a>a2</a>
<b>b2</b>
</info>
</ns0:Root>
惯例: 源码下载
优质内容筛选与推荐>>
1、如何把一个图像存储到XML数据中,并读取出来
2、3,MongoDB之数据类型
3、Developer Express Inc.的 DXperience
4、Phone状态的监听机制
5、A*算法的实现


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn