A bundle is a type of resource, composed of one or several generic files, to be used in pipelines as auxiliary configuration or libraries. Bundles greatly enhance the flexibility and extensibility of the Zentral product including multiple and flexible configuration possibilities for pipelines, that will support referencing configuration files instead of just using values (or properties) in a field. In addition this helps maximize the possibilities of edge computing (i.e. the CookProcessor) to reference 3rd party libraries. For example, to allow for the addition of a business rules engine (i.e. https://www.drools.org) and call it from a pipeline and additionally configuration some components (i.e. JBDC/JPA components) that require complex configurations that must be built outside of Zentral (i.e. x509 certificate, or JPA beans).

Objectives

In this section you will learn:

  • What a bundle is
  • How to add a bundle to a pipeline.


Overview: Using bundles

Bundles are a set of files, and these files are self-contained. The files in a bundle will be used or loaded as-is, without any further translation beyond the intended usage - that is, if a bundle is to be used as libraries or a configuration. Please keep in mind that specifically, files in a bundle can not use properties. If used, the property will not be translated/mapped.

Any field can reference a bundle or a file inside a bundle. At the end of the day, the bundle refers to a directory with multiple files, and a file in a bundle refers to one file.

Runtime considerations

  1. If there is a property in the field, that field is mapped to the property value.

    1. Properties can reference bundles or files inside bundles.

    2. Properties can be overridden and there for you could always decide to maintain different sets of bundles (i.e. test vs. production).

  2. If the field value is mapped to a bundle (i.e.[[bundle!version]]), then this will expand to a list of files. The component is smart enough to interpret the list of files, or raise an error.

  3. If the field value is mapped to a file inside a bundle (i.e. [[bundle!version!file]]), this will load the file contents as the field value. For example, it is possible to load x509 certificates this way. 


How to add a bundle to a pipeline

For hands on tutorials please read: Tutorial: Bundles


As bundles at the end of the day are loadable file paths, to insert a bundle into a pipeline: 


Navigate to the resources overview and click on add a New Resource, and select add a bundle:



Once the bundle has been selected, it is now possible to add a name, and a description. It is also possible to import and export bundles in the Export, and Import sections of the resources overview tab.


After naming, it is important to consider if the files will need to be expanded, or if they are not zipped, left as is. Toggle Expand will expand the files that are flagged in the files section. From the files section add the files you wish to reference in your bundle resource.


Once a bundle has been successfully created you will need to reference the bundle within the pipeline.  To do this, in a editable field, within for example the Cook processor, reference the bundle with an autocomplete statement using the expression of &&{   .   This will load the available paths of bundles created and available for the current pipeline.