做者:陳希章 發表於 2017年12月14日git
在上一篇 使用PowerApps快速構建基於主題的輕業務應用 —— 入門篇 中,我用了三個實際的例子演示瞭如何快速開始使用PowerApps構建輕業務應用,你可能已經發現,我都是使用默認生成的設置,沒有作任何修改。固然,那樣作出來的應用看起來不那麼酷,但已經能夠運行了,做爲一個起點,已經不錯了,不是嗎?github
但這樣自動生成的應用,估計也不能直接用於我們實際的工做中,爲了達到這個目的,你還多多少少須要掌握一些「高級」知識,而且要多一些練習。這一篇將從以下幾個方面展開介紹編程
讓咱們再次回到以前自動生成好的基於Excel文件的訂單應用吧。安全
咱們先從左側開始來剖析一下這個應用。做爲一個給最終的業務用戶使用的應用,它是怎麼構建用戶界面的呢?這個應用雖然簡單,但其實已經包含了咱們常說的「增刪改查」的四項基本功能。PowerApps的應用是由一個一個的Screen(屏幕)組成的,一個屏幕一般表明了某一項功能,例如服務器
值得注意的是,以上名稱只是推薦的作法,並不強制要求查詢的屏幕名稱必須叫BrowseScreen,也不要求你必需要上面三個屏幕。事實上,你隨時能夠添加本身須要的屏幕(Screen)。app
順便要提一下的是,PowerApps的應用天生就是面向移動設備來使用的,因此它默認是有兩種佈局:手機的佈局,和平板電腦的佈局。咱們此前自動生成應用的時候,是選擇「手機的佈局(Phone Layout),這個取決於模板的設置。但一旦熟悉以後,咱們徹底能夠本身選擇佈局,而後開始設計。編程語言
你能夠從零開始作,也能夠從一個模板開始作,但請注意此次選擇「Tablet Layout」ide
回到應用自己,咱們剛纔說了,PowerApps的應用是由一個一個屏幕組成的,那麼屏幕又是由什麼組成的呢?控件。函數
PowerApps的控件,整體來講,分爲兩大類,一類是容器控件,一類是普通控件。容器控件是能夠包含其餘控件的控件。主要包括下面兩類:工具
相比較而言,普通控件則更多,也更加有意思。整體來講,能夠分爲下面幾個類別,請注意粗體部分,這是PowerApps在移動優先這個目標之下的一些亮點功能。
<a href="xxxx">文本</a>
如今你對於PowerApps所支持的一些圖形化界面元素都有了一個基本的瞭解,接下來就是怎麼真正地使用好它們了。你不須要去學一門編程語言,只須要知道這些控件的使用無外乎兩個方面
爲控件的屬性賦值。通常是選中一個控件後,在右側會有一個屬性面板,列出了全部能夠設置的屬性。固然,若是你已經比較熟悉的話,則能夠在工具欄下面的編輯欄中直接輸入屬性名和值,快速來完成設置。
爲控件的事件綁定表達式。除了純粹顯示數據的控件,大部分控件都是能夠交互式操做的,例如接受用戶的點擊等。如何爲這種行爲作出響應呢?在編程中,咱們的專業術語叫編寫事件處理程序。PowerApps不須要編碼,因此它提供了一些特殊的表達式來實現簡單的事件處理邏輯。例以下面是一個最多見的按鈕事件,當用戶點擊後,它會從第一個屏幕切換到第二個屏幕。這裏用的是navigate函數(另外還有Back,Forward函數來表示後退和前進)。你其實不須要記住這些東西,選擇你的控件後,在頂部的Action菜單中,通常會列出來該控件支持的常見的操做。Navigate是一個導航的功能,Collect是一個收集數據的功能(我在下一節會介紹),Remove則是刪除數據的操做,跟Collect對應。Flows可以發起一個外部流程,這裏先不作展開,後續有專門的文章介紹。
請注意,你能夠在事件表達式中定義多個操做,只要用分號將他們分開便可,例如
Collect(TestData,Dropdown1.Selected);Navigate(Screen2, ScreenTransition.Fade)
在這裏,我建議你們花個半天的時間,逐一地瞭解這些控件,理解常見的屬性以及事件,只要大體作過一次,我相信對於你往後使用PowerApps將有極大的幫助。
接下來要談一談數據。你們知道,界面只是一個表象,真正用戶在交互的實際上是數據。我在 入門篇 中已經介紹了Excel文件,SharePoint List,Dynamics 365的業務實體做爲數據的場景。今天要進一步深刻探討一下。
首先,你要知道的是,一個PowerApps的應用可使用多個數據源,一個數據源反過來也能夠用於多個PowerApp的應用中。在頂部菜單中找到View,點擊Data Source能夠查看到當前這個應用中能用到的全部數據源,固然也能夠添加你須要的其餘數據源。
其次,你須要掌握幾個常見的數據篩選函數。雖然一個應用中能支持多個數據源,可是它沒有辦法像PowerBI 那樣在這些數據源創建映射和關係。那麼,當我但願根據用戶的選擇,決定對某個數據集合進行篩選、排序等操做時應該怎麼辦呢?答案是使用數據篩選函數。PowerApps提供了三個很是強大的函數:Filter、Search 和 LookUp。我很是推薦你們要詳細閱讀 https://docs.microsoft.com/zh-cn/powerapps/functions/function-filter-lookup 這篇文章而且進行實際的操做來加深瞭解,這是你從會作一個Hello world這樣的應用到一個實際能用在工做中的應用必需要學會的。
最後,你須要瞭解如何在屏幕傳遞數據。若是咱們須要從一個屏幕切換到另一個屏幕,如何將前一個屏幕的數據傳遞過來呢?PowerApps提供了上下文變量的概念,並且在不少函數中都自帶了這個功能,例如Navigate函數,就能夠在第三個參數定義要傳遞下去的變量和值。下圖定義了一個Language的變量,僅在這個Navigate的生命週期內有效。
你還能夠經過下面的功能查看全部的變量,以及它們被使用的狀況
關於PowerApps的上下文變量的細節,請參考 https://docs.microsoft.com/zh-cn/powerapps/functions/function-updatecontext
若是想要定義在整個應用程序都能用的全局變量,請參考Collect函數 https://docs.microsoft.com/en-us/powerapps/functions/function-clear-collect-clearcollect
對於絕大部分數據源來講,每次都是以當前用戶的身份去訪問的。因此無論你是一個Excel文件放在OneDrive for Business,仍是一個SharePoint List,在分享給同事們以前,你須要確保他們是有權限訪問到的。
PowerApps也提供了一個專門的函數(User),用來獲取當前用戶的郵箱,顯示名稱,我的頭像這三個數據。
PowerApps默認支持上百種數據源,尤爲是對於雲端的SaaS應用有極好的支持。可是,假設你的數據不在支持列表中,或者你的數據是在公司內部的服務器,可否同樣享受到PowerApps帶來的好處呢?答案是能夠,PowerApps經過一個網關(gateway)的技術,能夠在你受權的狀況下安全地鏈接到你私有的數據。
點擊右上角的New Gateway按鈕,你將被引導到一個下載界面
下載完成後雙擊安裝,最後輸入你能登陸到PowerApps的帳號進行身份認證
若是你看到下面這樣的界面,則表示配置成功了。咱們發現PowerApps,Microsoft Flow,Power BI是共用Gateway這個基礎設施的,無需配置三套。
那麼怎麼使用這個網關呢?咱們仍是要回到網關的管理界面,你看到如今多出來一個gatewaydemo的網關
接下來,你在新建鏈接的時候,選擇你的數據源類型(例如SQL Server)後,在具體配置的時候,選擇使用Connect using on-premises data gateway
詳細步驟你還能夠參考 這篇文章
本文的結束,我想要給你們介紹關於PowerApps的應用生命週期管理的概念。PowerApps是面向業務用戶、快速開發和迭代的一個平臺,只有這樣才能知足隨需應變的業務需求。因此,你會快速開始工做,發佈你的應用,而後在使用過程當中,根據反饋再快速調整設計,而後又從新發布。這樣就帶來一個版本管理(或者再往大里說——應用生命週期管理)的問題。
PowerApps會爲每次發佈保存一個版本,例以下圖能夠看到個人AppTest這個應用,目前兩個版本,而版本2是目前在使用的(Live)
若是你發現版本2並非很穩定,或者某些功能並非你所預期的那樣正常工做,你徹底能夠在這裏回滾到版本1,經過點擊版本1的Restore按鈕便可。