Skip to content

Improve include-ability of code whilst maintaining validation capabilities #8337

@tommy2d

Description

@tommy2d

Related Problem or Business Case

When creating complex integration suites using the Framework, it is very convenient to be able to re-use parts of the XML by utilizing the current capabilities that (in theory) allow the arbitrary injection of XML at any place in the configuration.

There are however a few problems with this approach:

  • Include elements are currently not allowed everywhere. This will trigger XSD validations when used within pipelines, params etc.
  • the to-be-include code needs to be contained in exactly 1 root element in order to yield valid XML. In case we want to include multiple elements through this route, we might wrap the file in a 'Module' Element that will be flattened by the xml compiler.
  • Even when grouping configuration through a Module element, validating the resulting Document is not possible, because it is no real 'unit'. E.g. one might decide to include the combination of Exit's and Pipes' into the Included XML document.

A possible way to circumvent this is to simply allow all contents within a Module, but that we we'll loose all validation capabilities.

Describe the Feature

Introduce multiple types of strictly defined 'Modules' or 'Snippits' that can be Included in the current mechanics of the Include mechanism. Repurpose the current 'Module' strictly for 'Configuration level' modules (a.k.a the way it is currently used). Apart from that, add structures like:

  • PipelineSnippit/PipelineModule/PipelinePart?
  • ParamsSnippit/ParamsModule/ParamsPart?
  • whatever we decide to need and support

This way, we strictly dictate what structures we support / deem desirable and we can offer strict validation support through the existing XSDs. 'Validation' here is two folded: we are also able to validate wether or not the Include element is used in an acceptable place.

Collaboration with External Companies

No, community resolution only

Anything else?

No response

Metadata

Metadata

Assignees

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions