<!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: A question on the external event using event Correlation
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/byungwoojun">byungwoojun</a> in <i>jBPM</i> - <a href="http://community.jboss.org/message/593362#593362">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Thanks, Mauricio and Jim! After receiving replies from both of you, I did give some thoughts on this, and read some of blogs that Kris V. was involved. Here is my plan:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>In my business layer, when a JMS message arrives (it can be Web service, EJB, POJO, etc. - does not matter), it parses the message/object for a unique correlation id (the correlation id can consist of many field values to make it unique if necessary) and other key fields. It uses the emf to persist (cache) the knowledge session, and saves the knowledge session id and process instance id (after startprocess) along with the correlation id into a mapping database table. So, in the mapping table has the correlation id - session id - process instance id and other key fields per table row. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Later, an external client (partner) sends a JMS message that has the correlation id that matches the above correlation id. Using the correlation id from the message, it will retrieve the session id and process instance id from the mapping table. Then, using the JPAKnowledgeService.loadStatefulKnowledgeSession (session_id, kbase, null, env), it will restore the session. Since the session can have multiple process instances, it will locate the right process instance from the session using the ksession.getProcessInstance (process id).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Once it gets the process instance, using the event type (the event type can also come from the external message, or some other mapping is possible), it can inject the intermedidate message event to the right place, using the signal event, e.g., processInstance.signalEvent("event Type", data); Once the process is complete, we can purge the corresponding data from the mapping table. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>If I don't use the emf, I think I can use the kbase.getStatefulKnowledgeSessions() to get a collection of sessions - there is an assumption that the kbase is static. Then, in a loop, I can find the right session by comparing the session.getId() with the session id from the mapping table. Since the kbase is static which is per JVM, it may cause some issues to run the jBPM 5 in a clustered environment. So, I prefer to restore the session from the database (persistence).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>That's the basic idea. Any comments will be appreciated. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I used to use that BPEL, the correlation support is part of the process configuration (usign some BPEL IDE), not part of business layer. In jBPM 5, it seems to me that I need to handle the correlation support as above.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Thanks,</p><p>bwj</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/593362#593362">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>