Introduction
Universal Extension
A Universal Extension is a task type provided by Universal Controller. It allows third-party developers (or anyone with access) to implement custom solutions (Extensions) that can be tightly and seamlessly integrated into the Controller's native functionality.
Universal Extensions were designed to facilitate integrations between UAC and external sources of information or functionality. The extension implementation is stored and managed in the Controller and executed on agent systems.
Universal Extensions consist of two primary parts:
A Universal Template definition that is created and stored in the Controller.
A Python zip archive that is developed outside of the Controller and contains Python source code that implements the Extension functionality.
Although the Python zip archives are developed outside of the Controller, they are eventually uploaded to an associated Universal Template in the Controller. From there, the Controller will automatically manage the deployment of the Extension zip module down to agent systems as needed.
Unique Capabilities
The Universal Extensions provides unique capabilities that are not available with other general purpose task types.
Custom task form definition | As with Universal Tasks, Universal Extensions use the Controller's Universal Template form building system. This allows a new task type to be built up field by field using types and verbiage that is natural and specific to functionality requirements of the task type being created. |
Dynamic Choice Fields | Dynamic Choice Fields are Universal Template Choice fields that can be added to a Universal Extension Task form. Dynamic Choice fields are backed by a custom command implementation (Dynamic Choice Command) that executes on a target agent system and send back data used to populate the drop-down. This can be used, for example, to pull data from third party system that may be needed to define a task (job names, process IDs, modes of operation, etc.). |
Dynamic Commands | In addition to the standard instance commands (i.e. Cancel, Re-run, Retrieve Output, etc.), custom commands can be defined to extend the command capabilities of a Universal Extension Task instance. |
Output Only fields | Fields can be defined with an Output Only restriction. These fields appear on the task instance as read-only and can be updated in real-time during task execution by the Extension instance running on the target agent system. |
Job Completion Output | Universal Extensions support a new output type: EXTENSION. The EXTENSION output type is separated from STDOUT / STDERR and provides more advanced Success/Failure Output Contains processing. |
Encapsulation of 3rd party dependencies | Universal Extensions support encapsulation of 3rd party modules/packages that are required for execution. This minimizes or eliminates manual deployment efforts. |
Universal Event Support | Universal Extensions can be used to extend the Controller's monitoring capabilities through Universal Events and Universal Monitors/Universal Monitor Triggers. |
UIP-CLI
With the 7.3.0.0 release, the uip-cli (v1.3.0)
tool has been enhanced with the ability to purge build artifacts, making the process of creating, building, and uploading Extensions easier and convenient.
See the Development Environment Set-Up and Task Entry Point documents for information regarding installing and using the CLI.
UIP VS Code Extension
Alongside the uip-cli
tool, the UIP
Visual Studio Code Extension has also been enhanced with the ability to purge build artifacts.
Additionally, the UIP
plugin now offers:
- Context aware code completion for field names in
dynamic_commands
,dynamic_choice_commands
, andextension_start
. - Ability to debug Universal Extension tasks directly from VSCode without the need of Universal Agent and Universal Controller.
See the Development Environment Set-Up and Task Entry Point documents for information regarding installing and using the UIP VS Code Extension.