2 Replies Latest reply on Apr 10, 2013 4:36 AM by devilkazuya99

    java.io.OptionalDataException when do ObjectInputStream.readObject()

    devilkazuya99

      I am using jBPM 5.4.0 final here.

      Screen Shot 2013-04-09 at 8.52.26 AM.png

       

      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)