2016 年 5 月

第 31 卷,第 5 期

此文章由机器翻译。

Microsoft Azure - 使用 Azure Logic Apps 进行企业应用程序集成

通过 Srikantan Sankaran | 2016 年 5 月

与异类系统集成,窗体的流程自动化的核心和业务流程管理是许多企业的重点区域。在此上下文中,会发现一个关键的用例与接收、 转换和路由的数据跨企业和 Microsoft Azure 云。使用传统方法来实现此类企业应用程序集成 (EAI) 方案需要投入大量的时间和成本,以确定并投入在工具中,若要生成技术与专业知识和设置计算基础结构以支持方案端到端。基于云的托管服务,如 Azure 逻辑应用解决这些问题领域。

Azure 应用程序服务的逻辑应用程序功能提供可视编辑体验,开发人员可以撰写使用一套标准版和企业集成连接器的多个系统或数据源之间的复杂数据交换。情景中,如处理暂时性失败,这是唯一的基于云的体系结构和其他类似条件基于路由的流程和长时间运行的事务,很容易地实现通过此服务。

在本文中,通过其中卖方组织部署了订单捕获系统在 Azure 中使用的功能,通过逻辑应用程序提供企业集成方案演示了逻辑应用程序的功能。此逻辑应用过程提取从安全的公共终结点公开的买方组织,然后通过大量步骤组成数据捕获时,数据转换和路由之前获取在后端系统中注册的订单。生成的确认 ID 并将其发回给买方组织为每个已注册的订单。

EAI 流程

图 1 描绘了使用逻辑应用程序实现一个简单的 EAI 方案。

企业应用程序集成的流程
图 1 企业应用程序集成处理流程

从买方组织中安全地通过 Internet 使用 SSH 文件传输协议 (SFTP) 终结点公开的平面文件的形式上载触发集成的订单数据。访问终结点是使用共享的卖家组织的身份验证凭据进行保护。若要删除订单数据到和接收确认消息,可以创建单独的文件夹。运行 CentOS Linux 的 Azure 虚拟机用作 SFTP 服务器承载文件提取和 drop 的终结点。

Azure SFTP 连接器用于向上选取订单数据为从连接到 SFTP 终结点的基于时间触发的频率。在 Azure 门户中,从 Azure 应用商店创建此连接器的实例并将其作为 API 应用程序部署。订单确认数据上载回 SFTP 终结点时,还将使用相同的 API 应用程序实例。

下面是主要参数时添加到逻辑应用流 SFTP 连接器实例配置中,在设置 ︰

  • 触发器频率 ︰ 在方案中实现中使用的 2 分钟
  • 拾取位置 ︰ 添加以前; 配置 SFTP 连接器实例中的根路径 (例如,/home/ < sftpusername >) 的相对路径在这种情况下 ︰ b2b/订单
  • 读取选项后,可以选择删除文件

BizTalk 平面文件编码器用于从 SFTP 连接器 API 应用程序读取该平面文件以及将其转换为绑定到架构的 XML 文档。平面文件编码器可作为逻辑应用程序的企业集成连接器的一部分。从 Azure 应用商店创建此连接器的实例并将其作为前逻辑应用程序流中的使用情况 API 应用程序部署。而平面文件编码器支持基本的 XSD 架构生成平面文件和 JSON 文档中涉及多个子记录,如在此方案中,使用较复杂要求通过使用 Visual Studio 2012 和 BizTalk 服务 SDK 生成架构。XSD 架构文档将上载至 BizTalk 平面文件编码器连接器 API 应用。

BizTalk 转换服务连接器将转换成 XML 负载要插入到订单捕获数据库包含订单数据的 XML 文档。它使用使用 Visual Studio 2012 和 BizTalk 服务 SDK 编写的转换映射。作为一个 API 应用程序部署此连接器的实例,上载顺序注册和确认流的映射文件。在映射中使用的架构文件不需要上载到此 API 应用程序。

