<!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;">
    Work Item not persisted
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/swaminathan.bhaskar">Swaminathan Bhaskar</a> in <i>jBPM</i> - <a href="https://community.jboss.org/message/760675#760675">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hello all;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I am using JPA persistence with jBPM 5.3 with MySQL database. I created a new domain specific task and a corresponding work item handler and expect the work item to be persisted along with the session info as well as process instance info when I kill the process at the point shown in red below ... but do not see that happening. Any ideas or thoughts</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Here is the code for the work item handler</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">public class CustomWorkItemHandler implements WorkItemHandler {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; @Override</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; public void executeWorkItem(WorkItem item, WorkItemManager manager) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("\n-----&gt; Waiting in custom work item %s &lt;ID:%d&gt; for 60 secs\n", item.getName(), item.getId());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #ff0000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Expect an entry in the DB for this work item when I kill the process<br/></span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Artificial wait</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; try {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Thread.sleep(60000);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (Exception ex) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("\n-----&gt; Completing custom work item %s &lt;ID:%d&gt;\n", item.getName(), item.getId());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; manager.completeWorkItem(item.getId(), null);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;">&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; @Override</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; public void abortWorkItem(WorkItem item, WorkItemManager manager) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">}</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Here is the main process code:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">public class sample07 {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; public static final String BPMN_RESOURCE&#160; = "sample07.bpmn";</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; public static final String BPM_PROCESS&#160;&#160;&#160; = "sample07";</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; public static final String WORK_ITEM_NAME = "custom_work_item";</span></p><p style="padding-left: 30px;">&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; public static final void main(String[] args) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (args.length != 2) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("Usage: java %s &lt;session-id&gt; &lt;process-id&gt;\n", sample07.class.getName());</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.exit(1);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; try {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; int sessionId = Integer.parseInt(args[0]);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; long processId = Long.parseLong(args[1]);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Setup Datasource</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; PoolingDataSource mysqlDS = new PoolingDataSource();</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.setUniqueName("jdbc/MySQL-DS");</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.setClassName("com.mysql.jdbc.jdbc2.optional.MysqlXADataSource");</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.setMaxPoolSize(3);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.setAllowLocalTransactions(true);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.getDriverProperties().put("user", "mydbuser");</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.getDriverProperties().put("password", "mydbpass");</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.getDriverProperties().put("url", "jdbc:mysql://localhost:3306/mytestdb");</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mysqlDS.init();</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Setup JPA persistence</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Environment env = KnowledgeBaseFactory.newEnvironment();</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Load and setup the BPM process</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; kbuilder.add(ResourceFactory.newClassPathResource(BPMN_RESOURCE), ResourceType.BPMN2);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Do we have any errors ?</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (kbuilder.hasErrors()) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (kbuilder.getErrors().size() &gt; 0) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (KnowledgeBuilderError error : kbuilder.getErrors()) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("Error building KnowledgeBase: %s\n", error.getMessage());</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new RuntimeException("Error building KnowledgeBase");</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; KnowledgeBase kbase = kbuilder.newKnowledgeBase();</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; StatefulKnowledgeSession ksession = null;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (sessionId &gt; 0) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger(ksession);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Register the custom work item handler</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ksession.getWorkItemManager().registerWorkItemHandler(WORK_ITEM_NAME, new CustomWorkItemHandler());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ProcessInstance processInstance = ksession.getProcessInstance(processId);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Did the process instance complete successfully ?</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (processInstance.getState() == ProcessInstance.STATE_COMPLETED) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("\n-----&gt; Restarted business process [%s] successfully completed\n", processInstance.getProcessId());</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; logger.dispose();</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger(ksession);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Register the custom work item handler</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ksession.getWorkItemManager().registerWorkItemHandler(WORK_ITEM_NAME, new CustomWorkItemHandler());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("\n-----&gt; Session ID: %d\n", ksession.getId());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Create the process instance</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ProcessInstance processInstance = ksession.createProcessInstance(BPM_PROCESS, null);</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("\n-----&gt; Starting new Business process %s &lt;ID:%d&gt;\n", processInstance.getProcessId(), processInstance.getId());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Start the BPM process</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ksession.startProcessInstance(processInstance.getId());</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Did the process instance complete successfully ?</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (processInstance.getState() == ProcessInstance.STATE_COMPLETED) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.printf("\n-----&gt; Business process %s &lt;ID:%d&gt; successfully completed\n", processInstance.getProcessId(), processInstance.getId());</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; logger.dispose();</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (Exception ex) {</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ex.printStackTrace(System.err);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.exit(1);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.exit(0);</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">&#160;&#160;&#160; }</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #0000ff;">}</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>And here is the persistence.xml:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&lt;persistence version="1.0"</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xsi:schemaLocation="</span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a></span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" target="_blank">http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd</a></span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><span> </span></span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" target="_blank">http://java.sun.com/xml/ns/persistence/orm_1_0.xsd</a><span>"</span></span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:orm="</span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><span>"</span></span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:xsi="</span><a class="jive-link-external-small" href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a><span>"</span></span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns="</span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a><span>"&gt;</span></span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160; &lt;persistence-unit name="org.jbpm.persistence.jpa" transaction-type="JTA"&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;jta-data-source&gt;jdbc/MySQL-DS&lt;/jta-data-source&gt;</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mapping-file&gt;META-INF/JBPMorm.xml&lt;/mapping-file&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mapping-file&gt;META-INF/ProcessInstanceInfo.hbm.xml&lt;/mapping-file&gt;</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;!-- Process Related --&gt;</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;class&gt;org.drools.persistence.info.SessionInfo&lt;/class&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;class&gt;org.drools.persistence.info.WorkItemInfo&lt;/class&gt;</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;class&gt;org.jbpm.persistence.processinstance.ProcessInstanceInfo&lt;/class&gt;</span></p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;class&gt;org.jbpm.process.audit.ProcessInstanceLog&lt;/class&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;class&gt;org.jbpm.process.audit.NodeInstanceLog&lt;/class&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;class&gt;org.jbpm.process.audit.VariableInstanceLog&lt;/class&gt;</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;properties&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="hibernate.connection.autocommit" value="false" /&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="hibernate.max_fetch_depth" value="3"/&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="hibernate.hbm2ddl.auto" value="update" /&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="hibernate.show_sql" value="true" /&gt;&#160;&#160;&#160; </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" /&gt;</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/properties&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&#160;&#160;&#160;&#160;&#160; &lt;/persistence-unit&gt;</span></p><p style="padding-left: 30px;">&#160;&#160;&#160; </p><p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: 8pt; color: #008000;">&lt;/persistence&gt;</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Any help appreciated.</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/760675#760675">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>