You can find the bundle repository and handbook here: https://artifacts.informationgrid.com/releases/Galibier/index.html. You’ll need credentials for this. If you don’t have these, please request them by emailing firstname.lastname@example.org .
Important notice: this Galibier release contains breaking changes in the web components. Please be aware of this and test before you update. Also notice that the previous release (Finestre) also contains breaking changes. Check the Finestre release notes here.
New and noteworthy
Besides a lot of smaller fixes the following major changes have been implemented in InformationGrid Galibier:
- Blob store support
- Configurable resource transformers
- Schema repository with mongo backend
Blob store support
InformationGrid Galibier comes with support for binary properties out of the box. With adding a binary constraint to a resource property of type string you can indicate the property will be storing a reference to a binary object. Blobs are stored in an IG blob store which is backed by either Amazon S3 store or in Azure Blob Storage. For testing there’s a grid-fs binding which stores the blobs in the mongo database.
For a blob store custom metadata can be configured by defining a schema for the blob metadata.
Properties with binary constraints are automatically handled by the forms component which will present an upload widget or a small detail when displaying the form.
Blob usage is being tracked automatically ensuring blobs are automatically being removed when there are no more resources referencing it. It goes without saying that blobs referenced from a journal will never be removed, unless the journal is truncated. When using custom metadata this metadata is automatically being indexed in a search index and a search service is provided to perform a search based on the metadata properties.
- Currently blob support is only available for stores with tenant isolation of NONE and LOGICAL;
- Blob usage tracking is available for the event journal and document store only. Other stores do support storing blob references but do not feature usage tracking with automatic deletion.
Configurable resource transformers
With InformationGrid Galibier it’s finally possible to define resource transformations in the IG workbench. Resource transformations can be defined to describe the rules that must be applied to transform a resource from one version to the next. When viewing a schema you immediately see what transformers have been defined for it.
There’s a special editor for editing the transformers, this editor features a preview that immediately lets you see the outcome of the transformation based on input data you can provide yourself.
We’ve made it easier to finalise draft resource types by providing a context menu on a folder allowing you to finalise all resource types in that folder in one go.
Schema repository with MongoDB backend
Both the graph schema repository and the in-memory schema repository have been superseded by a new schema repository implemented on top of the Mongo database. This simplifies the minimum infrastructure needed to run InformationGrid and also improves schema repository performance.
This new schema repository will help projects in detecting schema changes during their development process. As schemas will now always be persisted (as there’s no more in-memory schema repository) IG will always compare the new schema version to be stored with the existing version. If there’s a mismatch IG will complain, allowing you to implement the correct version bumps and transformers.
Note: for development purposes the schema repository can automatically be wiped on system startup by setting the
com.informationgrid.schema.developmentmode environment variable to
true. This only applies to projects using the IG libraries and does not apply to PaaS users.
Other miscellaneous changes
Beta support for Java 11
We’ve been testing InformationGrid with Java 11 and the results look good. As there were quite some changes required under the hood this will need extensive testing to make final. Upon request we can provide you with a beta IG Galibier build that works with Java 11 so you can check whether your application is already up for it.
Improved navigation in the workbench
Hyperlinks have been added to easily navigate between configurations and schemas or other configurations.
Configuration warning icons
On the Configurations page, in the case where a configuration is correct and valid, but the service that should result from that configuration is not available for some other reason, a yellow warning icon will now be displayed. If you point at this icon, a tooltip will show any missing dependencies which could be the cause of this situation. For example, if you have a correctly configured document collection, but the schema used has an invalid resource transformer, then the document service for the collection cannot be started, and a yellow icon will be displayed against its configuration.
Workbench management console
The workbench now features a management console providing you access to the most relevant flight controls that are also available in the CloudRTi dashboard and give you instant insight in which event consumers are running and provides statistics on the event consumer performance. This is provided to support the projection and event processor development in the IG workbench.
Web components update
The web components as delivered by InformationGrid (e.g. forms, (searchable) resource master, resource detail) are updated. Some breaking changes had to be made:
Including the web components
instead of including the components like this:
<script src="/ig/iguicomponents/iguicomponents.js"></script> // old, deprecated way
this is the new way of including the components:
<script type="module" src="ig/iguicomponents/iguicomponents/iguicomponents.esm.js"></script>
<script nomodule="" src=ig/iguicomponents/iguicomponents/iguicomponents.js"></script>
Usage of public methods on the components
All public methods are now async and return a promise, so if you use those public methods make sure to update the code accordingly. Example:
// old way
let data = formCmp.getData();
// new way
formCmp.getData().then(data => doSomethingWithData(data));
Event sourcing indexer configuration API changes
The API of the EventSourcingIndexerConfiguration has changed where the typing has been moved from the configuration to the configuration builder.
- TypedEventSourcingIndexerConfiguration<T> is renamed to EventSourcingIndexerConfiguration and does not have a generic parameter anymore.
- The configuration needs to be created with a builder class, i.e. the constructor invocation needs to be changed from TypedEventSourcingIndexerConfiguration<>(…) to TypedEventSourcingIndexerConfigurationBuilder<>(…) and the invocation of the build() method of the builder needs to be added.
- Preferred creation of the builder is by invoking EventSourcingIndexerConfiguration.builder(indexIdentifier, indexResourceType)
Journal no longer accepts invalid events
Yes this might sound trivial, but it’s a change that might have you run into surprises. Previously the journal was very lenient with respect to event payload contents when storing an event. From this release the journal validates the resource prior to storing the event. This means a journal append can result in a resource validation exception.
If you have any questions regarding InformationGrid then please send an email to email@example.com or call +31 (0)88 – 5864 630.