java.io.OptionalDataException when do ObjectInputStream.readObject()
devilkazuya99 Apr 8, 2013 9:29 PMI am using jBPM 5.4.0 final here.
In me bpmn file I have a String variable in my process. I set it in "onEntry" scritp of my Human Task. Then map it to "Content" in data input association.
<userTask id="_5" name="User Task" >
<extensionElements>
<tns:onEntry-script scriptFormat="http://www.java.com/java">
<script>
String s = "How do you do?";
kcontext.setVariable("content", s);
</script>
</tns:onEntry-script>
</extensionElements>
<ioSpecification>
<dataInput id="_5_ContentInput" name="Content" />
<dataOutput id="_5_answerOutput" name="answer" />
<inputSet>
<dataInputRefs>_5_ContentInput</dataInputRefs>
</inputSet>
<outputSet>
<dataOutputRefs>_5_answerOutput</dataOutputRefs>
</outputSet>
</ioSpecification>
<dataInputAssociation>
<sourceRef>content</sourceRef>
<targetRef>_5_ContentInput</targetRef>
</dataInputAssociation>
<dataInputAssociation>
<targetRef>_5_ContentInput</targetRef>
<assignment>
<from xsi:type="tFormalExpression"></from>
<to xsi:type="tFormalExpression">_5_ContentInput</to>
</assignment>
</dataInputAssociation>
<dataOutputAssociation>
<sourceRef>_5_answerOutput</sourceRef>
<targetRef>answer</targetRef>
</dataOutputAssociation>
<potentialOwner>
<resourceAssignmentExpression>
<formalExpression>nemo</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
</userTask>
I hope to get the "Content" at the programming side.
List<TaskSummary> taskSummaryList = localTaskService.getTasksAssignedAsPotentialOwner("nemo", "en-UK");
for (TaskSummary taskSummary : taskSummaryList) {
System.out.println(taskSummary.getId() + "\t" + taskSummary.getName() + "\t" + taskSummary.getStatus());
Task task = localTaskService.getTask(taskSummary.getId());
long documentContentId = task.getTaskData().getDocumentContentId();
Content content = localTaskService.getContent(documentContentId);
System.out.println(content.getId() + " => " + content.toString());
if (content != null){
ByteArrayInputStream bais = new ByteArrayInputStream(content.getContent());
ObjectInputStream ois;
try {
ois = new ObjectInputStream(bais);
Object obj = ois.readObject();
logger.debug("Object = " + obj.getClass());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
localTaskService.start(taskSummary.getId(), "nemo");
Map<String, Object> results = new HashMap<String, Object>();
results.put("answer", "GOOD");
localTaskService.completeWithResults(taskSummary.getId(), "nemo", results);
}
The result on the console is:
1 => org.jbpm.task.Content@74baaca4
java.io.OptionalDataException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1358)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at HelloJBPM5.main(HelloJBPM5.java:73)
-
HelloWorldFlow.bpmn.zip 1.4 KB
-
persistence.xml 2.5 KB
-
HelloJBPM5.java.zip 1.4 KB