做者:陳希章 發表於 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,並將其無縫地整合到業務應用的開發中去。