做者:陈希章 发表于 2017年12月20日html
我在以前用了几篇文章来介绍新一代微软商业应用平台三剑客(PowerApps,Microsoft Flow,Power BI),相信对于你们会有一种跃跃欲试的冲动,他们看起来真的不难,由于他们的定位是要给业务部门的用户直接使用的。那么如今问题就来了git
好问题啊!可是这两个问题实际上是相关的,并且第二个问题的答案就是第一个问题所描述的结果。由于能够将IT专业人员(IT Pro)和开发人员(Developer)从平常的轻量级业务应用的工做中解放出来,因此,他们能够去作一些更加擅长的技术、通用性的业务支撑组件的开发。github
咱们再来看一张已经屡次展现过的图片web
在应用的基础架构这部分,Common Data Service我此前已经介绍过了,Gateways也已经在 PowerApps进阶篇中讲解过。Pro dev extensibility 在目前这个系列中我不许备展开。那么就余下了Connectors(链接器了)。固然,实际上咱们早就使用过了链接器,例如在Microsoft Flow中内置了将近200个链接器,以下json
可是,若是咱们须要的某个功能,上面的链接器并无提供,而你有正好有必定的开发能力,那么本文将很适合你。咱们将以一个实例介绍如何自定义链接器。从某种意义上说,PowerApps和Flow是共用链接器的,而Power BI的链接器则更特殊一点。本文的内容将包括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的支持,请参考下面的步骤
dotnet add package Swashbuckle.AspNetCore
,而后进行还原 dotnet restore
using Swashbuckle.AspNetCore
和 using Swashbuckle.AspNetCore.Swagger
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" }); });
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),一下子咱们就会用到这个文件来自定义链接器。
准备好了上面这个Web API服务的话,接下来就能够在Flow中来自定义链接器了。
在接下来的界面中选择导入现有OpenAPI文件来定义链接器
接下来定义标题,而且找到此前保存在本地的swagger.json文件
点击“继续”,设置一些基本信息
点击“继续”,在安全设置这里暂时先选择 “无身份验证”
请注意,真正使用的链接器,是须要作身份验证的。建议在这个基础上,你们作一些针对性的实践。
点击“继续”,此时Flow会读取swagger文件中的定义信息,列出全部的操做
你会发现咱们有五个操做,对应了建立订单,修改订单,查询订单(列表以及单个订单的详情),删除订单。目前来讲在这些操做上面有一个感叹号的提示,由于有部分信息还须要你作定义:摘要和说明。请补充完整便可。
若是你确认没有问题了,请点击“建立链接器”来完成操做。
而后点击加号,能够基于这个链接器(connector)建立一个用于当前环境的链接(connection)。
接下来咱们“从空白建立”来体验上面这个自定义链接器的使用。为了便于测试,我选择用“手工触发流”。若是你对这个方面不熟悉,请参考 这篇文章。
在添加操做的时候,搜索Orderservice,你能看到有五个操做,下面咱们添加CreateOrder,输入一些基本信息
固然为了让测试更加直观,我继续添加了一个获取订单列表的操做,而后将获取到的结果发送到一个服务器地址。
点击“建立流”,而后点击“当即运行”按钮
点击“继续”
点击“运行流”,很快你就能看到下面的结果
并且在个人服务器也很快收到了数据
一样的事情,在PowerApps上面也是相似的。因此,你在PowerApps中也当即能够看到以前定义好的这个OrderService的链接。
在建立应用的时候,能够很天然地选择到这个数据链接
创建链接后,在数据控件上面能够经过下面的方式调用方法。例以下面这个操做,是读取订单列表。
若是要建立一个订单,能够参考下面的作法。
看完上面的介绍,你们对于建立Web API服务,而且将其用于PowerApps和Flow的过程有了感性的认识。咱们可能还会很天然地联想到,这个服务和链接器可否也用于三剑客中的另一个组件——PowerBI,用于数据获取呢?
答案是:目前还不行。Power BI目前支持的自定义链接器的方式,目前是在Preview的阶段,其实现方式是比较特殊的,有兴趣的朋友能够参考下面这篇文章:
Data Connector SDK Developer Preview
新一代的商业应用平台,它的强大依赖于强大的底层设计和灵活的应用架构。做为PowerApps和Flow的基础,链接器是一个核心的基础组件。微软提供的组件化架构,让开发人员可使用本身习惯的方式开发Web API,并将其无缝地整合到业务应用的开发中去。