[jboss-user] [jBPM] - NPE while serviceTask call

Claus Straube do-not-reply at jboss.com
Wed Mar 31 12:56:06 EDT 2010


Claus Straube [http://community.jboss.org/people/clauss] created the discussion

"NPE while serviceTask call"

To view the discussion, visit: http://community.jboss.org/message/534977#534977

--------------------------------------------------------------
Hi all,

I'm always running in a NPE with BPMN 2.0 (jBPM 4.3) and Spring 2.5.3.

This is my testcase:

    @Test
    public void testAsyncCalls(){
        //deploy process
        repositoryService.createDeployment().addResourceFromClasspath("async_service_call.bpmn.xml").deploy();
        
        //start instance
        ProcessInstance instance = executionService.startProcessInstanceByKey("foobar");
        Assert.assertNotNull(instance);
        
        //get instance id
        String iid = instance.getId();
        
        //set instance id as variable
        executionService.setVariable(iid, "instanceId", iid);
        
        //signal first execution
        Execution e1 = instance.findActiveExecutionIn("r1");
        Assert.assertNotNull(e1);
        executionService.signalExecutionById(e1.getId());
        
        //get instance back
        ProcessInstance instance2 = executionService.findProcessInstanceById(iid);
        Assert.assertNotNull(instance2);
        
        //check if the var has been set
        Assert.assertEquals("foo", executionService.getVariable(iid, "v1"));
        
        //signal second execution
        Execution e2 = instance2.findActiveExecutionIn("r2");
        Assert.assertNotNull(e2);
        ProcessInstance instance3 = executionService.signalExecutionById(e2.getId());
        
        //check if the instance has been ended
        Assert.assertTrue(instance3.isEnded());
    }


This is the process:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions id="ServiceTaskJava"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
    xmlns:bpmn="http://schema.omg.org/spec/BPMN/2.0" typeLanguage="http://www.w3.org/2001/XMLSchema"
    expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://sample.bpmn.camunda.com/"
    xmlns:jbpm="http://jbpm.org/4.0/bpmn2">


    <bpmn:itemDefinition id="i1">
        <jbpm:arg>
            <jbpm:object expr="#{instanceId}" />
        </jbpm:arg>
    </bpmn:itemDefinition>

    <bpmn:itemDefinition id="i2">
        <jbpm:var name="v1" />
    </bpmn:itemDefinition>

    <bpmn:message id="im" name="input message"
        structureRef="i1"></bpmn:message>

    <bpmn:message id="om" name="output message"
        structureRef="i2">
    </bpmn:message>

    <bpmn:interface id="if1" name="mocks.Mock01">
        <bpmn:operation id="o1" name="call">
            <bpmn:inMessageRef>inputMessage</bpmn:inMessageRef>
            <bpmn:outMessageRef>outputMessage</bpmn:outMessageRef>
        </bpmn:operation>
    </bpmn:interface>


    <!-- process definition -->
    <bpmn:process id="foobar" name="async_process">

        <bpmn:startEvent id="s" />
        
        <bpmn:sequenceFlow id="f1" name="s_2_r1" sourceRef="s" targetRef="r1" />

        <bpmn:receiveTask id="r1" name="r1" />
        
        <!-- start -->
        <bpmn:sequenceFlow id="f2" name="r1_2_t1" sourceRef="r1" targetRef="t1" />

        <bpmn:serviceTask id="st1" name="st1" implementation="Other" operationRef="o1"/>
        
        <bpmn:sequenceFlow id="f3" name="st1_2_r2" sourceRef="st1" targetRef="r2" />
        <!-- end -->
        
        <!-- 
        <bpmn:sequenceFlow id="fx" name="r1_2_r2" sourceRef="r1" targetRef="r2" />
        -->
        
        <bpmn:receiveTask id="r2" name="r2" />
        
        <bpmn:sequenceFlow id="f4" name="r2_2_e1" sourceRef="r2" targetRef="e1" />

        <bpmn:endEvent id="e1" name="e1" />            
    </bpmn:process>
</bpmn:definitions>


and this is the service I want to call:
package mocks;
 
public class Mock01 {
        
    public String call(String var){
        System.out.println(var);
        return "foo";
    }
 
}


If I comment out the lines between 'start' and 'end' in my process (and comment in the flow between r1 and r2) no NPE happens (of cource the test fails). But if I run the process as it is, I will get a npe. Can onyone give me a hint where the problem is?

Thanks in advance - Claus

--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/534977#534977]

Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20100331/a87e9d87/attachment.html 


More information about the jboss-user mailing list