Some use cases require that specific groups and tasks can be located in order to reference them in other processes. For example, it can be useful to use a task and its sub tasks as a template for a new set of tasks, but the template tasks need to be located for this to happen.
These items are located using a reference system that is global across an instance of a process client, and which is independent of the folder hierarchy and task relationships. In common with other systems, the term "exports" is used to identify an item as one that can be accessed globally. This is separate concept from the task export and import (though it is related because export references can be used instead of a file export to use a task as a template).
The convention that is used is to provide an "export" reference in the Configuration options of a group or a worker, as in this example.
{
"export": "taskTemplate"
}
The export can be a single string or an array of strings. Export references do not need to be unique. References that need to be specific to an application would tend to be unique; those that represent general capabilities would tend to be not unique.
For security reasons, task-level exports are not sufficient to locate a task (since non-authorised users could export tasks). For an export to be accessible, the group must also have an export reference, which is assumed to be secure because only administrators can set up and change groups (or install applications that do so).
Global task exports can then be discoved using a groupExportReference.taskExportReference convention, with * as a wildcard. For example, you could use the reference "*.taskTemplate" to find all the tasks with a reference of taskTemplate in any group.
The Export Locator Script can be used to locate the exported items. This provides support for various different patterns of location.