zoukankan      html  css  js  c++  java
  • BizTalk开发小技巧分拆和组装消息实例

    BizTalk开发小技巧-分拆和组装消息实例

    场景

    对方发出的报文(XML)文件带一个消息头(MessageHeader)对于业务本身只需要消息体的内容(<BodyConent>节点下的内容)。

    发给对方的报文同样需要加这个消息头,业务消息放在消息体(<BodyConent>)里面)

    下面通过简单Schema定义和Mapping实现对XML消息的分拆和组装。不需要额外开发自定义管道组件或代码。

    分拆消息

    1定义带消息头的Schema,也可以称是一个Envelope Schema,注意BodyConent下面需要加一个Any Element节点用于表示封装的消息体内容。

    2设置Schema的Envlope 属性为true。

    3设置Body XPath属性,拆分获取消息体的节点

    4定义一个业务报文,BodyConent下内容的Schema

    4设定完这些就可以实现报文的分拆了,配置接收,发送端口就不在这里写了。

    输入的实例报文如下

    输出的将2个BodyMsg的报文。

    封装消息

    这里就是将输入BodyMsg报文输出时加上报文头。

    这样的封装消息在BizTalk并没有现成的配置可以实现,一般的解决方案是通过自定义管道组件来实现或在流程里面通过代码写消息赋值表达式来实现。

    下面我要演示的是通过自定义MAP实现,不用写代码。

    1新建map,比如还需要将业务报文的这段map到消息头的某个字段上。

    2通过编辑XSL mapping脚本文件,这里的XSL语法就不再这里说明了。

    xsl:copy-of

    Used to copy a result-tree fragment or node-set into the result tree. This performs a "deep copy," meaning that all descendants of the current node are copied to the result tree.

    3配置接收发送端口,在接收端口上选择这个部署上去的MAP1

    4输入一个BodyMsg报文 输出的就是这个Header报文,这里并不能将多个BodyMsg报文组合到一个Header报文中

    当你对XML,XPath,XSL越是深入了解越会发现BizTalk真的越发强大,而且开发越是简单高效。

    希望对BizTalk开发人员有所帮助。

  • 相关阅读:
    SQL注入原理
    攻防世界-wp
    BUUCTF-warmup
    springboot邮箱验证功能部署到服务器后报25 timeout的解决方式
    关于MySQL建立库表时大写自动转换为小写的解决方案
    springboot格式化timestamp时间
    mysql高级查询
    pip更新一直time out 的解决方法
    关于springboot使用mybatis查询出现空指针,以及debug出现All Elements all Null的解决方法
    抽象工厂模式
  • 原文地址:https://www.cnblogs.com/neozhu/p/2295982.html
Copyright © 2011-2022 走看看