The name of "Utility Workflow" is not a Nintex term. It's something I like to use when building a child workflow that was built specifically to do some work that is reusable. In the case of Nintex Workflow Cloud, there's a cool way to do this by building a workflow that is configured with an External Start. But since these workflows don't have any outputs, this is strictly a utility workflow that does some work with some input parameters only. In the future there'll be a proper way to do this with input/output parameters. For now, I found this to be a cool way to run some Workflow logic without having to rebuild the same thing over and over again.
Example of a Utility Workflow
As part of a contract request workflow, the end result is an email that goes out to the initiator. That email could be one that notified them of an approval or rejection. The email body and subject have a lot of similarities. So why not build a workflow that does that work? What this also means, is that you can use this workflow in a number of places in parent workflow but you can also use it in a bunch of other workflows, all to do with different types of contracts.
External Start Workflow
Firstly, we start with creating a new workflow in Nintex Workflow Cloud. You're presented with an empty design canvas, with the first action being the Start event node. Single click on that node and that will bring up the Start Event Configuration.
Since this is an external start workflow, for the Connector, select Nintex and for the Event, select External Start.
Notice there are other events you can build workflows for, but in this case, External Start is the way to go for this purpose.
Once you select External Start, you'll get the option to add the input variables.
Notice I've just added a few that I can reuse in this kind of workflow that's going to send an email for us.
Using the Input Parameters
This workflow is going to be super simple. I'm going to have a Branch by Condition action to check the Status. Then I'll have Send an Email action on both branches.
For the Send an Email action, when you click on "Email Addresses" field, a blue button named Variables appears. Click on that so you insert one of the input variables.
You can insert variables within flat text also. So you can have a nice combination of structured text with dynamic data.
The resulting simple workflow looks like this :
Although this isn't a complex workflow, these are three action you no longer need to add and configure in your workflow. Instead, you have centralized it so that it's reusable. It also means that later down the track if you want to modify the email that goes out, or handle another status, you can change it here without modify all your other workflows.
External Start Information
It's publish time. Once you publish this workflow, you get a bunch of information.
The important things for us to take note of here, are the ":URL with token", "Request header content type" and the "Request content (parameters)". This is what we will use in a "Call a web service" action.
Call the Utility Workflow
Go to your real work workflow, and add a Call a web service action. Click on it to see the configuration window slide out. You'll be doing a little copy and paste here, so I recommend you keep another tab open with the external parameters open.
We simply copy the bits i mentioned earlier into the Call a web service action and make sure it's set to do a HTTP Post.
The one thing I did also do, is remove the text from the "callbackUrl" in the Request content (at the bottom). That's it.
The email that gets received looks like this :
Nintex Workflow Cloud
If you want to see what this workflow looks like, you can import the utility workflow. Here is the Workflow ID : 8b33e80dc1734dfb8695e7c3bb15444c
I'll do my best to keep it live/active. But if it fails to import, let me know.