Using DMN and Spin plugin together

Hi,

we tried to use the Spin engine plugin and DMN together. We have created a simple DMN decision table where exactly one result comes back. When we try to execute the workflow we get the following error message:

2017-02-15 17:20:37,149 ERROR [pool-1-thread-1] context: ENGINE-16006 BPMN Stack Trace:
	Task_1etctca (activity-execute, ScopeExecution[af154ab6-f39a-11e6-8f9f-98541b277d38])
	Task_1etctca
	  ^
	  |
	Task_0ptkx5t
	  ^
	  |
	StartEvent_1

2017-02-15 17:20:37,154 ERROR [pool-1-thread-1] context: ENGINE-16004 Exception while closing command context: Cannot serialize object in variable 'decisionResult': SPIN/DOM-XML-01030 Cannot create context
org.camunda.bpm.engine.ProcessEngineException: Cannot serialize object in variable 'decisionResult': SPIN/DOM-XML-01030 Cannot create context
	at org.camunda.bpm.engine.impl.variable.serializer.AbstractSerializableValueSerializer.writeValue(AbstractSerializableValueSerializer.java:53)
	at org.camunda.bpm.engine.impl.variable.serializer.AbstractSerializableValueSerializer.writeValue(AbstractSerializableValueSerializer.java:27)
	at org.camunda.bpm.engine.impl.persistence.entity.util.TypedValueField.writeValue(TypedValueField.java:160)
	at org.camunda.bpm.engine.impl.persistence.entity.util.TypedValueField.setValue(TypedValueField.java:120)
	at org.camunda.bpm.engine.impl.persistence.entity.VariableInstanceEntity.<init>(VariableInstanceEntity.java:118)
	at org.camunda.bpm.engine.impl.persistence.entity.VariableInstanceEntity.create(VariableInstanceEntity.java:136)
	at org.camunda.bpm.engine.impl.persistence.entity.VariableInstanceEntityFactory.build(VariableInstanceEntityFactory.java:27)
	at org.camunda.bpm.engine.impl.persistence.entity.VariableInstanceEntityFactory.build(VariableInstanceEntityFactory.java:21)
	at org.camunda.bpm.engine.impl.core.variable.scope.AbstractVariableScope.setVariableLocalTransient(AbstractVariableScope.java:371)
	at org.camunda.bpm.engine.impl.util.DecisionTableUtil.evaluateDecisionTable(DecisionTableUtil.java:70)
	at org.camunda.bpm.engine.impl.bpmn.behavior.DmnBusinessRuleTaskActivityBehavior$1.call(DmnBusinessRuleTaskActivityBehavior.java:53)
	at org.camunda.bpm.engine.impl.bpmn.behavior.DmnBusinessRuleTaskActivityBehavior$1.call(DmnBusinessRuleTaskActivityBehavior.java:50)
	at org.camunda.bpm.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior.executeWithErrorPropagation(AbstractBpmnActivityBehavior.java:105)
	at org.camunda.bpm.engine.impl.bpmn.behavior.DmnBusinessRuleTaskActivityBehavior.execute(DmnBusinessRuleTaskActivityBehavior.java:50)
	at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationActivityExecute.execute(PvmAtomicOperationActivityExecute.java:41)
	at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationActivityExecute.execute(PvmAtomicOperationActivityExecute.java:26)
	at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:81)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.invokeNext(CommandContext.java:187)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performNext(CommandContext.java:166)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:141)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:589)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:565)
	at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationTransitionNotifyListenerStart.eventNotificationsCompleted(PvmAtomicOperationTransitionNotifyListenerStart.java:56)
	at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationTransitionNotifyListenerStart.eventNotificationsCompleted(PvmAtomicOperationTransitionNotifyListenerStart.java:26)
	at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:65)
	at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:81)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.invokeNext(CommandContext.java:187)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performNext(CommandContext.java:166)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:141)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:131)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:600)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:575)
	at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:58)
	at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:81)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.invokeNext(CommandContext.java:187)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performNext(CommandContext.java:166)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:141)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:131)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:600)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:575)
	at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:58)
	at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:81)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.invokeNext(CommandContext.java:187)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performNext(CommandContext.java:166)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:141)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:131)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:600)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:575)
	at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:58)
	at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:81)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.invokeNext(CommandContext.java:187)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performNext(CommandContext.java:166)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:141)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:131)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:600)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:575)
	at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:58)
	at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:81)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.invokeNext(CommandContext.java:187)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performNext(CommandContext.java:166)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:141)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:589)
	at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:565)
	at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationTransitionCreateScope.scopeCreated(PvmAtomicOperationTransitionCreateScope.java:34)
	at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationCreateScope.execute(PvmAtomicOperationCreateScope.java:49)
	at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationCreateScope.execute(PvmAtomicOperationCreateScope.java:23)
	at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:81)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.invokeNext(CommandContext.java:187)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performNext(CommandContext.java:174)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:141)
	at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:131)
	at org.camunda.bpm.engine.impl.jobexecutor.AsyncContinuationJobHandler.execute(AsyncContinuationJobHandler.java:75)
	at org.camunda.bpm.engine.impl.jobexecutor.AsyncContinuationJobHandler.execute(AsyncContinuationJobHandler.java:35)
	at org.camunda.bpm.engine.impl.persistence.entity.JobEntity.execute(JobEntity.java:130)
	at org.camunda.bpm.engine.impl.cmd.ExecuteJobsCmd.execute(ExecuteJobsCmd.java:118)
	at org.camunda.bpm.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
	at org.camunda.bpm.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:104)
	at org.camunda.bpm.engine.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:42)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
	at org.camunda.bpm.engine.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:40)
	at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:66)
	at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)
	at org.camunda.bpm.engine.impl.jobexecutor.ExecuteJobsRunnable.executeJob(ExecuteJobsRunnable.java:79)
	at org.camunda.bpm.engine.impl.jobexecutor.ExecuteJobsRunnable.run(ExecuteJobsRunnable.java:57)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.camunda.spin.xml.SpinXmlDataFormatException: SPIN/DOM-XML-01030 Cannot create context
	at org.camunda.spin.impl.xml.dom.DomXmlLogger.unableToCreateContext(DomXmlLogger.java:156)
	at org.camunda.spin.impl.xml.dom.format.spi.DefaultJaxBContextProvider.getContext(DefaultJaxBContextProvider.java:38)
	at org.camunda.spin.impl.xml.dom.format.spi.DefaultJaxBContextProvider.createMarshaller(DefaultJaxBContextProvider.java:45)
	at org.camunda.spin.impl.xml.dom.format.DomXmlDataFormatMapper.getMarshaller(DomXmlDataFormatMapper.java:130)
	at org.camunda.spin.impl.xml.dom.format.DomXmlDataFormatMapper.mapJavaToInternal(DomXmlDataFormatMapper.java:68)
	at org.camunda.spin.plugin.impl.SpinObjectValueSerializer.serializeToByteArray(SpinObjectValueSerializer.java:72)
	at org.camunda.bpm.engine.impl.variable.serializer.AbstractSerializableValueSerializer.writeValue(AbstractSerializableValueSerializer.java:50)
	... 86 more
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
org.camunda.bpm.dmn.engine.impl.DmnDecisionTableResultImpl does not have a no-arg default constructor.
	this problem is related to the following location:
		at org.camunda.bpm.dmn.engine.impl.DmnDecisionTableResultImpl

	at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:438)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)
	at sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)
	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
	at javax.xml.bind.ContextFinder.find(ContextFinder.java:441)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
	at org.camunda.spin.impl.xml.dom.format.spi.DefaultJaxBContextProvider.getContext(DefaultJaxBContextProvider.java:35)
	... 91 more

Do we have something wrong in our Spin configuration? We are using the workflow (7.5.0) engine integrated via Spring in our application. But we found nothing under that error code in the web.

Thanks,

Alexander

Please post the entire stacktrace.

Changed original description with the whole stacktrace.

Hi @Alexander,

could you publish your dmn definition?

Cheers,
Askar

Sure, here is the workflow and the decision files.

Test_010_DmnTask.bpmn (6.8 KB)
Test_010_DmnTask.dmn (1.9 KB)

Regards

Alexander

@Alexander Hi were you able to resolve this issue ??