<!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="http://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;">
Propagation of ABORT state in Sub process to parent.
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/jschim">Joao Schim</a> in <i>jBPM</i> - <a href="http://community.jboss.org/message/634591#634591">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>Hi all,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>We are using drools/jBPM5 as part of our long term preservation experiment (here at the dutch national library) which purpose is to analyse and reject or store digital publications. The problem that we are facing currently is that the whole process is getting quite enormous and we 've decided to split it up into various subprocesses. We now have about 16 subprocesses / .rf files. The thing is that when we detect a deficiency in the publication and/or the metadata we 'reject' the publication and abort the process. Inside a subprocess the abort however is never propagated to the parent process and the latter will continue the process even while the abort was raised in the childprocess, causing all kinds of unexpected behaviour.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>To cope with this we've created a custom extension on the SubProcessNodeInstance and registered this with the NodeInstanceFactoryRegistry.</p><p>The difference with the original instance is that when the child process gets in an ABORTED state this state is propagated to the parent process instance.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>in code:</p><p>            } else if (processInstance.getState() == ProcessInstance.STATE_COMPLETED) {</p><p>                handleOutMappings(processInstance);</p><p>                triggerCompleted();</p><p>            } else if (processInstance.getState() == ProcessInstance.STATE_ABORTED) {</p><p>                handleOutMappings(processInstance);</p><p>                getProcessInstance().setState(ProcessInstance.STATE_ABORTED);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Another solution would be to use the output mapping of the subprocess node and use a variable for this. but injecting split joins attached to end node's on every subprocess node would be very cumbersome for our situation, not making the process definition more readable.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I would like to hear whether the approach we've taken is sensible. does it align with the underlying fundamentals of BPMN ? would a JIRA issue to implement such a change make sene ?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Please share your opinion on this approach. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Thanks in advance..  </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Joao</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/634591#634591">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="http://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>