Usage of multiple IDS Infomodel Serializer versions #767
Replies: 2 comments 4 replies
-
I also like the idea of running multiple information model versions in the same connector. Currently it's also not possible to run multiple information model versions in the same connector. One of the main issues is, that we would get collisions in the namespace. If we find a solution to run multiple serializer versions, we should apply the same solution to the information model, too. |
Beta Was this translation helpful? Give feedback.
-
A couple of questions:
If the serializer can support those two items, this could be achieved through a simple dispatching mechanism. If the serializer does not support #2, the only way to solve this is to introduce a classloader isolation mechanism or name-mangling, which I don't think are maintainable solutions. If the serializer does not support 1 & 2, we could adopt an incremental approach where M3 targets one version and later we work with the serializer team to introduce those changes. |
Beta Was this translation helpful? Give feedback.
-
After talking to @ronjaquensel and @tmberthold, I want to highlight the following issue we always had with the IDS Infomodel and Serializer libraries: Setting the serializer version as fixed, forces the component to only ensure the compatibility to one Infomodel version, as we do not have any compatibility table. This means an incoming message with 4.2.7 could be deserialized with serializer 4.2.8, but maybe not with 4.2.6 or 5.0.0, although the handling of the IDS objects stays the same. This implies that we need to instant reject messages of another version in order to prevent exceptions. This raises some issues regarding the compatibility to other IDS components both central services and connectors that update their Infomodel versions continously.
Maybe we could find a way to support multiple serializer versions at runtime? In this context, the EDC could recognize what version the incoming message has and take the appropriate serializer version to deserialize objects. This would solve syntax problems. Nevertheless, we also have to keep in mind and implement ways of handling missing properties. So if our message processing depends on an attribute that a newer version of the Infomodel may not cover, we need to check and implement workarounds. Thus, every attribute from an IDS input has to be checked for existence before processing it.
Beta Was this translation helpful? Give feedback.
All reactions