This document explains how the data layer of plugins are implemented in BASE.
See also
The PluginDefinitionData
[API]
holds information of the installed plugin classes. This information is saved when the plugin is installed, it's then used by the
system to load and run the plugin.
PluginConfigurationData
[API]
is used for storing configuration values related to a plugin. A plugin may have many
different configurations. The flags supportsConfigurations
and
requiresConfiguration
are used to specify if a plugin must have or can't have
any configurations.
Parameter values are versioned. Each time anyone updates a configuration the version number is increased and the parameter values are stored as a new entity. This is required because we want to be able to know exactly which parameters a job were using when it was executed. When a job is created we also store the parameter version number (JobData.parameterVersion). This means that even if someone changes the configuration later we will always know which parameters the job used.
The PluginTypeData
[API]
is used to register information about the additional interfaces a plugin implements. This
may allow a plugins to be used only in certain contexts. For example, we define
the AutoDetectingImporter
interface which should be implemented
by plugins support automatic detection of file formats. Then, client applications
can load all such plugins and ask them to check if a file is importable or not.
The JobData
[API]
class holds information about one execution of a plugin. The job can be in different states:
A JobAgentData
[API]
holds information about a job agent. A job agent is a program running on the same
or a different server that is regularly checking for jobs that are waiting
to be executed. The JobAgentSettingsData
[API]
class links to the plugins the job agent is able to execute. The job agent will
only execute jobs that are owner by users or projects that the job agent has been
shared to with at least use permission. The priorityBoost
property
is used to give certain plugins higher priority.
Thus, for a job agent it is possible to: