Hi,
I've run in to some issues with using booleans in my BPMN. Looking at the docs its not clear if / how much booleans are supported (i.e. they're not included in the list of supported data types). I previously logged an issue in Jira that the task console doesn't allow you to set a boolean as false. True is fine but false seems to leave the boolean as null resulting in an NPE when you test it.
I just tried to see what happens if I set a boolean variable false in a script task and then pass it into the task. When I do this I get:
Caused by: org.kie.kogito.serialization.process.ProcessInstanceMarshallerException: Error while unmarshalling process instance
at org.kie.kogito.serialization.process.ProcessInstanceMarshallerService.unmarshallProcessInstance(ProcessInstanceMarshallerService.java:124)
at org.kie.kogito.serialization.process.ProcessInstanceMarshallerService.unmarshallReadOnlyProcessInstance(ProcessInstanceMarshallerService.java:133)
at org.kie.kogito.infinispan.CacheProcessInstances.findInternal(CacheProcessInstances.java:66)
at org.kie.kogito.infinispan.CacheProcessInstances.findById(CacheProcessInstances.java:58)
at org.jbpm.util.JsonSchemaUtil.addPhases(JsonSchemaUtil.java:81)
at org.kie.kogito.process.impl.ProcessServiceImpl.getSchemaAndPhases(ProcessServiceImpl.java:421)
at com.ajita.transport.PieceProcessResource.getSchemaAndPhases_CheckInstructions_9(PieceProcessResource.java:1266)
at com.ajita.transport.PieceProcessResource_Subclass.getSchemaAndPhases_CheckInstructions_9$$superforward1(PieceProcessResource_Subclass.zig:12017)
at com.ajita.transport.PieceProcessResource_Subclass$$function$$326.apply(PieceProcessResource_Subclass$$function$$326.zig:53)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(InvocationInterceptor_Bean.zig:516)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroue(InvocationContexts.java:32)
at com.ajita.transport.PieceProcessResource_Subclass.getSchemaAndPhases_CheckInstructions_9(PieceProcessResource_Subclass.zig:26176)
at com.ajita.transport.PieceProcessResource_ClientProxy.getSchemaAndPhases_CheckInstructions_9(PieceProcessResource_ClientProxy.zig:6028)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)
at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)
at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:474)
at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:408)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
... 54 more
Caused by: java.lang.NullPointerException
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.getNode(NodeInstanceImpl.java:145)
at org.jbpm.workflow.instance.node.CompositeContextNodeInstance.getCompositeContextNode(CompositeContextNodeInstance.java:41)
at org.jbpm.workflow.instance.node.CompositeContextNodeInstance.getContextInstance(CompositeContextNodeInstance.java:57)
at org.kie.kogito.serialization.process.impl.ProtobufProcessInstanceReader.buildWorkflowContext(ProtobufProcessInstanceReader.java:489)
at org.kie.kogito.serialization.process.impl.ProtobufProcessInstanceReader.buildCompositeContextNodeInstance(ProtobufProcessInstanceReader.java:256)
at org.kie.kogito.serialization.process.impl.ProtobufProcessInstanceReader.buildNodeInstance(ProtobufProcessInstanceReader.java:233)
at org.kie.kogito.serialization.process.impl.ProtobufProcessInstanceReader.buildWorkflow(ProtobufProcessInstanceReader.java:160)
at org.kie.kogito.serialization.process.impl.ProtobufProcessInstanceReader.read(ProtobufProcessInstanceReader.java:112)
at org.kie.kogito.serialization.process.impl.ProtobufProcessInstanceMarshaller.readProcessInstance(ProtobufProcessInstanceMarshaller.java:47)
when either the task console or swagger tries to load the task or view the process
Whilst at it I thought I try using an expression in a task data assignment, but this just throws an error when compiling as it's treated as a string. Are expression data assignments actually supported in Kogito?