[jbpm-commits] JBoss JBPM SVN: r5599 - in projects/demos/trainticket-demo/jbpm-on-rails/trunk: ejb/src/main/java/org/jbpm/trainticketdemo/bi/esper and 18 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Aug 31 06:41:43 EDT 2009


Author: jbarrez
Date: 2009-08-31 06:41:42 -0400 (Mon, 31 Aug 2009)
New Revision: 5599

Added:
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/DeployProcess.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendSmsAction.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/accept_quote.ftl
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.cfg.xml
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.hibernate.cfg.xml
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/org/
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/org/jbpm/
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/org/jbpm/trainticketdemo/
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/org/jbpm/trainticketdemo/TrainTicketProcessUnitTestDemo.java
Modified:
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/domain/src/main/java/org/jbpm/trainticketdemo/domain/Quote.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/bi/esper/EventQueueProcessor.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/TicketServiceImpl.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteServiceImpl.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/helper/ProcessEngineManagerImpl.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/resources/jbpm.hsqldb.create.sql
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/jboss-integration/src/main/java/org/jbpm/trainticketdemo/integration/ProcessEngineFactory.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/CalculateQuoteAction.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/ChargeCustomerAction.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendQuoteToCustomerAction.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteService.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/decision/CheckCustomerDecision.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/util/SmsUtil.java
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.cfg.xml
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.hibernate.cfg.xml
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/log4j.properties
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/logging.properties
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/process.jpdl.xml
   projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/process.png
Log:
* Added unit test for process
* Simplified domain model

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/domain/src/main/java/org/jbpm/trainticketdemo/domain/Quote.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/domain/src/main/java/org/jbpm/trainticketdemo/domain/Quote.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/domain/src/main/java/org/jbpm/trainticketdemo/domain/Quote.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -33,27 +33,25 @@
 	
 	private static final long serialVersionUID = 1L;
 
-	private TicketRequest ticketRequest;
+	private String from;
 	
+	private String to;
+	
+	private String cellPhoneNr;
+	
 	private Double price;
 	
 	public Quote() {
 		
 	}
-
 	
-	public Quote(TicketRequest ticketRequest) {
-		this.ticketRequest = ticketRequest;
+	public Quote(String from, String to, String cellphoneNr) {
+		this.from = from;
+		this.to = to;
+		this.cellPhoneNr = cellphoneNr;
 	}
 
-	public TicketRequest getTicketRequest() {
-		return ticketRequest;
-	}
 
-	public void setTicketRequest(TicketRequest ticketRequest) {
-		this.ticketRequest = ticketRequest;
-	}
-
 	public Double getPrice() {
 		return price;
 	}
@@ -62,4 +60,28 @@
 		this.price = price;
 	}
 
+	public String getFrom() {
+		return from;
+	}
+
+	public void setFrom(String from) {
+		this.from = from;
+	}
+
+	public String getTo() {
+		return to;
+	}
+
+	public void setTo(String to) {
+		this.to = to;
+	}
+
+	public String getCellPhoneNr() {
+		return cellPhoneNr;
+	}
+
+	public void setCellPhoneNr(String cellPhoneNr) {
+		this.cellPhoneNr = cellPhoneNr;
+	}
+
 }

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/bi/esper/EventQueueProcessor.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/bi/esper/EventQueueProcessor.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/bi/esper/EventQueueProcessor.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -43,6 +43,7 @@
 	        
 	        	ObjectMessage objMsg = (ObjectMessage) message;
 	        	Object obj = objMsg.getObject();
+	        	LOGGER.info("Received event of type " + obj.getClass().getName());
 	        	epsProvider.getEPRuntime().sendEvent(obj);
 	        	
 	        }

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/TicketServiceImpl.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/TicketServiceImpl.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/TicketServiceImpl.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -68,7 +68,9 @@
 		}
 
 		Map<String, Object> variables = new HashMap<String, Object>();
