为PowerApps和Flow,Power BI开发自定义链接器

做者:陈希章 发表于 2017年12月20日html

前言

我在以前用了几篇文章来介绍新一代微软商业应用平台三剑客(PowerAppsMicrosoft FlowPower BI),相信对于你们会有一种跃跃欲试的冲动,他们看起来真的不难,由于他们的定位是要给业务部门的用户直接使用的。那么如今问题就来了git

  1. 他们为何能这么灵活和强大?
  2. 若是这些活儿都是业务部门用户本身去作了,那么IT部门人员,开发人员该干吗呢?

好问题啊!可是这两个问题实际上是相关的,并且第二个问题的答案就是第一个问题所描述的结果。由于能够将IT专业人员(IT Pro)和开发人员(Developer)从平常的轻量级业务应用的工做中解放出来,因此,他们能够去作一些更加擅长的技术、通用性的业务支撑组件的开发。github

咱们再来看一张已经屡次展现过的图片web

在应用的基础架构这部分,Common Data Service我此前已经介绍过了,Gateways也已经在 PowerApps进阶篇中讲解过。Pro dev extensibility 在目前这个系列中我不许备展开。那么就余下了Connectors(链接器了)。固然,实际上咱们早就使用过了链接器,例如在Microsoft Flow中内置了将近200个链接器,以下json

可是,若是咱们须要的某个功能,上面的链接器并无提供,而你有正好有必定的开发能力,那么本文将很适合你。咱们将以一个实例介绍如何自定义链接器。从某种意义上说,PowerApps和Flow是共用链接器的,而Power BI的链接器则更特殊一点。本文的内容将包括api

  1. 编写一个Web API服务(适合于PowerApps和Flow)
  2. 在Flow中建立自定义链接器
  3. 在Flow中使用自定义链接器
  4. 在PowerApps中使用自定义链接器
  5. Power BI自定义链接器的开发思路

编写一个Web API服务

能够这么说,绝大部分的链接器,都是一个Web API服务。咱们将一些业务逻辑封装在服务器端(或者准确地说是云端),而后有选择性地暴露出来一些接口,供PowerApps和Flow在须要的时候调用。因此,在开始自定义链接器以前,你须要作的就是编写一个Web API服务。你能够用任何熟悉的语言和平台完成这个工做,但我已经完成了一个使用C#编写的,基于dotnet core框架的Web API服务的例子,由于本文的重点不是将具体如何建立Web API服务以及部署,因此我用另一篇文章专门讲解了这个过程,请参考浏览器

使用 dotnet core 和 Azure PaaS服务进行devOps开发 (Web API 实例)安全

该项目的代码,能够经过 https://github.com/chenxizhang/dotnetcoreapisample 下载到。服务器

可是,在PowerApps或Flow中定义自定义链接器的时候,若是有一个服务描述文档,则会大大简化操做。因此,咱们须要在上面这个成果的基础上添加一个功能,让它能自动生成一个服务描述文档。微软官方的建议是用swagger的规范。关于swagger,若是有兴趣,能够参考他们的官网:https://swagger.io/specification/架构

在上述项目中添加swagger的支持,请参考下面的步骤

  1. 使用该命令导入一个包 dotnet add package Swashbuckle.AspNetCore,而后进行还原 dotnet restore
  2. 在Startup.cs文件中,添加两个命名空间的引用 using Swashbuckle.AspNetCoreusing Swashbuckle.AspNetCore.Swagger
  3. 在ConfigureServices方法的底部增长以下代码
    services.AddSwaggerGen(_=>{
        _.SwaggerDoc("v1",new Info(){
            Version ="1.0",
            Title ="dotnet core api sample",
            Contact = new Contact(){Name="Ares Chen",Email ="ares@xizhang.com"},
            Description ="dotnet core api sample using swagger"
        });
    });
  4. 在Configure方法的底部增长以下代码
    app.UseSwagger();
    app.UseSwaggerUI(_=>_.SwaggerEndpoint("/swagger/v1/swagger.json","v1"));

完成上面的工做后,请按照使用 dotnet core 和 Azure PaaS服务进行devOps开发 (Web API 实例) 提到的步骤那样,将代码提交到Azure的Git存储库,而后在浏览器中访问 https://dotnetcoreapisample.azurewebsites.net/swagger/v1/swagger.json ,正常状况下你会看到以下的结果输出。

你的实际部署地址可能跟我不同,由于Azure不容许同名地址。若是你不想本身去部署,你能够直接用个人这个地址查看输出结果,而且将其用在后续的自定义链接器中。

这是一个JSON的文档。若是你用格式化工具来查看,它多是这样的:

查看它并非重点,你如今须要作的是将点击右键,而后另存到本地(swagger.json),一下子咱们就会用到这个文件来自定义链接器。

在Flow中建立自定义链接器

准备好了上面这个Web API服务的话,接下来就能够在Flow中来自定义链接器了。

在接下来的界面中选择导入现有OpenAPI文件来定义链接器

接下来定义标题,而且找到此前保存在本地的swagger.json文件

点击“继续”,设置一些基本信息

点击“继续”,在安全设置这里暂时先选择 “无身份验证”

请注意,真正使用的链接器,是须要作身份验证的。建议在这个基础上,你们作一些针对性的实践。

点击“继续”,此时Flow会读取swagger文件中的定义信息,列出全部的操做

你会发现咱们有五个操做,对应了建立订单,修改订单,查询订单(列表以及单个订单的详情),删除订单。目前来讲在这些操做上面有一个感叹号的提示,由于有部分信息还须要你作定义:摘要和说明。请补充完整便可。

若是你确认没有问题了,请点击“建立链接器”来完成操做。

而后点击加号,能够基于这个链接器(connector)建立一个用于当前环境的链接(connection)。

在Flow中使用自定义链接器

接下来咱们“从空白建立”来体验上面这个自定义链接器的使用。为了便于测试,我选择用“手工触发流”。若是你对这个方面不熟悉,请参考 这篇文章

在添加操做的时候,搜索Orderservice,你能看到有五个操做,下面咱们添加CreateOrder,输入一些基本信息

固然为了让测试更加直观,我继续添加了一个获取订单列表的操做,而后将获取到的结果发送到一个服务器地址。

点击“建立流”,而后点击“当即运行”按钮

点击“继续”

点击“运行流”,很快你就能看到下面的结果

并且在个人服务器也很快收到了数据

在PowerApps中使用自定义链接器

一样的事情,在PowerApps上面也是相似的。因此,你在PowerApps中也当即能够看到以前定义好的这个OrderService的链接。

在建立应用的时候,能够很天然地选择到这个数据链接

创建链接后,在数据控件上面能够经过下面的方式调用方法。例以下面这个操做,是读取订单列表。

若是要建立一个订单,能够参考下面的作法。

Power BI自定义链接器的开发思路

看完上面的介绍,你们对于建立Web API服务,而且将其用于PowerApps和Flow的过程有了感性的认识。咱们可能还会很天然地联想到,这个服务和链接器可否也用于三剑客中的另一个组件——PowerBI,用于数据获取呢?

答案是:目前还不行。Power BI目前支持的自定义链接器的方式,目前是在Preview的阶段,其实现方式是比较特殊的,有兴趣的朋友能够参考下面这篇文章:

Data Connector SDK Developer Preview

结语

新一代的商业应用平台,它的强大依赖于强大的底层设计和灵活的应用架构。做为PowerApps和Flow的基础,链接器是一个核心的基础组件。微软提供的组件化架构,让开发人员可使用本身习惯的方式开发Web API,并将其无缝地整合到业务应用的开发中去。

相关文章
相关标签/搜索