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&...]