
I created separate blog posts for my notes from each session.
Day 1 (Wednesday, June 17, 2020)
09:00am – Welcome & Kick-off – Ajoy & Mark
11:30am – Acumatica Mobile Framework – Cesar Betances
12:00pm – Push Notifications & Webhooks – Marco Villaseñor
01:50pm – Acumatica Workflow Engine – Stan Lesin (this post)
Day 2 (Thursday, June 18, 2020)
12:30pm – Acumatica Developer Roadmap – Mike C. & Andrew
Now for a session on the new Acumatica Workflow Engine. Looking forward to this. #CloudxRPSummit pic.twitter.com/kbY2dFIPKT
— Tim Rodman (@TimRodman) June 17, 2020
Here's our agenda #CloudxRPSummit pic.twitter.com/vsazt9NOhA
— Tim Rodman (@TimRodman) June 17, 2020
A quick visual of workflow #CloudxRPSummit pic.twitter.com/2nLn02qGF7
— Tim Rodman (@TimRodman) June 17, 2020
We're thinking of Workflow in this session in the context of a document, an electronic transaction in Acumatica #CloudxRPSummit pic.twitter.com/4Qjl4XSL35
— Tim Rodman (@TimRodman) June 17, 2020
The new Workflow Engine replaces the old Automation Steps #CloudxRPSummit pic.twitter.com/oHzFzLce3C
— Tim Rodman (@TimRodman) June 17, 2020
Automation Steps allowed you to modify screen state based on document state. The goal was to allow you to customize workflow without changing the code. #CloudxRPSummit pic.twitter.com/Rag5QF1Jff
— Tim Rodman (@TimRodman) June 17, 2020
Here are some of the problems with the old Automation Steps. I think of Automation Steps as a scripting language, quick and easy, but not industrial-strength, especially when it came to deploying to other environments and interacting with customizations. #CloudxRPSummit pic.twitter.com/2XkRarEhii
— Tim Rodman (@TimRodman) June 17, 2020
The new Workflow Engine is simpler, a finite state machine. An electronic transaction moves through the workflow linearly. #CloudxRPSummit pic.twitter.com/jiv5KbkWES
— Tim Rodman (@TimRodman) June 17, 2020
This is the structure of a Workflow in the new Workflow Engine #CloudxRPSummit pic.twitter.com/aeCJldYSfW
— Tim Rodman (@TimRodman) June 17, 2020
Developers like the new Workflow Engine because everything is defined in code. It uses LINQ expressions so it's more readable. Even though everything is ultimately defined in code, a power user can make changes graphically. #CloudxRPSummit pic.twitter.com/us2aTqJdRx
— Tim Rodman (@TimRodman) June 17, 2020
Here is the Workflow Customization Example that we are going to cover #CloudxRPSummit pic.twitter.com/UDOh1NtSJV
— Tim Rodman (@TimRodman) June 17, 2020
We're going to do this with code #CloudxRPSummit pic.twitter.com/NFsp4podaR
— Tim Rodman (@TimRodman) June 17, 2020
We need to mention SOShipmentEntry since we are extending it here in Visual Studio #CloudxRPSummit pic.twitter.com/b2M8NOg490
— Tim Rodman (@TimRodman) June 17, 2020
Next we get the configuration object using "GetScreenConfigurationContext" #CloudxRPSummit pic.twitter.com/Tkf6rzR9qp
— Tim Rodman (@TimRodman) June 17, 2020
Make sure to use Data.WorkflowAPI #CloudxRPSummit pic.twitter.com/acPhQsyqTd
— Tim Rodman (@TimRodman) June 17, 2020
Next we start to update the current screen workflow logic #CloudxRPSummit pic.twitter.com/gkirsFBXJC
— Tim Rodman (@TimRodman) June 17, 2020
"Add<SOShipment.status>" to add something to the Status #CloudxRPSummit pic.twitter.com/4qXCnKniFr
— Tim Rodman (@TimRodman) June 17, 2020
We now have a document status, but it doesn't have any meaning #CloudxRPSummit pic.twitter.com/ng46pcFL1F
— Tim Rodman (@TimRodman) June 17, 2020
UpdateDefaultFlow section gives us the flow object so we can do something with our new value, in this case make the document unavailable for editing. #CloudxRPSummit pic.twitter.com/And2Pq8izs
— Tim Rodman (@TimRodman) June 17, 2020
We'll create an inspection action called "putOnInspection" to create a reusable workflow object #CloudxRPSummit pic.twitter.com/j4vWXgvnlS
— Tim Rodman (@TimRodman) June 17, 2020
Then WithActions section #CloudxRPSummit pic.twitter.com/OR9Ry7geP2
— Tim Rodman (@TimRodman) June 17, 2020
Now flowStates.Update to add the action #CloudxRPSummit pic.twitter.com/fG6S7Tx1u1
— Tim Rodman (@TimRodman) June 17, 2020
WithTransitions is from "Open" to "On Inspection" state #CloudxRPSummit pic.twitter.com/00x3SrSp8Y
— Tim Rodman (@TimRodman) June 17, 2020
Now we add two actions. No logic here. #CloudxRPSummit pic.twitter.com/BaDfxmENvX
— Tim Rodman (@TimRodman) June 17, 2020
We can add the actions to the folder by referring to them by their graph rather than by their name #CloudxRPSummit pic.twitter.com/eYbPxO4pE9
— Tim Rodman (@TimRodman) June 17, 2020
We'll also add them to the toolbar with transitions, how they are triggered #CloudxRPSummit pic.twitter.com/PdFzUdR7Nu
— Tim Rodman (@TimRodman) June 17, 2020
Now doing a cache extension, now zoomed in for more readable code 🙂 #CloudxRPSummit pic.twitter.com/Av5a4SreDG
— Tim Rodman (@TimRodman) June 17, 2020
SetFromValue false and SetFromValue true #CloudxRPSummit pic.twitter.com/7KzXYSy4kb
— Tim Rodman (@TimRodman) June 17, 2020
Now adding inspectionNotPassed #CloudxRPSummit pic.twitter.com/WyXy5B9AsW
— Tim Rodman (@TimRodman) June 17, 2020
Origin State, Target State, and Trigger fully identify the Transition #CloudxRPSummit pic.twitter.com/yI1uenhFXe
— Tim Rodman (@TimRodman) June 17, 2020
We can only go from Hold to Open when inspection is passed #CloudxRPSummit pic.twitter.com/z8n85RcHQf
— Tim Rodman (@TimRodman) June 17, 2020
Also one line of code for Mass Processing #CloudxRPSummit pic.twitter.com/OF5PhDlTet
— Tim Rodman (@TimRodman) June 17, 2020
Now to see our Workflow in Acumatica, continuing with the dark theme 🙂 #CloudxRPSummit pic.twitter.com/qhAXD5Qd4d
— Tim Rodman (@TimRodman) June 17, 2020
Note INSPECTION PASSED and INSPECTION FAILED. Clicking INSPECTION FAILED showed us RELEASE FROM HOLD. Clicking INSPECTION PASSED puts us in Open state with CONFIRM SHIPMENT button available. #CloudxRPSummit pic.twitter.com/NsTpjKAhJq
— Tim Rodman (@TimRodman) June 17, 2020
I like the buttons rather than the Actions menu because of touch screens. Shows how Acumatica is setup for a touch screen world. #CloudxRPSummit pic.twitter.com/hEUwC4NQ4j
— Tim Rodman (@TimRodman) June 17, 2020
Also works on Mass Processing screen because we added that to our code. #CloudxRPSummit pic.twitter.com/f8MIplnHMk
— Tim Rodman (@TimRodman) June 17, 2020
Summary of the new Workflow Engine #CloudxRPSummit pic.twitter.com/uNWKt7Wfjd
— Tim Rodman (@TimRodman) June 17, 2020
Thank you Stan. I didn't follow all the code, but I followed the logic and the flow. Great session. #CloudxRPSummit pic.twitter.com/yvjAvOO7LB
— Tim Rodman (@TimRodman) June 17, 2020
The new Workflow Engine exists in 2020 R1, but it won't be fully implemented until 2020 R2 (maybe that's the visual front-end part, not sure) #CloudxRPSummit pic.twitter.com/iDxxrIFbGT
— Tim Rodman (@TimRodman) June 17, 2020