将 SQL 数据库连接器 API 应用程序实例使用前一步骤中的 XML 文档负载,并将订单数据插入到 Azure SQL Database。可以使用 BizTalk 服务,基于 XML 文档实例,或使用 BizTalk WCF LOB 适配器的 SQL Server 的 Visual Studio 2012 中生成用来生成 XML 负载以用于插入操作的架构。但是,在 Azure SQL 数据库连接器 API 应用程序现在支持在数据库上,直接从 Azure 门户中的 API 的应用程序配置的所有操作的架构生成。此项目无需其他工具,如 BizTalk WCF LOB 适配器或其他第三方解决方案,否则为它可能已在本地部署所必需的。

图 2 显示了一些要在 Azure SQL 数据库连接器设置的关键参数。

Azure SQL 数据库连接器配置
图 2 Azure SQL 数据库连接器配置

在成功插入订单数据,使用 BizTalk 转换服务连接器 API 应用在之前的步骤,从数组的订单 ID 编号转换为一个以逗号分隔列表中配置转换来自数据库连接器的响应。

将 Azure 存储 Blob 连接器 API 应用程序实例逻辑应用程序流中用于存储上一步中的数据库插入操作失败时的错误消息。

在响应中生成的订单 Id 都上载使用 SFTP 连接器之前配置到买方组织 SFTP 终结点。

逻辑应用程序处理流程,完成后,将显示如下图所示在 图 3

完成逻辑应用流
图 3 完整逻辑应用流

在此期间,如果创建新的逻辑应用 2015年-08-01-预览版中,则会使用的默认架构版本它尚未提供添加企业连接器的能力。因此,若要实现当前 EAI 方案,此架构版本应替换为 2014年-12-01-preview。这可在逻辑应用程序的代码视图中通过直接编辑 JSON 代码。

请记住要保存更改,请关闭逻辑应用程序编辑器并重新加载它以使更改生效。

将资源添加到类似的所有连接器,Azure SQL Database 存储连接的逻辑应用程序流,依此类推,很好的做法,所有这些组下的单个资源以便于处理和使部署更加轻松进行分组。它还是更可取的方法,资源部署在同一区域 (Azure 数据中心) 以尽可能减少延迟流执行过程。

在流中处理暂时性错误

Azure 逻辑应用程序提供包含重试逻辑以处理暂时性错误的是唯一的基于云的体系结构的能力。这涉及到添加的 JSON 代码段 — 您可以通过突出显示的代码中看到 图 4

图 4 处理暂时性故障

