JBoss Community

How to check in jBPM 4.3 that java activity returned null?

created by Constantine Kulak in jBPM - View the full discussion

Hello,

 

is there any way to store null value in a variable and then check it for being empty? I'm trying to do it like this:

 

    <java
        method="someMethod" name="Java" var="variable">
        <transition to="Decision" />
    </java>

 

    <decision name="Decision">
        <transition to="Variable is empty">
                    <condition expr="#{empty variable}" />
                </transition>
        <transition to="Default" />
    </decision>

 

here xxx.Test.someMethod returns null, and decision throws an exception:

 

org.jbpm.api.JbpmException: script evaluation error: javax.el.PropertyNotFoundException: Cannot find property variable
    org.jbpm.pvm.internal.script.ScriptManager.evaluate(ScriptManager.java:130)
    org.jbpm.pvm.internal.script.ScriptManager.evaluate(ScriptManager.java:118)
    org.jbpm.pvm.internal.script.ScriptManager.evaluateExpression(ScriptManager.java:90)
    org.jbpm.pvm.internal.model.ExpressionCondition.evaluate(ExpressionCondition.java:41)
    org.jbpm.jpdl.internal.activity.DecisionConditionActivity.findTransitionUsingConditions(DecisionConditionActivity.java:61)
    org.jbpm.jpdl.internal.activity.DecisionConditionActivity.execute(DecisionConditionActivity.java:46)
    org.jbpm.jpdl.internal.activity.DecisionConditionActivity.execute(DecisionConditionActivity.java:42)
    org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:60)
    org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:656)
    org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperation(ExecutionImpl.java:616)
    org.jbpm.pvm.internal.model.ExecutionImpl.start(ExecutionImpl.java:217)
    org.jbpm.pvm.internal.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:61)
    org.jbpm.pvm.internal.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:37)
    org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
    org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)
    org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
    org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
    org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
    org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)
    org.jbpm.pvm.internal.svc.ExecutionServiceImpl.startProcessInstanceById(ExecutionServiceImpl.java:58)
    org.jbpm.integration.console.ProcessManagementImpl.newInstance(ProcessManagementImpl.java:151)
    org.jboss.bpm.console.server.FormProcessingFacade.startProcessWithUI(FormProcessingFacade.java:202)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:117)
    org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:260)
    org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:232)
    org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:166)
    org.jboss.resteasy.core.DispatcherUtilities.getJaxrsResponse(DispatcherUtilities.java:142)
    org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)
    org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:173)
    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:93)
    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.jboss.bpm.console.server.util.GWTJsonFilter.doFilter(GWTJsonFilter.java:59)

 

So I guess it doesn't create a variable if null is returned. To overcome this I'm returning List instead of a single object and check whether it is empty or not, but it looks ugly. Is there any better way to check for null values returned by java activity?

 

Thanks in advance for your suggestions.

Reply to this message by going to Community

Start a new discussion in jBPM at Community