Booleans and Expressions in BPMN

216 views
Skip to first unread message

Adrian Apthorp

unread,
Nov 14, 2021, 5:42:24 AM11/14/21
to Kogito development mailing list
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?

Reply all
Reply to author
Forward
0 new messages