-		variables.put(ProcessVariable.TICKET_REQUEST, ticketRequest);
+		variables.put(ProcessVariable.FROM, ticketRequest.getFrom());
+		variables.put(ProcessVariable.TO, ticketRequest.getTo());
+		variables.put(ProcessVariable.CELLPHONE_NUMBER, ticketRequest.getCellPhoneNr());
 		ProcessInstance processInstance = executionService.startProcessInstanceByKey(TICKET_PROCESS, variables);
 		
 		if (LOG.isInfoEnabled()) {

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteServiceImpl.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteServiceImpl.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteServiceImpl.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -29,7 +29,6 @@
 import javax.ejb.Stateless;
 
 import org.jbpm.trainticketdemo.domain.Quote;
-import org.jbpm.trainticketdemo.domain.TicketRequest;
 
 /**
  * @author Joram Barrez
@@ -39,12 +38,14 @@
 @Stateless
 public class QuoteServiceImpl implements QuoteService {
 	
+	private static final long serialVersionUID = 1L;
+	
 	private Random random = new Random();
 	
 	private DecimalFormat df = new DecimalFormat("#.##");
 	
-	public Quote calculateQuote(TicketRequest ticketRequest) {
-		Quote quote = new Quote(ticketRequest);
+	public Quote calculateQuote(String from, String to, String cellphoneNr) {
+		Quote quote = new Quote(from, to, cellphoneNr);
 		quote.setPrice(new Double(df.format(random.nextInt(20) + random.nextDouble())));
 		return quote;
 	}

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/helper/ProcessEngineManagerImpl.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/helper/ProcessEngineManagerImpl.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/java/org/jbpm/trainticketdemo/helper/ProcessEngineManagerImpl.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -75,6 +75,7 @@
 		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/process.jpdl.xml");
 		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/process.png");
 		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/trainticket_startform.ftl");
+		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/accept_quote.ftl");
 		deployment.setName("Ticket train DEMO deployment");
 		deployment.deploy();
 		LOG.info("Deployed process: trainTicket");		

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/resources/jbpm.hsqldb.create.sql
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/resources/jbpm.hsqldb.create.sql	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/ejb/src/main/resources/jbpm.hsqldb.create.sql	2009-08-31 10:41:42 UTC (rev 5599)
@@ -468,7 +468,7 @@
 INSERT INTO JBPM4_ID_USER VALUES (2,0,'mike','password','Mike',NULL,'mike at jbpm.org');
 INSERT INTO JBPM4_ID_USER VALUES (3,0,'peter','password','Peter',NULL,'peter at jbpm.org');
 INSERT INTO JBPM4_ID_USER VALUES (4,0,'mary','password','Mary',NULL,'mary at jbpm.org');
-INSERT INTO JBPM4_ID_USER VALUES (5,0,'joram','password','Joram',NULL,'jbarrez at redhat.com');
+INSERT INTO JBPM4_ID_USER VALUES (5,0,'123456789','password','Joram',NULL,'jbarrez at redhat.com');
 
 INSERT INTO JBPM4_ID_MEMBERSHIP VALUES (1,0,1,2,NULL);
 INSERT INTO JBPM4_ID_MEMBERSHIP VALUES (2,0,2,1,NULL);
@@ -493,7 +493,9 @@
     );
     
 INSERT INTO USERS(NAME,CELL_PHONE, PASSWORD, CREDIT) VALUES('jBPMPhone', 'EMULATOR-http://localhost:4321/cellphone_sms_listener', 'test', 100.0);
+INSERT INTO USERS(NAME,CELL_PHONE, PASSWORD, CREDIT) VALUES('demoPhoneNr', '123456789', 'test', 100.0);
 
+
 create table TICKET_RESPONSE_TIMINGS (
  	ID bigint generated by default as identity (start with 1),
  	PROC_INST_ID varchar(255),

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/jboss-integration/src/main/java/org/jbpm/trainticketdemo/integration/ProcessEngineFactory.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/jboss-integration/src/main/java/org/jbpm/trainticketdemo/integration/ProcessEngineFactory.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/jboss-integration/src/main/java/org/jbpm/trainticketdemo/integration/ProcessEngineFactory.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -39,7 +39,8 @@
 			synchronized (ProcessEngineFactory.class) {
 				if (processEngine == null) {
 					LOG.info("No cached ProcessEngine found, retrieving ProcessEngine");
-					processEngine = new Configuration().buildProcessEngine();
+					//processEngine = new Configuration().buildProcessEngine();
+					processEngine = new Configuration().setResource("production.jbpm.cfg.xml").buildProcessEngine();
 				}
 			}
 		} else {

Added: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/DeployProcess.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/DeployProcess.java	                        (rev 0)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/DeployProcess.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.trainticketdemo;
+
+import org.jbpm.api.Configuration;
+import org.jbpm.api.NewDeployment;
+
+/**
+ * @author Joram Barrez
+ */
+public class DeployProcess {
+	
+	public static void main(String[] args) {
+		NewDeployment deployment = new Configuration().buildProcessEngine().getRepositoryService().createDeployment();
+		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/process.jpdl.xml");
+		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/process.png");
+		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/trainticket_startform.ftl");
+		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/accept_quote.ftl");
+		deployment.setName("Ticket train DEMO deployment");
+		deployment.deploy();
+		System.out.println("DONE!");
+	}
+
+}

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/CalculateQuoteAction.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/CalculateQuoteAction.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/CalculateQuoteAction.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -21,13 +21,10 @@
  */
 package org.jbpm.trainticketdemo.action;
 
-import java.util.Date;
-
 import org.jbpm.api.activity.ActivityBehaviour;
 import org.jbpm.api.activity.ActivityExecution;
 import org.jbpm.trainticketdemo.business.external.QuoteService;
 import org.jbpm.trainticketdemo.domain.Quote;
-import org.jbpm.trainticketdemo.domain.TicketRequest;
 import org.jbpm.trainticketdemo.util.EjbUtil;
 import org.jbpm.trainticketdemo.variable.ProcessVariable;
 
@@ -41,35 +38,18 @@
 	private QuoteService quoteService;
 	
 	public CalculateQuoteAction() {
-		this.quoteService = EjbUtil.getQuoteServiceLocal();
+		this.quoteService = EjbUtil.getQuoteService();
 	}
 
 	public void execute(ActivityExecution activityExecution) throws Exception {
-		TicketRequest ticketRequest = getTicketRequest(activityExecution);
-		Quote quote = quoteService.calculateQuote(ticketRequest);
+		
+		String from = (String) activityExecution.getVariable(ProcessVariable.FROM);
+		String to = (String) activityExecution.getVariable(ProcessVariable.TO);
+		String cellphoneNr = (String) activityExecution.getVariable(ProcessVariable.CELLPHONE_NUMBER);
+		
+		Quote quote = quoteService.calculateQuote(from, to, cellphoneNr);
+		
 		activityExecution.setVariable(ProcessVariable.QUOTE, quote);
 	}
-	
-	/**
-	 * When using the jBPM console, there is currently now way to set a Java
-	 * object as a process variable. This methods checks if there is a
-	 * {@link TicketRequest} stored as process variable, if so it returns this
-	 * object. If not, a new {@link TicketRequest} is created from the console
-	 * task form input and stored as a process variable.
-	 */
-	private TicketRequest getTicketRequest(ActivityExecution execution) {
-		TicketRequest ticketRequest = (TicketRequest) execution.getVariable(ProcessVariable.TICKET_REQUEST);
-	
-		if (ticketRequest == null) {
-			ticketRequest = new TicketRequest();
-			ticketRequest.setFrom((String) execution.getVariable(ProcessVariable.FROM)); 
-			ticketRequest.setTo((String) execution.getVariable(ProcessVariable.TO));
-			ticketRequest.setCellPhoneNr((String) execution.getVariable(ProcessVariable.CELLPHONE_NUMBER));
-			ticketRequest.setDate(new Date());
-			execution.setVariable(ProcessVariable.TICKET_REQUEST, ticketRequest);
-		}
-		
-		return ticketRequest;
-	}
 
 }

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/ChargeCustomerAction.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/ChargeCustomerAction.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/ChargeCustomerAction.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -60,7 +60,7 @@
 		Session session = env.get(Session.class);
 		
 		Criteria criteria = session.createCriteria(User.class);
