4. Agent Plugins

A  agent is defined by inserting a class that extends the DRAgentInspectable class into the code server. The server will then instantiate the class and extract the needed information about the agent. Most agent related classes are located in the devkit.wf package.

An agent is either a collector, responsible for feeding data into a workflow, or a processing agent responsible for processing the incoming data. Processing agents that do not forward data to other agents, but forwards data to downstream systems, are referred to as forwarding agents. Agents are designed to operate either in a batch oriented or a real time oriented workflow.

To create a user defined agent, a configuration contract for the agent is required. The configuration contract is a mechanism by which agents can supply  with data and meta­data at runtime and compile time. A configuration contract is a declarative piece of XML data associated with an agent at compile time. The data is also available at runtime for further processing.

The agent plugins contain four main parts; Data, Executable, GUI, and Inspectable.


Agent structure

The corresponding classes should be named as shown below:


ClassDescription

<Agent>Config

This class is generated from the agent's configuration contract. The class holds the configuration data for the agent. It extends the class DRAgentConfigData and implements the DRGeneratedFromContract interface.

<Agent>Insp

This is the agent definition class that contains references to the user interface and executable implementations of the agent, as well as other information. This class must extend DRAgentInspectable.

<Agent>UI

The agent user interface dialog, used to collect and display the template configuration data for the agent. It is defined in a class extending DRAgentUI.

<Agent>Exec

This is the class responsible for the actual execution that implements the agent's runtime logic. The class to extend depends on what type of agent is developed: DRRealtimeCollector, DRBatchCollector, DRRealtimeProcessor orDRBatchProcessor.