Plugin Versus Plugin-Input
-
Regular plugins add plugin rules to an existing data set, while setup plugins produce a new data set consisting of setup plugin rules. Just as data inputs result in a data set with setup data rules (previously "source rules"), plugin inputs result in a data set with setup plugin rules.
-
Both regular plugins and setup plugins can have 0 or more inputs.
-
Regular plugins' inputs can draw from any data sets, including the data set in which the plugin appears, which is most common.
-
Setup plugin inputs can only draw from other data sets, since the data set in which the setup plugin appears does not exist yet—the setup plugin is making it.
-
Because regular plugins add rules to an existing data set, they need a way to map the output of the plugin to the records in the data set. That is what dimensions are for. Therefore, both the cfg.factory-plugin (recipe) and the plugin block in cfg.factory need at least one dimension tag.
-
The output of a setup plugin becomes the new data set. Whatever detail level is present in that output determines the records in the data set. No mapping is needed, so there are no dimensions in either the recipe or the plugin block.
-
A plugin can have a name that differs from its ID, as in plugin "DC" id="Diag-Concat". Setup plugins only have IDs, so the value that appears immediately after plugin-input must always be the name of the directory where the plugin script lives.
In summary, setup plugins differ from normal plugins in that they have no dimensions, they produce setup plugin rules instead of plugin rules, they produce a new data set instead of adding to an existing one, they have no option to have a name separate from their ID, and they can only draw input from data sets other than the data set in which they are defined.