<!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;">
    Re: JBPM 4.4 - exception recovery
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/yfuksenk">Yuriy Fuksenko</a> in <i>jBPM</i> - <a href="http://community.jboss.org/message/584764#584764">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Just updating with what I am doing about this.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Looking into the problem, there are really 2 problems I am trying to resolve: </p><p>1. Creating new transaction on activities</p><p>2. Customize exception handling</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Creating new transaction per activity achieved by setting continue="async" on the activity. The only problem with it is if you have a fork, and than activities within the fork has continue="async", sometimes execution will get stuck at join. There is obviously some sort of race condition there, and, when this happens, in the database I can see both lines of executions after fork being stuck with "inactive-join" state.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Customizing exception handling. Two choices here, one being JBPM native - setting parameters for retry interceptor tag. Unfortunately it does not work for me for the following requirements:</p><p>1. Schedule of retries for me is different from formula JBPM provides</p><p>2. I should be able to manually retry failed activity per user request</p><p>3. I should be able to ignore failed activity (let execution to proceed) per user request</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So, I made my activities implement ExternalActivityBehaviour. In the case of exception it does not propagate exception to JBPM, but calls "waitForSignal", than creates persisted Quartz trigger to send "retry" signal to itself in calculated interval. In "signal" method if signal is "retry" it will redo the activity, if signal is "ignore" it takes default transition. I can probably make it more generic by actually providing the name of transition to take, but I don't have any use for it now.</p><p>I still need to add some synchronization magic between executing failed activities by trigger and by user request.</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/584764#584764">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>