Specifying prerequisites for analyzers and other modules


In contrast to the CMS framework, analyzers are constrained to be in end paths. However, this gives us problems when considering how to specify whether an analyzer module is run based on (for example) filter results. Output modules have a configuration "language" of their own, and so have a solution to this problem already.


This proposal simplifies the filtering configuration of output modules, and provides the same facility for applying filtering to analyzers.

A module requiring conditions to be satisfied before it is run shall specify a string parameter requires as part of its configuration. This will be a logical expression containing filter labels, parentheses and the logical operators ||, && and ~. It will have short-circuit semantics.

The system will take care of parsing requires items if they are present and ensuring that modules are called in the correct order (or not called at all) as appropriate.

With the advent of path-less on-demand operation this functionality can be extended trivially to producers.