Advanced App Building With PowerApps Expressions and Rules
Advanced App Building With PowerApps Expressions and Rules
off-the-shelf SaaS
Only so many problems can be solved with
off-the-shelf SaaS
Custom software
development
is time consuming and costly
Only so many problems can be solved with
off-the-shelf SaaS
Custom software
development
is time consuming and costly
Everything else is a
missed opportunity
to optimize.
One connected platform that empowers everyone to innovate
Declarative Logic Imperative Logic Advanced Topics
• Think Excel • Events and State • Connectors
• Controls, Properties, Changes • Flow and Stored
and Formulas • Variables Procedures
• Simple and Compound • Saving Data Changes • OnStart
Data Types • Screen Navigation • Patch
• Data Sources • App From Data • ForAll
• Relational Data • Setting Values • Offline Data
• Simple Master/Detail
Form
• Delegation
• Rules
Think Excel
What if you could build apps
as easily as you build spreadsheets?
What if you could leverage all of
your existing Excel knowledge?
Screen.BackgroundColor = If( IsBlank( Name ), Red, Black )
Sub Button_OnClick
Screen.BackgroundColor = If( IsBlank( Name ), Red, Black )
End Sub
Excel
B1’s cell value depends on A1’s cell value
Automatically recalculated as A1 changes
PowerApps
Label1’s Text property depends on
TextInput1’s Text property
Automatically recalculated as
TextInput1 changes
Excel
Formulas can reference any cell in the
workbook
The entire workbook is recalculating all
the time, even if we can’t see a sheet or
hidden column
PowerApps
Formulas can reference any
control property in the app
The entire app is recalculating all
the time, even if we can’t see a
screen or a control is invisible
TextInputBox.Default
TextInputBox.BackgroundColor
TextInputBox.Text
123.456
“Hello World”
True False
1/12/2017 12:00 PM
1/12/2017
IsBlank
Blank
{ FirstName: “Fred”, LastName: “Jones” }
SalesOrder.SalesOrderItems
SalesOrderID AccountContact SalesPersonWorker OrderDate Status
101 { ContactID: 12,
FullName: “Sherlock Holmes” }
{ WorkerID: 44,
Name: “Joe Black” }
1/1/2017 “Shipped”
Today
102 { ContactID: 14, { WorkerID: 44, 1/14/2017 “Placed”
FullName: “Doctor Watson” } Name: “Joe Black” }
Tomorrow
SalesOrderID AccountContact SalesPersonWorker OrderDate Status SalesOrderLIne
101 { ContactID; 12, { WorkerID: 44, 1/1/2017 “Shipped” Product Quantity UnitPrice
FullName: “Sherlock Holmes”, Name: “Joe Black” { Name: “Mag Glass” 2 12
PhoneBusiness: “(206) 321-5422”, Email: “[email protected]”, SellingUnitPrice: 12 }
Name: { GivenName: “Sherlock”, BusinessUnit: “C&R”, { Name: “Microphone” 1 30
Surname: “Holmes”, …} SellingUnitPrice: 30 }
MiddleName: “Bruce” }
… }
; ;;
Set
Navigate, UpdateContext
Back
Browse Screen Detail Screen Edit Screen
Name P E + < Name 3 $ X Name P
Search
Account Entity
Browse Screen Detail Screen Edit Screen
Name P E + < Name 3 $ X Name P
Search
Items
Sort
Account Entity
Filter
Browse Screen Detail Screen Edit Screen
Name P E + < Name 3 $ X Name P
Search
Selected
Item Detail Form Item Edit Form
Gallery
Account Entity
Browse Screen Detail Screen Edit Screen
Name P E + < Name 3 $ X Name P
Search
Search Back
Back
Back
Navigate
Detail Form Edit Form
Gallery
Account Entity
Browse Screen Detail Screen Edit Screen
Name P E + < Name 3 $ X Name P
Search
EditForm
NewForm
Detail Form Edit Form
Gallery
Account Entity
7
Data binding is one way – separate in and out
Default
Text SelectedDate
Default Text
7
Default Text
7
Default
7
Text
OnStart
Patch( DataSource, OriginalRecord, Updates )
Edit Form
Defaults function
Errors
Collect
LoadData
Can do this from OnStart
Connection
Patch
Can use ForAll to Patch only records that have changed
IfError( Try, Catch )
Notify( Message [, Type ] )
ShowError
Patch
http://powerapps.com
https://docs.microsoft.com/en-us/powerapps
https://powerusers.microsoft.com/t5/PowerApps-Community/ct-
p/PowerApps1
THR2302 Build a full business app in 10 minutes 12:00PM - 12:20PM Expo Hall Theater 1
BRK2420 Streamline business processes with Flow and Office 365 1:00PM - 2:15PM Sheraton Grand Ballrm D
BRK2303 Build and extend applications for Office 365 with PowerApps and Flow 4:30PM - 5:45PM WSCC Room 603
BRK3404 Deep dive into building apps on Common Data Service for Apps 8:30AM - 9:45AM WSCC Room 620
THR1201 Distribute your apps to millions of users via AppSource 9:30AM - 9:50AM Expo Hall Theater 2
THR3402 Real-World Solutions with PowerApps: Building Composite Controls 10:00AM - 10:20AM Expo Hall Theater 1
THR1202 Deliver a compelling experience on Microsoft AppSource 10:30AM - 10:50AM Expo Hall Theater 2
THR2304 Real-World Solutions with PowerApps: ALM via Microsoft Flow & PowerShell 12:00PM - 12:20PM Expo Hall Theater 1
BRK3405 Developing custom connectors for Microsoft Flow and PowerApps 1:00PM - 2:15PM WSCC Room 603
BRK3403 Extending PowerApps and CDS for Apps with custom controls and server side logic 2:45PM - 4:00PM WSCC Room 620
THR3403 Real-World Solutions with PowerApps: Tips & tricks to manage app complexity 3:00PM - 3:20PM Expo Hall Theater 1
BRK3408 Advanced app building with PowerApps expressions and rules 4:30PM - 5:45PM Sheraton Metro. Ballrm A