In Kognitos, a process can call and run multiple subprocesses in parallel using the start a run syntax. Starting parallel runs enables the parent process to explicitly wait for the runs, retrieve the statuses, and fetch the outputs.
This is ideal when multiple subprocesses need to run simultaneously and you need to retrieve the statuses or outputs of multiple runs.
You need to promote your automation from the Playground to a Process in order to start parallel runs. This applies to both the main parent process and the subprocess. Otherwise, you will get an Assertion Error saying procedure not found.
Handling Subprocess Runs
A parent process can explicitly wait for the runs of a subprocess to complete. Once all runs have finished executing, the system notifies the parent process which runs will proceed further. This allows the parent to respond accordingly, such as collecting data and output from each subprocess, or taking further action based on the results.
Adding an Explicit Wait
To add an explicit wait, include the following line into your automation after starting parallel runs:
Getting Output From Parallel Runs
To get results from subprocesses that are called with the start a run syntax, use the following syntax after adding an explicit wait:
Syntax
Below is a line-by-line overview of the automation syntax. Expand each line to learn more.
retrieve data from the run(s)
What does it do? Instructs the system to retrieve data from the parallel run(s).
Where does it go? This phrase should be written on a new line.
Does it require input data? ⛔ No — This phrase does not require input data.
the fact names are
What does it do? Specifies the name of the data elements to retrieve from the parallel runs.
Where does it go? This phrase should be indented below retrieve data from the run or retrieve data from the runs.
Does it require input data? ✅ Yes — Specify one or more text values containing the names of the data elements.
Example:The fact names are "status", "name", "age"
Examples
1. Singular Run
2. Multiple Runs
Automatic Pluralization: If there are multiple runs, the system will automatically pluralize the output in the parent process (e.g., status -> statuses).
Walkthrough: Run Parallelization
This is an example walkthrough of invoking multiple instances of a subprocess in parallel runs.
Parent Process
Line #
Description
Line 1
The wait count is set to 10 seconds (2 intervals of 5 seconds).
Line 2
A data element is defined as a list of names.
Line 3
Initiates a loop across the list of names.
Line 4
Initiates subprocess invocation using start a run where syntax.
Line 5
Specifies the name of the published subprocess to call.
Line 6
Passes input to the subprocess: the name is passed as the user.
Line 7
Sets an explicit wait for the subprocess runs.
Line 8
Explicitly retrieves the greeting output from the subprocess runs.
Subprocess
Line #
Description
Line 1
Data is defined as a string that says "Hello "
Line 2
The user is added to the end of the greeting.
Line 3
The automation outputs a greeting with the user's name at the end.
Subprocess Output
In line 9, the greetings is referenced as output from the subprocess runs. The results are:
the items are "apples", "flour", "eggs", "milk"
process each item as follows
start a run where
the procedure is /to make apple pie
the ingredient is the item
wait for the runs
retrieve data from the run where
the fact names are "output sum"
get the output sum from the data
retrieve data from the runs where
the fact names are "status"
get the statuses from the data
the department's max retry wait count is 2
the names are "Eva", "Ivan", "Leo", "Nia", "Zoe"
process each name as follows
start a run where
the procedure is /to greet the user
the user is the name
wait for the runs
retrieve data from the runs
the fact names are "greeting"
get the greetings from the data