You may have heard of Salesforce Flows or you may use them for things like automating your existing business processes. But have you considered using them to drive product development and QA, speeding your time to market? Turns out Flows are perfect for this use—just another perk of developing on and using the Salesforce platform.
Testing new software is never easy. Working in QA, you find yourself frequently needing to be ahead of the curve with regards to how a new application or feature works, sometimes even before there’s a corresponding product UI to support the functionality you need.
As a Product person, this scenario is even more immediate: you’ve got your mockups—but wouldn’t it be great if you could try the workflow you envision before you ask the developers to make your Visual Force dreams a reality?
When I was working in QA, I constantly encountered the pain of needing to do substantial amounts of setup to even begin testing the feature that needed testing. Oftentimes, the UI necessary to perform the tasks wasn’t even completed and my team was being asked to test the underpinnings.
We muddled through for a time by brute force. We had a 20 page document to set up data for one test. Setup for a single data point took a lone QA Engineer 45 minutes to complete and it was hard to coordinate working on it in parallel to cut down on the required time. This slowed testing for this feature to a crawl. QA people were unhappy. Product people were unhappy. The data entry was arduous and boring and error prone, and it took valuable time away from more important testing tasks.
We knew there had to be a better way.
Enter Salesforce Flows
What I needed a tool that would enable me to quickly and accurately enter data into 20 different custom objects, all while creating joins that I needed while moving from object to object. I could have used Dataloader to perform some of the loading, but I really didn’t need bulk capacity—I was only adding a handful of records at a time, but they had complex relationships and varied inputs.
What if I could create and update records with the parameters that I wanted, driven by user inputs, in the order that I needed? What I really wanted was to create a simple, UI-driven tool that I could put together and modify on-the-fly, without the help of an Apex developer. After a few false starts, I found myself looking at Salesforce Flows.
I set aside a quiet Friday to experiment with Salesforce Flows. I tried mimicking the workflow that I knew our Dev and UX teams were developing to enter data. If I could re-create that workflow using a humble Flows UI, it would be enough for me to be able to enter the data that our team needed to move forward with testing.
Filled with optimism and hope, I opened up the Salesforce Flows canvas…
I was not disappointed.
In an hour, I had the basics. I created a few simple data entry screens and could create records populated with the data that I needed, based on the input I provided.
No more clicking in and out of Salesforce records to add lookups and relationships. I could enter data into a simple UI and the Flow did all of the relationship management for me. Every time.
My adventure with Salesforce Flows was an immediate success and I was hooked.
I could see instant and far-reaching value in this exercise. The QA team could now easily scaffold data without any help from the Development team, and it cut the data entry time to a mere echo of what was required with the brute force approach.
The benefits included:
- QA Engineers could quickly create basic but functional UIs that anyone could modify without needing to touch Apex
- Because there are no code changes, there’s no need to provide test coverage
- Because there’s no Apex, there’s no need to wait until the next product build to use the functionality– simply run the Flow
- No need to wait on your product UI being ready for primetime before you start testing
- Flows are easy to drop into any environment
- Flows are easy to remove from any environment
- A bundle of Flows can be packaged as Administrative Tools and given to implementation specialists who can use them to add data in client orgs
All of this made me very happy of course. Instead of waiting on elements of our product to be completed before we could enter data required to test other things, as a QA team, we were able to get ahead of it.
And this is where the real fun began.
One of the best benefits to using Flows turns out to be the ability to prototype future functionality.
Once your data model is in place, you can use Flows to do rapid discovery on business process and organizational workflow. Using Flows, you can actually drive product development, because you quickly learn which objects you need to create and when you need to create them in order to hang data off of them.
The UI tools are rudimentary, but they enable you to figure out key decision points and logic flows in a real, functional way without needing to build everything up in Apex first. In other words, it’s a true prototyping tool.
For example, this user input…
…drives this logic:
And while there’s a written specification that outlines all of this functionality, It’s nice to have a picture, especially knowing that the “picture” actually works!
Creating a Flow prototype rapidly surfaces gaps in specifications, which you can then remedy before you pass it along to your developers. This is a huge time saver when it comes to product development. You learn very quickly where the sticky spots are in your business process. Since there are UI screens, you can even create rough layouts and accurate verbiage to pass along to the UX Design team.
Additionally, you can directly inform your development process—with a Flow, you will now have a visual artifact to put in front of developers, and they will know what steps they need to take and exactly what data points they will need to create a new feature. Together, you’ll be able to identify major logic branches before a single line of Apex gets written (and re-written and re-written).
All-in-all, what started as an experiment here at Motivis Learning has turned into a great tool for developing QA and Administrative tools, driving product development, and reducing development time. Flows improved our team satisfaction and productivity—what’s not to like?
There’s a lot of documentation and information out there to get you started. Here are a few sites and resources I found helpful.
- Of course, Salesforce provides the Visual Workflow Guide.
- I also enjoyed Rakesh Gupta’s book, Learning Salesforce Visual Workflow, as well as his blog, Automation Champion.
- Salesforce StackExchange.
- David Litton’s Salesforce Sidekick.
- Rich Englhard’s Developing Flow.
- This great post from Financial Force’s developer site, which includes the use of Process. Plugin to get even more value from Flow functionality with some help from Apex.