"b2bmicrosoftsqlconnector": {
  "type": "ApiApp",
  "inputs": {
    "apiVersion": "2015-01-14",
    "host": {
      },
    "operation": "XMLInsertOnordersax",
    "parameters": {
      "requestMessage": {
        "InputXml": "@{body('transformservice').OutputXml}"
      }
    },
    "retryPolicy" : {
      "type": "fixed",
      "interval": "PT30S",
      "count": 2
    },
  },

当没有出现间歇性故障或连接异常执行顺序中的 Azure SQL Database 中插入操作时,连接器 API 应用程序将重试请求两次,直到它返回一个错误。

逻辑应用程序还支持能够添加功能,如重复调用执行,直到满足某个预先确定的条件、 执行等待操作、 调用其他工作流,依此类推。

条件逻辑应用程序流的执行

中的逻辑应用程序流,则可以定义基于上一操作的结果的操作。可以在设计器或逻辑应用程序的代码视图中的配置窗格中,可以设置选项来定义条件。

例如,在当前流中,如果订单插入到 Azure SQL Database 的结果是成功,则响应消息是先转换上载到位于买方组织的 SFTP 终结点。

如果出现故障,一条错误消息会上载到 Azure 存储空间使用 Azure Blob 存储连接器。逻辑应用程序 UI 以可视方式描绘了这样配置备用流。请参阅 图 6 ,描述了如何定义条件操作和逻辑应用程序如何以可视方式描绘了涉及这些流程。

可视表示形式条件操作
图 6 可视表示形式条件操作

使用 XSD 架构文档

开发人员已在用于构建基于 BizTalk Server 的企业集成解决方案及其项目的开发工具可以扩展用于到逻辑应用程序,以及。BizTalk Services SDK 中,与 Visual Studio 2012 一起提供的附加项目模板,使开发人员可以生成或编写 XSD 架构和转换映射。没有可用于生成这些同时从平面文件和 XML 文档实例的内置向导。在 Visual Studio 2012 中生成的输出 XSD 架构文档无法直接上载到在逻辑应用程序中使用的平面文件编码器实例。

用于生成 Azure SQL Database 订单数据插入,在 Visual Studio 2012 中,使用架构生成向导的 XSD 架构的示例 XML 文件所示 图 5

图 5 用于为 Azure SQL 数据库订单数据插入生成的 XSD 架构的 XML 文件

<Insert xmlns="https://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/ordersax ">
  <Rows>
  <ordersax xmlns="https://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">
    <orderidsap>sap0101</orderidsap>
    <orderdate>2016-02-03</orderdate>
    <supplierid>sail001</supplierid>
    <orderamount>25000</orderamount>
    <currency>INR</currency>
    <discount>12</discount>
    <delvydate>2016-06-03</delvydate>
    <contract>C001</contract>
    <contact>Mr</contact>
  </ordersax>
  <ordersax xmlns="https://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">
    <...>
  </ordersax>
... and more records ...
  </Rows>
</Insert>

在本地部署的 EAI 解决方案使用 BizTalk Server 使用的此类项目的可重用其投资来浏览 Azure 作为在其上部署其解决方案的一个选项提供企业扩展的值。除此之外,没有其他好处,比如可快速部署、 轻松进行设置的基础结构、 易管理性和监视解决方案的时间。

使用图

Azure BizTalk 转换服务连接器使用 BizTalk 转换映射来转换 XML 文档。但是,若要创建这些映射,BizTalk 服务 SDK 与 Visual Studio 2012 是必需的。使用 XSD 架构中,一次生成下面的映射转换文件可以导入 Azure 逻辑应用程序直接。

在这里,考虑要映射的传入过程流顺序设置数据库插入 XML 架构为 XML 并循环访问传入文档中的每个记录,MapEach 循环 functoid 在使用,如下图所示在 图 7

订单插入确认的映射
图 7 映射的顺序插入确认

若要映射到传出消息的顺序创建响应消息,需要转换为逗号分隔值的单个元素内从 SQL Server 数据库生成的订单 Id 的数组。若要实现此目的,请使用累计连接 functoid。

执行该方案

为了尝试下面描述的方案中,将文件 orderssap.csv 放入 /home/ < sftpusername >/b2b/订单文件夹使用 WinSCP/等效工具。

监视逻辑应用程序连接器触发器日志,以确保确实已激发触发器的状态。

如果有任何错误,文件,分别XML 中,将存放在 /home/ < sftpusername >/b2b/resp 文件夹中,包含从 Azure 中的订单处理系统生成的以逗号分隔的排序顺序 ID 值。

现在,放在 orderssap.csv 文件再次同一文件夹中,而不进行任何更改。数据库连接器将从数据库引发由于唯一约束冲突错误异常。一条错误消息将上载到 Azure Blob 存储到容器"订单"。

逻辑应用程序执行 — 跟踪和监视

使用操作磁贴来监视逻辑应用程序流的执行。此外,还有一个单独的日志在逻辑应用程序上的触发器事件。向下钻取其中每台和流、 执行和持续时间的结果中查看执行的每个连接器的明细。

扩展为跨界集成方案

尽管在此方案中使用的 SQL 数据库部署在 Azure 中,它将同样很容易在公司网络内部运行的 SQL server 数据库相结合。Azure 应用程序服务基础结构,逻辑应用程序的一部分,提供了一种称为混合连接功能。此功能的实现涉及安装混合连接管理器的企业网络时,通过该逻辑应用程序集成,与此数据库中的防火墙保护的服务器上。除了 SQL Server 中,可以使用混合连接来访问其他数据库是 Oracle、 DB2 和 Informix。

使用混合连接,使用 BizTalk 企业连接器可以扩展为业务线 (LOB) 系统 (如 SAP 和 SharePoint 部署在公司网络。它们还可以扩展到 REST 服务和 Web 服务在本地部署。

要实现此方案的软件系统必备组件

除了具有所需的 Azure 订阅来实现所述的方案在这里,以下开发工具和其他软件且需要 ︰

  • Visual Studio 2012 以及在 Windows 8/8.1/10 或 Windows Server 2012 R2 上运行的 BizTalk 服务 SDK 是必需的。
  • SQL Management Studio for SQL Server 2014 或更高版本来创建和连接到 Azure SQL Database。或者,使用 Visual Studio 2012 / 或更高版本的工具,用于 SQL Server。
  • WinSCP 或等效的工具可以连接到 SFTP 服务器中,创建的"发送"和"接收"文件夹还可以删除并接收消息。

可供下载的项目

用来实现这种情况下的以下项目是可从处的 GitHub 存储库下载 bit.ly/1poJPgs:

  • Azure SQL Database 创建 script–ordersax.sql
  • 示例订单数据 file–orderssap.csv
  • XSD 架构 ︰
    • dbinsert_sampledata.xsd: SQL Insert 架构
    • dbinsert_sampledata1.xsd ︰ 属于,且在上面的架构被引用
    • orderssap.xsd ︰ 传入的订单文档的架构
    • orderresponse.xsd: SQL Insert 响应
    • orderresponse1.xsd ︰ 属于,且在 SQL Insert 响应架构被引用
    • ordersaxresp.xsd ︰ 传出的 XML 响应消息的架构
  • 映射 ︰
    • orders.trfm: 将传入消息映射到 SQL Insert 架构
    • ordersaxtosap.trfm: 将 SQL Insert 响应架构映射到传出消息架构

当实施解决方案涵盖在此方案中,以下引用会很有用 ︰

  • 要开发架构和映射解决方案中使用的软件系统必备组件 ︰ bit.ly/1R3RzvH
  • 使用 Visual Studio 2012 来生成从平面文件架构 ︰ bit.ly/1nP6qBy
  • 在 Azure 中配置 SFTP 连接器,请执行 ︰ bit.ly/254QfC2

总结

Azure 逻辑应用程序提供了一个平台来实现端到端 EAI 方案。全面的一套标准的连接器和企业连接器使可以与许多企业 LOB 系统和软件作为服务在云中的应用程序集成。它可以无缝地使用为在本地 EAI 解决方案部署架构和映射等使用 BizTalk Server 2013,生成的项目。这使企业有一个选项来调整其用途及其当前已经投资并潜能,其在云中,实现的方案的高可用性、 可靠性和集易用性好处向上利用 Azure 提供的基础结构。与逻辑应用程序中的混合连接支持,其他值可以从当前投资 LoB 系统部署在本地,通过打开机会,让他们参与集成方案,在云中运行。

提示!

开始开发解决方案中的项目的快速方法是在运行 BizTalk Server 2013 标准版 Azure 管理门户中使用库 VM 映像。在 VM 中安装 Visual Studio 2012 和 BizTalk 服务 SDK 花了我不能超过 30 分钟。


Srikantan Sankaran是从在印度,基于外班加罗尔 DX 团队的技术推广人员。他在印度的大量 Isv 的合作并帮助他们构建和部署 Microsoft Azure 上他们的解决方案。与他联系。 sansri@microsoft.com

感谢以下的微软技术专家对本文的审阅: Sandeep Alur
Sandeep Alur – 是 DX 印度导致推广人员,并基于班加罗尔外。