<!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;">
Persist Entity from within ScriptTask - best practice?
</h3>
<span style="margin-bottom: 10px;">
created by <a href="https://community.jboss.org/people/wtimpany">William Timpany</a> in <i>jBPM</i> - <a href="https://community.jboss.org/message/647820#647820">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>My question: Is what I am doing sensible/recommended, as I have just started using JBPM.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="padding-left: 30px;">I have a few Entities stored in my Oracle Database that I want to insert/update/delete as part of my workflow processing.    All the changes need to be processed in the same transaction as the rest of the workflow persistance to ensure the integrity of the flow/data.   I want to keep it all the code as simple as possible.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="padding-left: 30px;">I am able to do this by using Java within the standard ScriptTask, using the EntityManager extracted from within the kcontext.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="padding-left: 30px;">The Enities to be updated have been added to the "org.jbpm.persistence.jpa" persistance unit.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="padding-left: 30px;">Here is the code from within the ScriptTask.   This all works and a new "ScriptActionTriggerBean" is created and persisted to the Oracle DB every time the ScriptTask is called.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: courier new,courier; font-size: 8pt;">-- WorkFlow Code Snipit --</span></p><p><span style="font-family: courier new,courier; font-size: 8pt;"><extensionElements></span><br/><span style="font-family: courier new,courier; font-size: 8pt;"> <tns:import name="com.db.gto.tms.agr.bean.model.workflow.ScriptActionTriggerBean" /></span><br/><span style="font-family: courier new,courier; font-size: 8pt;"> <tns:import name="javax.persistence.EntityManager" /></span><br/><span style="font-family: courier new,courier; font-size: 8pt;"> <tns:import name="org.drools.runtime.Environment" /></span><br/><span style="font-family: courier new,courier; font-size: 8pt;"> <tns:import name="org.drools.runtime.EnvironmentName" /></span><br/><span style="font-family: courier new,courier; font-size: 8pt;"></extensionElements></span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: courier new,courier; font-size: 8pt;"><scriptTask id="_6" name="PreProcess" scriptFormat="<a class="jive-link-external-small" href="http://www.java.com/java">http://www.java.com/java</a>" ></span><br/><span style="font-family: courier new,courier; font-size: 8pt;"> <script></span><br/><span style="font-family: courier new,courier; font-size: 8pt;">  ScriptActionTriggerBean satb = new ScriptActionTriggerBean();</span><br/><span style="font-family: courier new,courier; font-size: 8pt;">  satb.setComments("Starting: Script Pre-Processing");</span></p><p><span style="font-family: courier new,courier; font-size: 8pt;">  Environment   env = kcontext.getKnowledgeRuntime().getEnvironment();</span><br/><span style="font-family: courier new,courier; font-size: 8pt;">  EntityManager em = (EntityManager) env.get(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER);</span></p><p><span style="font-family: courier new,courier; font-size: 8pt;">  em.persist(satb);</span><br/><span style="font-family: courier new,courier; font-size: 8pt;"> </script></span><br/><span style="font-family: courier new,courier; font-size: 8pt;"></scriptTask></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/647820#647820">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>