Please find following code <?xml version="1.0" encoding="UTF-8"?> | | <process-definition | xmlns="http://jbpm.org/3/jpdl" | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | xsi:schemaLocation="http://jbpm.org/3/jpdl http://jbpm.org/xsd/jpdl-3.0.xsd " | name="simple"> | <start-state name="start"> | <transition name="toCheckDSCR" to="Check DSCR"> | <action name="Read DSC Ratio" class="com.sample.action.FirstActionHandler"></action> | </transition> | </start-state> | <end-state name="end"> | </end-state> | <decision name="Check DSCR"> | <transition name="toReadLoansData" to="Read Loans Data"> | <condition> | executionContext.getVariable("DSCRatio").intValue() > 0 | </condition> | </transition> | <transition name="toRejectLoan" to="Reject Loan"> | <condition> | executionContext.getVariable("DSCRatio").intValue() == 0 | </condition> | </transition> | </decision> | <task-node name="Reject Loan"> | <transition name="toEndFromRejectLoan" to="end"> | <action name="action1" class="com.sample.action.LoanRejectHandler"></action> | </transition> | </task-node> | <state name="Read Loans Data"> | | <transition name="toProcessLoanDecision" to="Process Loan Decision"> | <action name="action1" class="com.sample.action.DatabaseActionHandler"></action> | </transition> | </state> | <decision name="Process Loan Decision"> | <transition name="toProcessLoan" to="Process Loan"> | <condition> | executionContext.getVariable("LoanProcessingDecision").toString().equals("Yes") | </condition> | </transition> | <transition name="toEndFromProcessLoanDecision" to="end"> | <condition> | executionContext.getVariable("LoanProcessingDecision").toString().equals("No") | </condition> | </transition> | </decision> | <task-node name="Process Loan"> | <transition name="toEndFromProcessLoan" to="end"> | <action name="action1" class="com.sample.action.ProcessLoanHandler"></action> | </transition> | </task-node> | | </process-definition>
Code for Test class | package com.sample; | | import java.io.FileReader; | import java.util.ArrayList; | | | | import junit.framework.TestCase; | | import org.jbpm.db.JbpmSession; | import org.jbpm.db.JbpmSessionFactory; | import org.jbpm.graph.def.ProcessDefinition; | import org.jbpm.graph.exe.ProcessInstance; | import org.jbpm.graph.exe.Token; | import org.jbpm.jpdl.xml.JpdlXmlReader; | | public class SimpleProcessTest extends TestCase { | | static JbpmSessionFactory jbpmSessionFactory = JbpmSessionFactory.buildJbpmSessionFactory(); | | public void testSimpleProcess() throws Exception { | | //saveProcessDefinition(); | //saveProcessInstance(); | readProcessInstance(); | | } | | public void saveProcessInstance() { | | // obtain a session | JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession(); | try { | ProcessDefinition loanProcess = jbpmSession.getGraphSession().findLatestProcessDefinition("simple"); | // start a user managed transaction | jbpmSession.beginTransaction(); | | ProcessInstance loanInstance = new ProcessInstance(loanProcess); | loanInstance.signal(); | | // store the result in the database | jbpmSession.getGraphSession().saveProcessInstance(loanInstance); | | // commit the user transaction | jbpmSession.getConnection().commit(); | | } | catch(Exception e) | { | e.printStackTrace(); | } | finally { | // close the session. | jbpmSession.close(); | } | } | | public void readProcessInstance() | { | JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession(); | ProcessDefinition procDef = jbpmSession.getGraphSession().findLatestProcessDefinition("simple"); | | ArrayList arlProcInsts = (ArrayList) jbpmSession.getGraphSession().findProcessInstances(procDef.getId()); | | | int count = arlProcInsts.size(); | ProcessInstance procInst = null; | System.out.println(">>>>>> "+count + " >>>>>>> " + procDef); | for (int i = 0; i < count; i++) | { | procInst = (ProcessInstance) arlProcInsts.get(i); | System.out.println("Process Instance ID = " + procInst.getId()); | System.out.println("Has Ended Value = " + procInst.hasEnded()); | } | | Token rootToken = procInst.getRootToken(); | | Token token = rootToken.findToken("Check DSCR/Read Loans Data"); | System.out.println("token = " + token); | | rootToken.signal("toReadLoansData"); | procInst.signal(); | | jbpmSession.close(); | } | | public void saveProcessDefinition(){ | | | JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession(); | try{ | ProcessDefinition definition = new JpdlXmlReader(new FileReader("D:/TestProcess/src/process/simple.par/processdefinition.xml")).readProcessDefinition(); | | /* assertNotNull("Definition should not be null", definition); | | // Create an instance of the process definition.*/ | //ProcessInstance instance = new ProcessInstance(definition); | //********************************************************************* | //instance.signal(); | | jbpmSession.getGraphSession().saveProcessDefinition(definition); | jbpmSession.getConnection().commit(); | | } | catch(Exception e) | { | e.printStackTrace(); | } | finally { | // close the session. | jbpmSession.close(); | } | | } | | } | | 1. In 'saveProcessDefinition' method, I am reading the process definition XML from file system and store it to jBPM database. 2. In 'saveProcessInstance' method, the process definition is read from the database and instance is created. This instance is saved to database. 3. In 'readProcessInstance' the instance is read from database and executed further. I am getting the error in step 3. But not sure that steps 1 and 2 above are correct and are not the root cause of error in step 3. Please confirm that the code is correct. Saving the process definition in database must be the common task, are there any best practices defined to do such common tasks. Thanks and Regards, Nilesh View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3912011#3912011 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3912011 ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user