-		criteria.add(Restrictions.eq("cellphoneNr", quote.getTicketRequest().getCellPhoneNr()));
+		criteria.add(Restrictions.eq("cellphoneNr", quote.getCellPhoneNr()));
 		return (User) criteria.uniqueResult();
 	}
 	

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendQuoteToCustomerAction.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendQuoteToCustomerAction.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendQuoteToCustomerAction.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -41,8 +41,8 @@
 		
 		// Send the sms
 		SmsUtil.sendSms(quote, 
-				"Ticket from " + quote.getTicketRequest().getFrom() 
-				+ " - " + quote.getTicketRequest().getTo() + " "
+				"Ticket from " + quote.getFrom() 
+				+ " - " + quote.getTo() + " "
 				+ "price is " + quote.getPrice() + " euro. "
 				+ "To accept reply with 'ACCEPT " + realId +"'. "
 				+ "Regards, jBPM-on-Rails.");

Added: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendSmsAction.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendSmsAction.java	                        (rev 0)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/action/SendSmsAction.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.trainticketdemo.action;
+
+import org.jbpm.api.activity.ActivityBehaviour;
+import org.jbpm.api.activity.ActivityExecution;
+import org.jbpm.trainticketdemo.util.SmsUtil;
+
+/**
+ * Only to be used in the 'agile' movie !
+ * 
+ * @author Joram Barrez
+ */
+public class SendSmsAction implements ActivityBehaviour {
+	
+	private static final long serialVersionUID = 1L;
+
+	private String message;
+	
+	private String cellPhoneNr;
+	
+	public void execute(ActivityExecution execution) throws Exception {
+		SmsUtil.sendSms(cellPhoneNr, message);
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public String getCellPhoneNr() {
+		return cellPhoneNr;
+	}
+
+	public void setCellPhoneNr(String cellPhoneNr) {
+		this.cellPhoneNr = cellPhoneNr;
+	}
+
+}

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteService.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteService.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/business/external/QuoteService.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -31,6 +31,6 @@
  */
 public interface QuoteService {
 	
-	Quote calculateQuote(TicketRequest ticketReques);
+	Quote calculateQuote(String from, String to, String cellphoneNr);
 
 }

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/decision/CheckCustomerDecision.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/decision/CheckCustomerDecision.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/decision/CheckCustomerDecision.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -61,7 +61,7 @@
 		Session session = env.get(Session.class);
 		
 		Criteria criteria = session.createCriteria(User.class);
-		criteria.add(Restrictions.eq("cellphoneNr", quote.getTicketRequest().getCellPhoneNr()));
+		criteria.add(Restrictions.eq("cellphoneNr", quote.getCellPhoneNr()));
 		return (User) criteria.uniqueResult();
 	}
 	

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/util/SmsUtil.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/util/SmsUtil.java	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/java/org/jbpm/trainticketdemo/util/SmsUtil.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -52,7 +52,7 @@
 	
 	public static void sendSms(Quote quote, String textMessage) throws HttpException, IOException {
 		if (isQuoteForEmulator(quote)) {
-			sendSms(getEmulatorUrl(quote.getTicketRequest().getCellPhoneNr()), textMessage);
+			sendSms(getEmulatorUrl(quote.getCellPhoneNr()), textMessage);
 		} else {
 			// TODO
 		}
@@ -63,7 +63,7 @@
 	}
 	
 	public static boolean isQuoteForEmulator(Quote quote ) {
-		return isMessageFromEmulator(quote.getTicketRequest().getCellPhoneNr());
+		return isMessageFromEmulator(quote.getCellPhoneNr());
 	}
 	
 	public static String getEmulatorUrl(String phoneNr) {

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.cfg.xml
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.cfg.xml	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.cfg.xml	2009-08-31 10:41:42 UTC (rev 5599)
@@ -3,20 +3,10 @@
 <jbpm-configuration>
 
   <import resource="jbpm.default.cfg.xml" />
-  
-  <import resource="jbpm.tx.jta.cfg.xml" />
-  
-  <!-- 
   <import resource="jbpm.tx.hibernate.cfg.xml" />
-  -->
-  
   <import resource="jbpm.jpdl.cfg.xml" />
   <import resource="jbpm.identity.cfg.xml" />
   <import resource="jbpm.businesscalendar.cfg.xml" />
-  
-  <process-engine-context>
-    <job-executor threads="3" idle="30000" idle-max="60000" lock-millis="3600000" />
-  </process-engine-context>
-  
+  <import resource="jbpm.jobexecutor.cfg.xml" />	    
 
 </jbpm-configuration>

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.hibernate.cfg.xml
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.hibernate.cfg.xml	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/jbpm.hibernate.cfg.xml	2009-08-31 10:41:42 UTC (rev 5599)
@@ -8,29 +8,19 @@
 	<session-factory>
 
 		<!-- HSQLDB -->
-		<property name="hibernate.connection.datasource">java:JbpmDS</property>
 		<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
+		<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
+		<property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost:1701</property>
+		<property name="hibernate.connection.username">sa</property>
+		<property name="hibernate.connection.password"></property>
+		<property name="hibernate.hbm2ddl.auto">create-drop</property> 
 
-		<!--
-			POSTGRES <property
-			name="hibernate.connection.driver_class">org.postgresql.Driver</property>
-			<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/jbpm</property>
-			<property name="hibernate.connection.username">postgres</property>
-			<property name="hibernate.connection.password">postgres</property>
-			<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
-			<property name="hibernate.hbm2ddl.auto">create-drop</property>
-		-->
-
-		<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
-		<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
-		<property name="jta.UserTransaction">UserTransaction</property>
-
 		<mapping resource="jbpm.repository.hbm.xml" />
 		<mapping resource="jbpm.execution.hbm.xml" />
 		<mapping resource="jbpm.history.hbm.xml" />
 		<mapping resource="jbpm.task.hbm.xml" />
 		<mapping resource="jbpm.identity.hbm.xml" />
-		
+
 		<mapping resource="org/jbpm/trainticketdemo/domain/User.hbm.xml" />
 
 	</session-factory>

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/log4j.properties
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/log4j.properties	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/log4j.properties	2009-08-31 10:41:42 UTC (rev 5599)
@@ -1,4 +1,4 @@
-log4j.rootLogger=INFO,CONSOLE
+log4j.rootLogger=DEBUG,CONSOLE
 
 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/logging.properties
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/logging.properties	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/logging.properties	2009-08-31 10:41:42 UTC (rev 5599)
@@ -1,18 +1,64 @@
-handlers= java.util.logging.ConsoleHandler
-redirect.commons.logging = enabled
-
-java.util.logging.ConsoleHandler.level = FINE
-java.util.logging.ConsoleHandler.formatter = org.jbpm.internal.log.LogFormatter
-
-org.jbpm.level=FINE
-# org.jbpm.pvm.internal.tx.level=FINE
-# org.jbpm.pvm.internal.wire.level=FINE
-# org.jbpm.pvm.internal.util.level=FINE
-
-org.hibernate.level=INFO
-org.hibernate.cfg.SettingsFactory.level=SEVERE
-org.hibernate.cfg.HbmBinder.level=SEVERE
-# org.hibernate.SQL.level=FINEST
-# org.hibernate.type.level=FINEST
-# org.hibernate.tool.hbm2ddl.SchemaExport.level=FINEST
-# org.hibernate.transaction.level=FINEST
\ No newline at end of file
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
+
+.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
+
+############################################################
+# Handler specific properties.
+# Describes specific configuration info for Handlers.
+############################################################
+
+1catalina.org.apache.juli.FileHandler.level = FINE
+1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+1catalina.org.apache.juli.FileHandler.prefix = catalina.
+
+2localhost.org.apache.juli.FileHandler.level = FINE
+2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+2localhost.org.apache.juli.FileHandler.prefix = localhost.
+
+3manager.org.apache.juli.FileHandler.level = FINE
+3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+3manager.org.apache.juli.FileHandler.prefix = manager.
+
+4host-manager.org.apache.juli.FileHandler.level = FINE
+4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
+
+java.util.logging.ConsoleHandler.level = FINE
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+
+############################################################
+# Facility specific properties.
+# Provides extra control for each logger.
+############################################################
+
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
+
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
+
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler
+
+# For example, set the com.xyz.foo logger to only log SEVERE
+# messages:
+#org.apache.catalina.startup.ContextConfig.level = FINE
+#org.apache.catalina.startup.HostConfig.level = FINE
+#org.apache.catalina.session.ManagerBase.level = FINE
+#org.apache.catalina.core.AprLifecycleListener.level=FINE

Added: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/accept_quote.ftl
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/accept_quote.ftl	                        (rev 0)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/accept_quote.ftl	2009-08-31 10:41:42 UTC (rev 5599)
@@ -0,0 +1,26 @@
+<html>
+	<body>
+ 
+		<form action="${form.action}" method="POST" enctype="multipart/form-data">
+ 
+			<h3>Accept Quote:</h3>
+			<table>
+				<tr>
+					<td>From:</td>
+					<td>${from}</td>
+				</tr>			
+				<tr>
+					<td>To:</td>
+					<td>${to}</td>
+				</tr>
+				<tr>
+					<td>Price:</td>
+					<td><b>${quote.price}</b></td>
+				</tr>
+			</table>
+ 
+			<input type="submit" name="Accept"/>
+ 
+		</form>
+	</body>
+</html>
\ No newline at end of file

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/process.jpdl.xml
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/process.jpdl.xml	2009-08-31 09:34:27 UTC (rev 5598)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/process.jpdl.xml	2009-08-31 10:41:42 UTC (rev 5599)
@@ -13,15 +13,15 @@
 		</event-listener>
 	</on>
 
-	<start form="org/jbpm/trainticketdemo/trainticket_startform.ftl" g="21,244,48,48" name="start">
+	<start form="org/jbpm/trainticketdemo/trainticket_startform.ftl" g="11,105,48,48" name="start">
 		<transition to="Calculate quote"/>
 	</start>
 
-	<custom class="org.jbpm.trainticketdemo.action.CalculateQuoteAction" g="109,242,132,52" name="Calculate quote">
+	<custom class="org.jbpm.trainticketdemo.action.CalculateQuoteAction" g="99,103,132,52" name="Calculate quote">
 		<transition to="Check customer credit"/>
 	</custom>
 
-	<custom class="org.jbpm.trainticketdemo.action.SendQuoteToCustomerAction" g="393,155,209,52" name="Send price quote to customer">
+	<custom class="org.jbpm.trainticketdemo.action.SendQuoteToCustomerAction" g="383,16,209,52" name="Send price quote to customer">
 		<on event="end">
 			<event-listener class="org.jbpm.trainticketdemo.eventlistener.SendEventToQueue">
 				<field name="eventClass">
@@ -35,24 +35,27 @@
 		<transition to="Accept quote"/>
 	</custom>
 
-	<custom class="org.jbpm.trainticketdemo.action.SendRejectionMsgAction" g="391,337,160,52" name="Send reject message">
+	<custom class="org.jbpm.trainticketdemo.action.SendRejectionMsgAction" g="381,198,160,52" name="Send reject message">
 		<transition to="cancel"/>
 	</custom>
 
-	<decision g="284,246,48,48" name="Check customer credit">
+	<decision g="274,107,48,48" name="Check customer credit">
       <handler class="org.jbpm.trainticketdemo.decision.CheckCustomerDecision" />
+      <handler class="org.jbpm.trainticketdemo.decision.CheckCustomerDecision"/>
+      <handler class="org.jbpm.trainticketdemo.decision.CheckCustomerDecision"/>
 	  <transition g="-67,-16" name="credit OK" to="Send price quote to customer"/>
 	  <transition g="-68,5" name="credit NOK" to="Send reject message"/>
 	</decision>
 
-	<task assignee="#{ticketRequest.cellPhoneNr}" g="651,156,107,52" name="Accept quote">
+	<task assignee="#{cellPhoneNr}" form="org/jbpm/trainticketdemo/accept_quote.ftl" g="641,17,107,52" name="Accept quote">
 		<transition to="charge customer"/>
 		<transition g="11,-13" name="timeout" to="cancel">
-         	<timer duedate="1 day"/>
+         <timer duedate="10 seconds"/>
+         <timer duedate="10 seconds"/>
 		</transition>
 	</task>
 
-	<custom class="org.jbpm.trainticketdemo.action.ChargeCustomerAction" g="806,157,135,52" name="charge customer">
+	<custom class="org.jbpm.trainticketdemo.action.ChargeCustomerAction" g="796,18,135,52" name="charge customer">
 		<on event="end">
 			<event-listener class="org.jbpm.trainticketdemo.eventlistener.SendEventToQueue">
 				<field name="eventClass">
@@ -62,11 +65,11 @@
 					<map>
 						<entry>
 							<key><string value="from"/></key>
-							<value><string value="#{ticketRequest.from}"/></value>
+							<value><string value="#{from}"/></value>
 						</entry>
 						<entry>
 							<key><string value="to"/></key>
-							<value><string value="#{ticketRequest.to}"/></value>
+							<value><string value="#{to}"/></value>
 						</entry>
 						<entry>
 							<key><string value="amount"/></key>
@@ -79,8 +82,8 @@
 		<transition to="end"/>
 	</custom>
 
-	<end-cancel g="682,337,48,48" name="cancel"/>
+	<end-cancel g="672,198,48,48" name="cancel"/>
 
-	<end g="1001,158,48,48" name="end"/>
+	<end g="991,19,48,48" name="end"/>
 
 </process>
\ No newline at end of file

Modified: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/org/jbpm/trainticketdemo/process.png
===================================================================
(Binary files differ)

Added: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.cfg.xml
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.cfg.xml	                        (rev 0)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.cfg.xml	2009-08-31 10:41:42 UTC (rev 5599)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<jbpm-configuration>
+
+   <process-engine-context>
+  
+    <repository-service />
+    <repository-cache />
+    <execution-service />
+    <history-service />
+    <management-service />
+    <identity-service />
+    <task-service />
+
+    <hibernate-configuration>
+      <cfg resource="production.jbpm.hibernate.cfg.xml" />     
+    </hibernate-configuration>
+
+    <hibernate-session-factory />
+
+    <script-manager default-expression-language="juel"
+                    default-script-language="juel">
+      <script-language name="juel" factory="org.jbpm.pvm.internal.script.JuelScriptEngineFactory" />
+    </script-manager>
+    
+    <id-generator />
+    <types resource="jbpm.variable.types.xml" />
+
+    <address-resolver />
+  
+  </process-engine-context>
+
+  <transaction-context>
+    <repository-session />
+    <db-session />
+    
+    <message-session />
+    <timer-session />
+    <history-session />
+    <mail-session>
+      <mail-server>
+        <session-properties resource="jbpm.mail.properties" />
+      </mail-server>
+    </mail-session>
+  </transaction-context>
+  
+  <import resource="jbpm.tx.jta.cfg.xml" />
+  <import resource="jbpm.jpdl.cfg.xml" />
+  <import resource="jbpm.identity.cfg.xml" />
+  <import resource="jbpm.businesscalendar.cfg.xml" />
+  
+  <import resource="jbpm.jobexecutor.cfg.xml" />
+
+  
+
+</jbpm-configuration>

Added: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.hibernate.cfg.xml
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.hibernate.cfg.xml	                        (rev 0)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/main/resources/production.jbpm.hibernate.cfg.xml	2009-08-31 10:41:42 UTC (rev 5599)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!DOCTYPE hibernate-configuration PUBLIC
+          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+	<session-factory>
+	
+		<!-- In production, we're using a JNDI datasource and JTA transactions -->
+
+		<!-- HSQLDB -->
+		<property name="hibernate.connection.datasource">java:JbpmDS</property>
+		<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
+		<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
+		<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
+		<property name="jta.UserTransaction">UserTransaction</property>
+
+		<mapping resource="jbpm.repository.hbm.xml" />
+		<mapping resource="jbpm.execution.hbm.xml" />
+		<mapping resource="jbpm.history.hbm.xml" />
+		<mapping resource="jbpm.task.hbm.xml" />
+		<mapping resource="jbpm.identity.hbm.xml" />
+		
+		<mapping resource="org/jbpm/trainticketdemo/domain/User.hbm.xml" />
+
+	</session-factory>
+</hibernate-configuration>

Added: projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/org/jbpm/trainticketdemo/TrainTicketProcessUnitTestDemo.java
===================================================================
--- projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/org/jbpm/trainticketdemo/TrainTicketProcessUnitTestDemo.java	                        (rev 0)
+++ projects/demos/trainticket-demo/jbpm-on-rails/trunk/process-logic/src/test/java/org/jbpm/trainticketdemo/TrainTicketProcessUnitTestDemo.java	2009-08-31 10:41:42 UTC (rev 5599)
@@ -0,0 +1,122 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.trainticketdemo;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.jbpm.api.NewDeployment;
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.task.Task;
+import org.jbpm.test.JbpmTestCase;
+import org.jbpm.trainticketdemo.domain.User;
+import org.jbpm.trainticketdemo.variable.ProcessVariable;
+
+/**
+ * @author Joram Barrez
+ */
+public class TrainTicketProcessUnitTestDemo extends JbpmTestCase {
+	
+	private SessionFactory sessionFactory;
+	
+	private User testUser;
+	
+	// ###### SETUP & TEARDOWN ###################################
+
+	@Override
+	protected void setUp() throws Exception {
+		super.setUp();
+		sessionFactory = processEngine.get(SessionFactory.class);
+		
+		// Add dummy user
+		
+		testUser = new User();
+		testUser.setCellphoneNr("+32 123 45 67 89");
+		testUser.setCurrentCredit(100.0);
+		save(testUser);
+	}	
+	
+	@Override
+	protected void tearDown() throws Exception {
+		
+		// Cleanup our own test data		
+		Session session = sessionFactory.openSession();
+		Transaction t = session.beginTransaction();
+		session.delete(testUser);
+		t.commit();
+		session.close();
+		
+		// Let jBPM clean up its stuff
+		super.tearDown();
+	}
+	
+	// This is the unit test shown in the presentation
+	public void testTrainTicketProcessWithEnoughCredit() {
+		
+		// First we deploy the latest version of the train ticket process
+		NewDeployment deployment = repositoryService.createDeployment();
+		deployment.addResourceFromClasspath("org/jbpm/trainticketdemo/process.jpdl.xml");
+		deployment.deploy();
+		
+		// Start a new Process instance
+		Map<String, String> vars = new HashMap<String, String>();
+		vars.put(ProcessVariable.FROM, "Brussels");
+		vars.put(ProcessVariable.TO, "Antwerp");
+		vars.put(ProcessVariable.CELLPHONE_NUMBER, testUser.getCellphoneNr());
+		
+		ProcessInstance pi = executionService.startProcessInstanceByKey("ticketProcess", vars);
+		
+		// Since I have enough money, the 'Accept Quote' task should be assigned to the test user's cellphone nr
+		List<Task> tasks = taskService.findPersonalTasks(testUser.getCellphoneNr());
+		assertTrue("Nr of tasks for cellphone nr = " + tasks.size(), tasks.size() == 1);
+		
+		// or we can use the new Query API
+		Task task = taskService.createTaskQuery()
+		                       .assignee(testUser.getCellphoneNr())
+		                       .uniqueResult();
+		assertEquals(tasks.get(0).getName(), task.getName());
+		
+		// After task completion, the process is finished
+		taskService.completeTask(task.getId());
+		assertProcessInstanceEnded(pi);
+		
+		// We always clean up after ourselves
+		repositoryService.deleteDeploymentCascade(deployment.getId());
+		
+	}
+	
+	
+	// ########## HELPER METHODS #####################""
+	
+	private void save(User user) {
+		Session session = sessionFactory.openSession();
+		Transaction t = session.beginTransaction();
+		session.saveOrUpdate(testUser);
+		t.commit();
+		session.close();
+	}
+	
+}



More information about the jbpm-commits mailing list