9102年岁尾,41岁的我居然还在搞 BizTalk,感觉就是一种悲伤。

国内用户少之又少,能坚持一直在使用的“忠实”用户那就更少了。

不是它不好用,而是微软全线转向云服务,这个产品也已经快10年没有微信技术专家的支持了。哎~~

针对 WCF-SAP Adapter 的简单使用,网上已经有专家介绍过了。这里只是记录一下自己在多年相关开发过程中积累下来的一点点经验。

场景:

  • 需要定时从订单表(SQL Server)中抽取订单数据(如:每分钟)
  • 订单数据有 Header 信息,有 Item 信息
  • 抽取到的新订单要推送给 xxx 系统(这个不在讨论范围内)

技术分析

  • 需要用到 SQL Adapter,这里选用 WCF-SQL Adapter
  • 需要轮询,用 WCF-SQL 的 Polling 即可
  • Header : Item 是 1 对多关系,需要用到 left join 查询语句

难点

  • 这个可以体现 Header/Item 一对多的关系,怎么用一个SQL来实现?

我想到的,就是直接用 SQL 写一个可以输出 XML 的查询语句,期中,在XML中体现出 Header/Item 的父子关系即可。

(这个在5年前用过,但到今天,还真给忘了,搞了5个小时,终于还是弄出来了)

示例SQL可以这么写:

select *
from Header left join Item on Item.HeaderId = Header.Id
for xml auto
, element
, type
, root('Order')
, xmlschema

这样,一个类似如下结构的 XML 就生成了:

<Order>
<Header>
...
<Item>...</Item>
<Item>...</Item>
<Item>...</Item>
</Header>
</Order>

这样,就大大减小了在 orchestration 中频繁与 DB 进行交互的次数,并且一次查询,就可以把 header + item 数据一次性 Load 出来,方便很多!

避免遗忘,这里做了记录。 如果兄弟你也能用得上,请直接带走!

www.biztalkgroup.com

[BTS] BizTalk WCF-SQL Adapter 高级应用的更多相关文章

  1. BizTalk开发系列(二十五) SQL Adapter

    SQL Server 是.NET开发的首选数据库.当然开发BizTalk应用程序很多也离不了SQL Server.针对SQL Server的数据操作BizTalk 提供了SQL Adapter作为与数 ...

  2. BizTalk Server 2016配置 WCF SAP Adapter

    BizTalk Server 2016配置 WCF SAP Adapter 最近公司内部需要使用BizTalk与SAP 系统进行对接,虽然SAP/PI可以以发布WebService 的方式实现与外部系 ...

  3. .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载

    223本电子书籍,囊括了.NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Shell/A ...

  4. JAVA-Unit04: SQL(高级查询)

    Unit04: SQL(高级查询) 查看SMITH的上司在那个城市工作? SELECT e.ename,m.ename,d.loc FROM emp e,emp m,dept d WHERE e.mg ...

  5. [BTS] SQL Adapter. New transaction cannot enlist in the specified transaction coordinator

    The adapter "SQL" raised an error message. Details "New transaction cannot enlist in ...

  6. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  7. SQL Server高级查询

    简介 关于数据库,我们经常会听说"增查删改"之类的词语,听起来很简单,但是如果想要准确的获取到需要的数据的话,还是要花点功夫的.下面由我来和大家谈谈高级查询的用法以及和普通查询的区 ...

  8. SQL Server(高级) 关键字的使用 二

    二, 高级 关键字 -- 使用介绍 8,Top 的使用(Top子句返回记录的数目) select top number|percent column_name(s) from table_name 或 ...

  9. SQL Server 高级sql总结

    ----------------------------------------------------------------------Select------------------------ ...

随机推荐

  1. Linux学习(五)-Linux组管理和权限管理

    Linux组基本介绍 在Linux中的每一个用户必须属于一个组,不能独立与组外.在Linux中每个文件有所有者,所在组,其他组的概念 所有者 所在组 其它组 改变用户所在组 1.文件/目录 所有者 文 ...

  2. Java秒杀实战 (三)秒杀基本功能开发

    转自:https://blog.csdn.net/qq_41305266/article/details/80991687 一.两次MD5 1. 用户端: PASS = MD5( 明文 + 固定 Sa ...

  3. rpc框架画 和spring cloud流程图

  4. 2.SpringMVC执行流程

    SpringMVC 执行流程: 执行流程简单分析: 1.浏览器提交请求到中央调度器 2.中央调度器直接将请求转给处理器映射器 3.处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行 ...

  5. MySQL无法启动:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    1 详细异常 ct 11 17:31:51 bd02.getngo.com mysqld[20513]: 2019-10-11T09:31:51.187848Z 0 [Note] /usr/sbin/ ...

  6. 03.Zabbix应用服务监控

    一.Zabbix监控Nginx 1.1 实验环境 服务器系统 角色 IP CentOS 7.4 x86_64 Zabbix-Server 192.168.90.10 CentOS 7.4 x86_64 ...

  7. 利用 sendBeacon 发送统计信息

    我们经常会在网站追踪用户的信息,比如记录用户的停留时间. window.addEventListener("unload", () => { // sendHTTP }); ...

  8. LoadRunner(7)

    一.参数化策略 1.Select next row(How? 如何取?)取值方式 选择下一行 1)Sequential:顺序的 每个VU都从第一行开始,顺序依次向下取值: 数据取完可以从头循环重复使用 ...

  9. SCU 4442 party 二分图最大点权独立集

    每个青蛙喝黑茶或者红茶或者都可以喝 M个矛盾关系 有矛盾的不能喝同种茶 但你可以花费Wi使得这个青蛙消除所有矛盾 把矛盾当作边 青蛙当作点 如果这两个青蛙只喝不同的一种茶就不建边 题目中保证了不存在奇 ...

  10. Oracle 单列去重 显示单行所有列数据

    问题:test_table 表中有 a,b,c 三个字段,求根据字段a 去除重复数据,得到去重后的整行数据 根据mysql的经验尝试以下方法均失败 1.使用 distinct 关键字 (oracle查 ...