Plug-Ins

Application Signatures plug-ins are ways of dynamically adding or removing functionality . Usually plug-ins are independent of each other and perform a single task.

In Universal Discovery, there is always a flow of execution similar to the following:

  • Discovery job starts

  • Job performs some activity (that is, executes commands)

  • Job formats results as a vector of Object State Holders

  • Job returns results and the execution ends

To add plug-ins to this job, the job at some point should pass control to the plug-ins and allow them to affect the results. This can be seen in the following diagram, where the arrow represents execution flow:

In general, for this mechanism to work at the point where the main module passes control to plug-ins, the answers to the following questions must be known:

  • What plug-ins exist in the system?

  • What plug-ins, from the whole set of plug-ins, should run along with this module?

  • What is the order of plug-ins?

  • Where is the plug-in’s code, and how can it be instantiated?

  • How does a plug-in pass its results to main module?