<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
java.io.OptionalDataException when do ObjectInputStream.readObject()
</h3>
<span style="margin-bottom: 10px;">
created by <a href="https://community.jboss.org/people/devilkazuya99">TC ONG</a> in <i>jBPM</i> - <a href="https://community.jboss.org/message/807101#807101">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>I am using jBPM 5.4.0 final here.</p><p><a href="https://community.jboss.org/servlet/JiveServlet/showImage/2-807101-20589/Screen+Shot+2013-04-09+at+8.52.26+AM.png"><span> https://community.jboss.org/servlet/JiveServlet/downloadImage/2-807101-20589/272-239/Screen+Shot+2013-04-09+at+8.52.26+AM.png </span></a></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>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.</p><p class="p1"><span style="font-family: 'courier new', courier;"><span class="s1">    </span><span class="s2"><</span><span class="s3">userTask</span><span class="s1"> </span><span class="s4">id</span><span class="s1">=</span>"_5"<span class="s1"> </span><span class="s4">name</span><span class="s1">=</span>"User Task"<span class="s1"> </span><span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"><</span>extensionElements<span class="s2">></span></span></p><p class="p1"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span><span class="s3">tns:onEntry-script</span><span class="s1"> </span><span class="s4">scriptFormat</span><span class="s1">=</span><span>"</span><a class="jive-link-external-small" href="http://www.java.com/java" rel="nofollow" target="_blank">http://www.java.com/java</a><span>"</span><span class="s2">></span></span></p><p class="p3"><span style="font-family: 'courier new', courier;">          <span class="s2"><</span><span class="s3">script</span><span class="s2">></span></span></p><p class="p3"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;">          String s = "How do you do?";</strong></span></p><p class="p3"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;">          kcontext.setVariable("content", s);</strong></span></p><p class="p3"><span style="font-family: 'courier new', courier;">          <span class="s2"></</span><span class="s3">script</span><span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"></</span>tns:onEntry-script<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"></</span>extensionElements<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"><</span>ioSpecification<span class="s2">></span></span></p><p class="p1"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span><span class="s3">dataInput</span><span class="s1"> </span><span class="s4">id</span><span class="s1">=</span>"_5_ContentInput"<span class="s1"> </span><span class="s4">name</span><span class="s1">=</span>"Content"<span class="s1"> </span><span class="s2">/></span></strong></span></p><p class="p1"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span><span class="s3">dataOutput</span><span class="s1"> </span><span class="s4">id</span><span class="s1">=</span>"_5_answerOutput"<span class="s1"> </span><span class="s4">name</span><span class="s1">=</span>"answer"<span class="s1"> </span><span class="s2">/></span></strong></span></p><p class="p3"><span style="font-family: 'courier new', courier;">        <span class="s2"><</span><span class="s3">inputSet</span><span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">          </span><span class="s2"><</span>dataInputRefs<span class="s2">></span><span class="s1">_5_ContentInput</span><span class="s2"></</span>dataInputRefs<span class="s2">></span></span></p><p class="p3"><span style="font-family: 'courier new', courier;">        <span class="s2"></</span><span class="s3">inputSet</span><span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span>outputSet<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">          </span><span class="s2"><</span>dataOutputRefs<span class="s2">></span><span class="s1">_5_answerOutput</span><span class="s2"></</span>dataOutputRefs<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"></</span>outputSet<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"></</span>ioSpecification<span class="s2">></span></span></p><p class="p2"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"><</span>dataInputAssociation<span class="s2">></span></strong></span></p><p class="p2"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span>sourceRef<span class="s2">></span><span class="s1">content</span><span class="s2"></</span>sourceRef<span class="s2">></span></strong></span></p><p class="p3"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;">        <span class="s2"><</span><span class="s3">targetRef</span><span class="s2">></span>_5_ContentInput<span class="s2"></</span><span class="s3">targetRef</span><span class="s2">></span></strong></span></p><p class="p2"><span style="color: #008000;"><strong style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"></</span>dataInputAssociation<span class="s2">></span></strong></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"><</span>dataInputAssociation<span class="s2">></span></span></p><p class="p3"><span style="font-family: 'courier new', courier;">        <span class="s2"><</span><span class="s3">targetRef</span><span class="s2">></span>_5_ContentInput<span class="s2"></</span><span class="s3">targetRef</span><span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span>assignment<span class="s2">></span></span></p><p class="p1"><span style="font-family: 'courier new', courier;"><span class="s1">          </span><span class="s2"><</span><span class="s3">from</span><span class="s1"> </span><span class="s4">xsi:type</span><span class="s1">=</span>"tFormalExpression"<span class="s2">></</span><span class="s3">from</span><span class="s2">></span></span></p><p class="p3"><span style="font-family: 'courier new', courier;">          <span class="s2"><</span><span class="s3">to</span> <span class="s4">xsi:type</span>=<span class="s5">"tFormalExpression"</span><span class="s2">></span>_5_ContentInput<span class="s2"></</span><span class="s3">to</span><span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"></</span>assignment<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"></</span>dataInputAssociation<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"><</span>dataOutputAssociation<span class="s2">></span></span></p><p class="p3"><span style="font-family: 'courier new', courier;">        <span class="s2"><</span><span class="s3">sourceRef</span><span class="s2">></span>_5_answerOutput<span class="s2"></</span><span class="s3">sourceRef</span><span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span>targetRef<span class="s2">></span><span class="s1">answer</span><span class="s2"></</span>targetRef<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"></</span>dataOutputAssociation<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"><</span>potentialOwner<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"><</span>resourceAssignmentExpression<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">          </span><span class="s2"><</span>formalExpression<span class="s2">></span><span class="s1">nemo</span><span class="s2"></</span>formalExpression<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">        </span><span class="s2"></</span>resourceAssignmentExpression<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">      </span><span class="s2"></</span>potentialOwner<span class="s2">></span></span></p><p class="p2"><span style="font-family: 'courier new', courier;"><span class="s1">    </span><span class="s2"></</span>userTask<span class="s2">></span></span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I hope to get the "Content" at the programming side. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p class="p1"><span style="font-family: 'courier new', courier;">List<TaskSummary> taskSummaryList = localTaskService.getTasksAssignedAsPotentialOwner(<span class="s1">"nemo"</span>, <span class="s1">"en-UK"</span>);</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                              <span class="s2">for</span> (TaskSummary taskSummary : taskSummaryList) {</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        System.<span class="s3">out</span>.println(taskSummary.getId() + <span class="s1">"\t"</span> + taskSummary.getName() + <span class="s1">"\t"</span> + taskSummary.getStatus());</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        Task task = localTaskService.getTask(taskSummary.getId());</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        <span class="s2">long</span> documentContentId = task.getTaskData().getDocumentContentId();</span></p><p class="p1"><strong style="font-family: 'courier new', courier;">                                        Content content = localTaskService.getContent(documentContentId);</strong></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        System.<span class="s3">out</span>.println(content.getId() + <span class="s1">" => "</span> + content.toString());</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        <span class="s2">if</span> (content != <span class="s2">null</span>){</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                ByteArrayInputStream bais = <span class="s2">new</span> ByteArrayInputStream(content.getContent());</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                ObjectInputStream ois;</span></p><p class="p2" style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p class="p1"><span style="font-family: 'courier new', courier;">                                <span class="s2">try</span> {</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                    ois = <span class="s2">new</span> ObjectInputStream(bais);</span></p><p class="p1"><span style="color: #ff0000; font-family: 'courier new', courier;">                                    <strong>Object obj = ois.readObject();</strong></span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                    <span class="s3">logger</span>.debug(<span class="s1">"Object = "</span> + obj.getClass());</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                } <span class="s2">catch</span> (IOException e) {</span></p><p class="p1"><span style="color: #ff0000; font-family: 'courier new', courier;">                                    <strong>e.printStackTrace();</strong></span></p><p class="p1"><span style="font-family: 'courier new', courier;">                               } <span class="s2">catch</span> (ClassNotFoundException e) {</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                    e.printStackTrace();</span></p><p class="p2" style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p class="p1"><span style="font-family: 'courier new', courier;">                                }</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                            }</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        localTaskService.start(taskSummary.getId(), <span class="s1">"nemo"</span>);</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        Map<String, Object> results = <span class="s2">new</span> HashMap<String, Object>();</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        results.put(<span class="s1">"answer"</span>, <span class="s1">"GOOD"</span>);</span></p><p class="p1"><span style="font-family: 'courier new', courier;">                                        localTaskService.completeWithResults(taskSummary.getId(), <span class="s1">"nemo"</span>, results); </span></p><p class="p1"><span style="font-family: 'courier new', courier;">                              }</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The result on the console is:</p><p class="p1">1 => org.jbpm.task.Content@74baaca4</p><p class="p2"><span class="s1">java.io.OptionalDataException</span></p><p class="p3">          at java.io.ObjectInputStream.readObject0(<span class="s2">ObjectInputStream.java:1358</span>)</p><p class="p3">          at java.io.ObjectInputStream.readObject(<span class="s2">ObjectInputStream.java:369</span>)</p><p class="p3">          at HelloJBPM5.main(<span class="s2">HelloJBPM5.java:73</span>)</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/807101#807101">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>