Spin Plugin Maintenance

Hi,

does the spin plugin have a release plan or will it be maintained in future by camunda or the community?

Im asking this question because there were no updates for longer time and many of its dependencies , especially in camunda-spin-dataformat-json-jackson are not state of the art.

For example when using spring boot 1.4.0 it ships jackson 2.8.1 .Camunda-spin-dataformat-json-jackson ships jackson 2.6.1 as compile time dependency.

At runtime you can not use Decision Tables longer in your Process because jackson 2.8.3 as runtime dependency is not compatible. A exception occures.

It ist no the first issue with spin plugin and json. It seems not to be useable in a Spring context with embedded process engine at the moment.

Any plans of maintenance?

Best regards,

Markus

1 Like

Hi @Markus,

there are bunch of tickets for spin right now in our JIRA.

Do I understand your problem correctly, you cant user Decision Tables with latest version of Spring Boot due to dependencies conflict? If that is so, did you try to exclude conflicting dependency from build?

Cheers,
Askar.

Hi Askar,

Yes you understand it correctly . We use jackson-core in version 2.8.3 . Thats the version shipped with spring boot 1.4.0.
Camunda spin ships jackson in version 2.6.1.
At compile time this is no problem but at runtime when evaluating the decision table I got a exception in
class com.fasterxml.jackson.databind.type.TypeBindings (Line 125).

This class changed from version 2.6.1 to 2.8.3.

I copied the first three rows of the exception below.

java.lang.IllegalArgumentException: Can not create TypeBindings for class org.camunda.bpm.dmn.engine.impl.DmnDecisionTableResultImpl with 1 type parameter: class expects 0
at com.fasterxml.jackson.databind.type.TypeBindings.create(TypeBindings.java:125)
at com.fasterxml.jackson.databind.type.TypeFactory.constructCollectionType(TypeFactory.java:714)

A downgrade of jackson is not possible for us

Best regards,

Markus

Hi @Markus,

is downgrading spring boot an option?

Cheers,
Askar

Hi Askar,

No this is not an option too.
At the moment i deactivated the spin plugin and use normal JAVA Serialization. Its fine for the moment but not our preferred solution.
This would be to use spin plugin and JSON serialization in future.
In my opinion Spin is very important for example to use compled objects ins decision tables.

Best regards,

Markus

Hi Markus,

You could use the camunda-spin-dataformat-all which contains a relocated version of Jackson and therefore does not interfere with another Jackson version on the classpath. Of course, this approach is limited in that you cannot use the non-relocated Jackson annotations, modules, etc.

One general remark on maintenance of Spin. Spin is actively maintained by Camunda, yet this does not include upgrading dependencies whenever new versions are available. We rather do this if there is a good reason to do so (e.g. because that fixes a bug). Being able to use Spin properly in a Spring boot environment could be one such reason. In such a case, we rely on feedback by the community which you provided here. Feel free to create a JIRA ticket for upgrading the version. If you feel like it and want to get things done, you can also submit a pull request to camunda spin.

Cheers,
Thorben

Hi Thorben,

camunda-spin-dataformat-all is not a good solution because I have to annotate classes or methods in classes twice (for example @JsonIgnore).
Furthermore I have all ( or many) classes twice on my classpath from different dependencies. Not easy for maintenance and to understand.

I will create a jira ticket.

Best regards,

Markus

For what it’s worth, the described issue appears in fact to be a bug in Jackson. Don’t think Camunda could really do something about it.

Regards,

— Grzegorz