JBoss JBPM SVN: r5600 - jbpm4/trunk/modules/userguide/src/main/docbook/en/modules.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2009-08-31 08:04:02 -0400 (Mon, 31 Aug 2009)
New Revision: 5600
Modified:
jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml
Log:
added signavio installation docs
Modified: jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml
===================================================================
--- jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml 2009-08-31 10:41:42 UTC (rev 5599)
+++ jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml 2009-08-31 12:04:02 UTC (rev 5600)
@@ -151,10 +151,6 @@
<para>Specify property <literal>-Djboss.home=PathToYourJBossInstallation</literal>
to customize the path to your JBoss installation.
</para>
- <para>If you are running on a JDK 6, you can also call the installation target
- <literal>install.signavio.into.jboss</literal>, which will install the
- web based process modeller into JBoss.
- </para>
<para>In JBoss, the <literal>ProcessEngine</literal> can be obtained from JNDI
with <literal>new InitialContext().lookup("java:/ProcessEngine")</literal>
The same ProcessEngine can be obtained with <literal>Configuration.getProcessEngine()</literal>
@@ -164,10 +160,22 @@
<section id="tomcat">
<title>Tomcat</title>
<para>The target <literal>install.jbpm.into.tomcat</literal> will install jBPM into
- your JBoss 5 installation.
+ your JBoss 5 installation.
</para>
</section>
+ <section id="signavio">
+ <title>Signavio web based process editor</title>
+ <para>The targets <literal>install.signavio.into.jboss</literal> and
+ <literal>install.signavio.into.tomcat</literal> will install the Signavio web based
+ process editor into JBoss or Tomcat respectively.
+ </para>
+ <para>The signavio webapp is not yet part of the default installation scripts
+ as it depends on JDK 6.
+ </para>
+ <para>After the application started, </para>
+ </section>
+
<section id="userwebapp">
<title>User webapp</title>
<para>If you want to deploy jBPM as a part of your web application, use the
14 years, 8 months
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.
by do-not-reply@jboss.org
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(a)jbpm.org');
INSERT INTO JBPM4_ID_USER VALUES (3,0,'peter','password','Peter',NULL,'peter(a)jbpm.org');
INSERT INTO JBPM4_ID_USER VALUES (4,0,'mary','password','Mary',NULL,'mary(a)jbpm.org');
-INSERT INTO JBPM4_ID_USER VALUES (5,0,'joram','password','Joram',NULL,'jbarrez(a)redhat.com');
+INSERT INTO JBPM4_ID_USER VALUES (5,0,'123456789','password','Joram',NULL,'jbarrez(a)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();
+ }
+
+}
14 years, 8 months
JBoss JBPM SVN: r5598 - in projects/jopr-integration/trunk/src/main: java/org/rhq/plugins/jbpm4/connector and 1 other directories.
by do-not-reply@jboss.org
Author: jim.ma
Date: 2009-08-31 05:34:27 -0400 (Mon, 31 Aug 2009)
New Revision: 5598
Modified:
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDeploymentComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java
projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml
Log:
Added the operation to query the HistoryProcessInstances
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -29,6 +29,11 @@
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.history.HistoryProcessInstance;
+import org.jbpm.pvm.internal.query.Page;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
@@ -39,29 +44,38 @@
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.plugins.jbpm4.connector.JBPMEngineConnection;
import org.rhq.plugins.jbpm4.util.StringUtil;
+
/**
* @author <a href mailto="ema(a)redhat.com">Jim Ma</a>
- *
+ *
*/
-public class ProcessDefComponent implements ResourceComponent<ProcessEngineComponent> , MeasurementFacet, CreateChildResourceFacet {
+public class ProcessDefComponent implements
+ ResourceComponent<ProcessEngineComponent>, MeasurementFacet,
+ CreateChildResourceFacet, OperationFacet {
private ResourceContext<ProcessEngineComponent> resourceContext;
private Log log = LogFactory.getLog(this.getClass());
ProcessDefinition processDef = null;
- private JBPMEngineConnection jbpmConnection = null;
+ private JBPMEngineConnection jbpmConnection = null;
+
public void start(ResourceContext<ProcessEngineComponent> resourceContext) {
this.resourceContext = resourceContext;
- jbpmConnection = resourceContext.getParentResourceComponent().getJBPMConnection();
- processDef = jbpmConnection.getProcessDefById(resourceContext.getResourceKey());
+ jbpmConnection = resourceContext.getParentResourceComponent()
+ .getJBPMConnection();
+ processDef = jbpmConnection.getProcessDefById(resourceContext
+ .getResourceKey());
}
public void stop() {
}
- public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> metrics) {
+ public void getValues(MeasurementReport report,
+ Set<MeasurementScheduleRequest> metrics) {
for (MeasurementScheduleRequest request : metrics) {
- if (request.getName().equals("version")) {
+ if (request.getName().equals("version")) {
MeasurementDataTrait value = new MeasurementDataTrait(request,
StringUtil.replaceNull((processDef.getVersion())));
report.addData(value);
@@ -72,39 +86,44 @@
StringUtil.replaceNull(processDef.getId()));
report.addData(value);
}
-
+
if (request.getName().equals("description")) {
- MeasurementDataTrait value = new MeasurementDataTrait(request, StringUtil.replaceNull(processDef.getDescription()));
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
+ StringUtil.replaceNull(processDef.getDescription()));
report.addData(value);
}
-
+
if (request.getName().equals("avgPerProcessInstanceDuration")) {
- String duration = StringUtil.replaceNull(getAverageProcessInstanceDuration());
- MeasurementDataTrait value = new MeasurementDataTrait(request, duration);
+ String duration = StringUtil
+ .replaceNull(getAverageProcessInstanceDuration());
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
+ duration);
report.addData(value);
- }
+ }
}
}
-
-
+
public AvailabilityType getAvailability() {
- ProcessDefinition processDef = jbpmConnection.getProcessDefById(resourceContext.getResourceKey());
+ ProcessDefinition processDef = jbpmConnection
+ .getProcessDefById(resourceContext.getResourceKey());
if (processDef != null) {
return AvailabilityType.UP;
}
- return AvailabilityType.DOWN;
+ return AvailabilityType.DOWN;
}
public JBPMEngineConnection getJBPMConnection() {
return resourceContext.getParentResourceComponent().getJBPMConnection();
- }
-
- //---------------CreateChildResourceFacet implementation -----------------//
+ }
+
+ // ---------------CreateChildResourceFacet implementation
+ // -----------------//
public CreateResourceReport createResource(CreateResourceReport report) {
String resourceTypeName = report.getResourceType().getName();
report.setResourceKey(resourceTypeName);
report.setResourceName(resourceTypeName);
- ProcessInstance instance = jbpmConnection.startProcessInstance(resourceContext.getResourceKey());
+ ProcessInstance instance = jbpmConnection
+ .startProcessInstance(resourceContext.getResourceKey());
if (instance == null) {
report.setStatus(CreateResourceStatus.FAILURE);
report.setErrorMessage("Failed to start process instance");
@@ -113,21 +132,72 @@
}
return report;
}
-
+
public String getResourceKey() {
return this.resourceContext.getResourceKey();
- }
+ }
+
+ public Long getAverageProcessInstanceDuration() {
+ List<HistoryProcessInstance> instances = this.jbpmConnection
+ .getHistoryProcessInstances(this.getResourceKey(), null,
+ ProcessInstance.STATE_ENDED, null);
+ Long sumDuration = 0L;
+ for (HistoryProcessInstance instance : instances) {
+ sumDuration = sumDuration + instance.getDuration();
+ }
+ if (sumDuration > 0) {
+ return sumDuration / instances.size();
+ }
+ return null;
+ }
+
+ public OperationResult invokeOperation(String name, Configuration parameters) throws InterruptedException, Exception {
+ OperationResult result = null;
+ if (name.equals("historyProcessInstanceSelector")) {
+ result = queryHistoryProcessInstances(parameters);
+ }
+ return result;
+ }
- public Long getAverageProcessInstanceDuration() {
- List<HistoryProcessInstance> instances = this.jbpmConnection.getHistoryProcessInstances(this.getResourceKey(), null, ProcessInstance.STATE_ENDED);
- Long sumDuration = 0L;
- for (HistoryProcessInstance instance : instances) {
- sumDuration = sumDuration + instance.getDuration();
+ public OperationResult queryHistoryProcessInstances(Configuration parameters) {
+ OperationResult result = new OperationResult();
+ PropertySimple simple = parameters.getSimple("duration");
+ Long duration = simple.getLongValue() == null ? 0 : simple.getLongValue();
+ PropertySimple state = parameters.getSimple("state");
+ String insState = state != null ? state.getStringValue() : HistoryProcessInstance.STATE_ENDED;
+
+ PropertySimple firstResult = parameters.getSimple("firstResult");
+ Page page = null;
+ if (firstResult.getIntegerValue() != null) {
+ PropertySimple maxResults = parameters.getSimple("maxResults");
+ int first = firstResult.getIntegerValue();
+ int max = maxResults.getIntegerValue() != null ? maxResults.getIntegerValue() : 50;
+ page = new Page(first, max);
+ }
+
+ List<HistoryProcessInstance> instances = jbpmConnection.getHistoryProcessInstances(this.getResourceKey(), null, insState, page);
+ PropertyList resultInstances = new PropertyList("resultInstances");
+ result.getComplexResults().put(resultInstances);
+
+ for (HistoryProcessInstance instance : instances) {
+ if (instance.getDuration() > duration) {
+ PropertyMap map = new PropertyMap("instance");
+ PropertySimple id = new PropertySimple("id", instance.getProcessInstanceId());
+ PropertySimple insDuration = new PropertySimple("duration", instance.getDuration());
+ PropertySimple endTime = new PropertySimple("endTime", instance.getEndTime());
+ PropertySimple startTime = new PropertySimple("startTime", instance.getStartTime());
+ PropertySimple definitionId = new PropertySimple("definitionId", instance.getProcessDefinitionId());
+ PropertySimple stateProp = new PropertySimple("state", instance.getState());
+ map.put(id);
+ map.put(startTime);
+ map.put(endTime);
+ map.put(insDuration);
+ map.put(definitionId);
+ map.put(stateProp);
+ resultInstances.add(map);
+ }
}
- if (sumDuration > 0) {
- return sumDuration/instances.size();
- }
- return null;
+ return result;
}
-
+
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDeploymentComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDeploymentComponent.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDeploymentComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -29,6 +29,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.api.Deployment;
+import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.transfer.ContentResponseResult;
@@ -46,13 +47,15 @@
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.plugins.jbpm4.connector.JBPMEngineConnection;
import org.rhq.plugins.jbpm4.util.StringUtil;
/**
* @author <a href mailto="ema(a)redhat.com">Jim Ma</a>
*
*/
-public class ProcessDeploymentComponent implements ResourceComponent<ProcessEngineComponent> , MeasurementFacet, ContentFacet, DeleteResourceFacet {
+public class ProcessDeploymentComponent implements ResourceComponent<ProcessEngineComponent> ,OperationFacet, MeasurementFacet, ContentFacet, DeleteResourceFacet {
private ResourceContext<ProcessEngineComponent> resourceContext;
private Log log = LogFactory.getLog(this.getClass());
private Deployment deployment = null;
@@ -145,6 +148,20 @@
this.jbpmConnection.deleteDeployment(resourceContext.getResourceKey());
}
+ public OperationResult invokeOperation(String name, Configuration parameters)
+ throws InterruptedException, Exception {
+ OperationResult result = new OperationResult();
+ if (name.toUpperCase().equals("SUSPEND")) {
+ this.jbpmConnection.suspendDeployment(this.resourceContext.getResourceKey());
+ }
+
+ if (name.toUpperCase().equals("RESUME")) {
+ this.jbpmConnection.resumeDeployment(this.resourceContext.getResourceKey());
+ }
+ result.setSimpleResult("Success");
+ return result;
+ }
+
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -48,7 +48,7 @@
public void start(ResourceContext<ProcessDefComponent> resourceContext) {
instanceId = resourceContext.getResourceKey();
jbpmConnection = resourceContext.getParentResourceComponent().getJBPMConnection();
- List<HistoryProcessInstance> instanceList = jbpmConnection.getHistoryProcessInstances(null,instanceId,HistoryProcessInstance.STATE_ENDED);
+ List<HistoryProcessInstance> instanceList = jbpmConnection.getHistoryProcessInstances(null,instanceId,HistoryProcessInstance.STATE_ENDED, null);
instance = instanceList.get(0);
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -41,7 +41,7 @@
Set<DiscoveredResourceDetails> historyInstances = new java.util.HashSet<DiscoveredResourceDetails>();
ProcessDefComponent defComponent = context.getParentResourceComponent();
- List<HistoryProcessInstance> historyProcessInstances = defComponent.getJBPMConnection().getHistoryProcessInstances(defComponent.getResourceKey(), null, ProcessInstance.STATE_ENDED);
+ List<HistoryProcessInstance> historyProcessInstances = defComponent.getJBPMConnection().getHistoryProcessInstances(defComponent.getResourceKey(), null, ProcessInstance.STATE_ENDED, null);
for (HistoryProcessInstance instance: historyProcessInstances) {
DiscoveredResourceDetails details = new DiscoveredResourceDetails(context.getResourceType(), String.valueOf(instance.getProcessInstanceId()), "ProcessInstance-" + instance.getProcessInstanceId(), null, null, null, null);
historyInstances.add(details);
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -29,8 +29,10 @@
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.history.HistoryProcessInstance;
+import org.jbpm.api.history.HistoryProcessInstanceQuery;
import org.jbpm.api.job.Job;
import org.jbpm.api.task.Task;
+import org.jbpm.pvm.internal.query.Page;
/**
* @author <a href mailto="ema(a)redhat.com">Jim Ma</a>
*
@@ -51,6 +53,8 @@
Job getJob(String jobId);
Map<String, Long> avgDurationPerActivity(String processDefinitionId);
Job executeJob(String jobDbid);
- List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state);
+ List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state, Page page);
List<Task> getTasks(String definitionId, String processInstanceId);
+ void suspendDeployment(String deploymentId);
+ void resumeDeployment(String deploymentId);
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -47,6 +47,7 @@
import org.jbpm.api.task.Task;
import org.jbpm.pvm.internal.cmd.CommandService;
import org.jbpm.pvm.internal.cmd.ExecuteJobCmd;
+import org.jbpm.pvm.internal.query.Page;
/**
* @author <a href mailto="ema(a)redhat.com">Jim Ma</a>
*
@@ -92,7 +93,15 @@
processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
}
+ public void suspendDeployment(String deploymentId) {
+ processEngine.getRepositoryService().suspendDeployment(deploymentId);
+ }
+ public void resumeDeployment(String deploymentId) {
+ processEngine.getRepositoryService().resumeDeployment(deploymentId);
+ }
+
+
public Deployment getDeployment(String deploymentId) {
return processEngine.getRepositoryService().createDeploymentQuery().deploymentDbid(Long.valueOf(deploymentId)).uniqueResult();
@@ -184,7 +193,7 @@
return commandService.execute(new ExecuteJobCmd(jobDbid));
}
- public List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state) {
+ public List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state, Page page) {
HistoryProcessInstanceQuery historyQuery = processEngine.getHistoryService().createHistoryProcessInstanceQuery();
if (definitionId != null) {
historyQuery.processDefinitionId(definitionId);
@@ -196,8 +205,16 @@
if (state != null) {
historyQuery.state(state);
}
+
+ if (page != null) {
+ historyQuery.page(page.firstResult, page.maxResults);
+ }
return historyQuery.list();
}
+
+ public List<HistoryProcessInstance> queryHistoryProcessIncences(HistoryProcessInstanceQuery query) {
+ return query.list();
+ }
public List<Task> getTasks(String definitionId, String processInstanceId) {
TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery();
Modified: projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml
===================================================================
--- projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml 2009-08-31 09:34:27 UTC (rev 5598)
@@ -94,6 +94,8 @@
<service name="Process Deployments" discovery="ProcessDeploymentDiscoveryComponent"
class="ProcessDeploymentComponent" createDeletePolicy="both"
creationDataType="content" description="JBPM Process Deployment">
+ <operation name="suspend" displayName="suspend" description="Suspend this deployment" />
+ <operation name="resume" displayName="resume" description="Resume this deployment" />
<metric property="id" displayName="id" dataType="trait"
displayType="summary" defaultOn="true" description="deployment id" />
<metric property="name" displayName="name" dataType="trait"
@@ -109,6 +111,66 @@
</service>
<service name="Process Definitions" discovery="ProcessDefDiscoveryComponent"
class="ProcessDefComponent" description="JBPM Process Definitions">
+ <operation name="historyProcessInstanceSelector" displayName="historyProcessInstanceSelector"
+ description="Lists the ended process instance which duration is large than the value">
+ <parameters>
+ <c:simple-property name="duration" displayName="durationLargeThan" type="long" required="false" description="the duration value large than this"/>
+ <c:simple-property name="state" displayName="state" type="string" required="false" default="ended"
+ description="the process instance state">
+ <c:property-options>
+ <c:option value="ended" name="Ended" default="true"/>
+ <c:option value="active" name="Active"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="firstResult" displayName="firstResult" type="integer" required="false" description="the index of first result"/>
+ <c:simple-property name="maxResults" displayName="maxResults" type="integer" required="false" description="the max results"/>
+ </parameters>
+
+ <results>
+ <c:list-property name="resultInstances" readOnly="true" required="false" displayName="Process Instances Result"
+ description="In this list you can review the process instance which duration is large than the select value">
+ <c:map-property name="instance" readOnly="true">
+ <c:simple-property readOnly="true" name="id" displayName="id" description="ID"/>
+ <c:simple-property readOnly="true" name="definitionId" required="false" displayName="DefinitionId" description="Process DefinitionId"/>
+ <c:simple-property readOnly="true" name="startTime" required="false" displayName="StartTime" description="Time of the process instance starts"/>
+ <c:simple-property readOnly="true" name="endTime" required="false" displayName="EndTime" description="Time of the process instance ends"/>
+ <c:simple-property readOnly="true" name="duration" required="false" displayName="Duration" description="Process instance duration"/>
+ <c:simple-property readOnly="true" name="state" required="false" displayName="State" description="The process Instance State"/>
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="processInstanceSelector" displayName="processInstanceSelector"
+ description="lists the process instances">
+ <parameters>
+ <c:simple-property name="duration" displayName="durationLargeThan" type="long" required="false" description="the duration value large than this"/>
+ <c:simple-property name="state" displayName="state" type="string" required="false" default="ended"
+ description="the process instance state">
+ <c:property-options>
+ <c:option value="ended" name="Ended" default="true"/>
+ <c:option value="active" name="Active"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="firstResult" displayName="firstResult" type="integer" required="false" description="the index of first result"/>
+ <c:simple-property name="maxResults" displayName="maxResults" type="integer" required="false" description="the max results"/>
+ </parameters>
+
+ <results>
+ <c:list-property name="resultInstances" readOnly="true" required="false" displayName="Process Instances Result"
+ description="In this list you can review the process instance which duration is large than the select value">
+ <c:map-property name="instance" readOnly="true">
+ <c:simple-property readOnly="true" name="id" displayName="id" description="ID"/>
+ <c:simple-property readOnly="true" name="definitionId" required="false" displayName="DefinitionId" description="Process DefinitionId"/>
+ <c:simple-property readOnly="true" name="startTime" required="false" displayName="StartTime" description="Time of the process instance starts"/>
+ <c:simple-property readOnly="true" name="endTime" required="false" displayName="EndTime" description="Time of the process instance ends"/>
+ <c:simple-property readOnly="true" name="duration" required="false" displayName="Duration" description="Process instance duration"/>
+ <c:simple-property readOnly="true" name="state" required="false" displayName="State" description="The process Instance State"/>
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
<metric property="version" displayName="version" dataType="trait"
displayType="summary" defaultOn="true" description="Process definition version" />
<metric property="id" displayName="id" dataType="trait"
14 years, 8 months
JBoss JBPM SVN: r5597 - jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2009-08-31 05:00:32 -0400 (Mon, 31 Aug 2009)
New Revision: 5597
Modified:
jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java
Log:
[JBPM-983] stabilize test under hsqldb
Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java 2009-08-31 08:26:10 UTC (rev 5596)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java 2009-08-31 09:00:32 UTC (rev 5597)
@@ -20,11 +20,11 @@
*/
public class JBPM983Test extends AbstractDbTestCase {
- private static Log log = LogFactory.getLog(JBPM983Test.class);
-
- private long subProcessDefinitionId;
private long processDefinitionId;
+ private long subProcessDefinitionId;
+ private static Log log = LogFactory.getLog(JBPM983Test.class);
+
protected void setUp() throws Exception {
super.setUp();
@@ -43,11 +43,9 @@
&& dialect.indexOf("HSQL") == -1) { // multiple threads will not be supported on HSQL
jbpmConfiguration.getJobExecutor().setNbrOfThreads(4);
}
- startJobExecutor();
}
protected void tearDown() throws Exception {
- stopJobExecutor();
jbpmConfiguration.getJobExecutor().setNbrOfThreads(1);
graphSession.deleteProcessDefinition(processDefinitionId);
@@ -56,68 +54,51 @@
super.tearDown();
}
- static final String SUBPROCESS_XML = "<?xml version='1.0' encoding='UTF-8'?>"
+ static final String SUBPROCESS_XML = "<?xml version='1.0'?>"
+ "<process-definition xmlns='urn:jbpm.org:jpdl-3.2' name='subprocess'>"
+ "<start-state name='start-state1'>"
+ " <description>start of the process</description>"
- + " <transition name='start-to-check' to='fileCheck' />"
+ + " <transition name='start-to-check' to='fileCheck'/>"
+ "</start-state>"
- + ""
+ "<node name='fileCheck' async='exclusive'>"
- + " <action name='action_filecheck' class='"
- + TestAction.class.getName()
- + "'>"
+ + " <action name='action_filecheck' class='" + TestAction.class.getName() + "'>"
+ " </action>"
- + " <transition name='check-to-do' to='doWhatever'></transition>"
- + "</node>"
- + ""
+ + " <transition name='check-to-do' to='doWhatever'/>"
+ + "</node>"
+ "<node name='doWhatever' async='exclusive'>"
- + " <action name='action_do' class='"
- + TestAction.class.getName()
- + "'>"
- + " </action>"
- + " <transition name='check-to-end' to='end-state-success'></transition>"
+ + " <action name='action_do' class='" + TestAction.class.getName() + "'/>"
+ + " <transition name='check-to-end' to='end-state-success'/>"
+ "</node>"
- + ""
+ "<end-state name='end-state-success'>"
- + " <description>process finished normally</description>"
+ + " <description>process finished normally</description>"
+ "</end-state>"
+ "</process-definition>";
- static final String PROCESS_XML = "<?xml version='1.0' encoding='UTF-8'?>"
+ static final String PROCESS_XML = "<?xml version='1.0'?>"
+ "<process-definition xmlns='urn:jbpm.org:jpdl-3.2' name='superprocess'>"
+ "<start-state name='start-state1'>"
+ " <description>start of the process</description>"
- + " <transition name='start-to-check' to='fileCheck' />"
- + "</start-state>"
- + ""
+ + " <transition name='start-to-check' to='fileCheck'/>"
+ + "</start-state>" + ""
+ "<node name='fileCheck' async='true'>"
- + " <action name='action_check' class='"
- + TestAction.class.getName()
- + "'>"
- + " </action>"
- + " <transition name='check-to-fork' to='fork1'></transition>"
+ + " <action name='action_check' class='" + TestAction.class.getName() + "'/>"
+ + " <transition name='check-to-fork' to='fork1'/>"
+ "</node>"
- + ""
+ "<fork name='fork1'>"
- + " <transition name='toNode1' to='node1'></transition>"
- + " <transition name='toNode2' to='node2'></transition>"
+ + " <transition name='toNode1' to='node1'/>"
+ + " <transition name='toNode2' to='node2'/>"
+ "</fork>"
- + ""
+ "<process-state name='node1' async='exclusive'>"
- + " <sub-process name='subprocess' />"
- + " <transition name='node1toJoin1' to='join1'></transition>"
+ + " <sub-process name='subprocess'/>"
+ + " <transition name='node1toJoin1' to='join1'/>"
+ "</process-state>"
- + ""
+ "<process-state name='node2' async='exclusive'>"
- + " <sub-process name='subprocess' />"
- + " <transition name='node2toJoin1' to='join1'></transition>"
+ + " <sub-process name='subprocess'/>"
+ + " <transition name='node2toJoin1' to='join1'/>"
+ "</process-state>"
- + ""
+ "<join name='join1'>"
- + " <transition name='joinToEnd' to='end-state-success'></transition>"
+ + " <transition name='joinToEnd' to='end-state-success'/>"
+ "</join>"
- + ""
+ "<end-state name='end-state-success'>"
+ " <description>process finished normally</description>"
+ "</end-state>"
@@ -138,74 +119,35 @@
newTransaction();
}
+ processJobs(5 * 60 * 1000);
+
for (int i = 0; i < processCount; i++) {
long piId = processInstanceIds[i];
- waitFor(piId);
-
ProcessInstance pi = jbpmContext.loadProcessInstance(piId);
assertEquals("end-state-success", pi.getRootToken().getNode().getName());
}
}
- protected void waitFor(long piId) throws Exception {
- final int endTimeout = 60;
- long startTime = System.currentTimeMillis();
-
- while (!jbpmContext.loadProcessInstance(piId).hasEnded()) {
- if (System.currentTimeMillis() - startTime > endTimeout * 1000) {
- fail("Aborting after " + endTimeout + " seconds.");
- break;
- }
-
- newTransaction();
-
- log.info("waiting for workflow completion....");
- try {
- Thread.sleep(200);
- }
- catch (InterruptedException e) {
- log.error("wait for workflow was interruputed", e);
- break;
- }
- }
- }
-
public static class TestAction implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception {
- String processName = executionContext.getProcessDefinition().getName()
- + ":"
+ String processName = executionContext.getProcessDefinition().getName() + ":"
+ executionContext.getProcessInstance().getId();
- String nodeName = executionContext.getToken().getNode().getName();
+ String nodeName = executionContext.getNode().getName();
String tokenName = executionContext.getToken().toString();
- log.info("ACTION (process="
- + processName
- + ",node="
- + nodeName
- + ",token="
- + tokenName
+ log.info("ACTION (process=" + processName + ",node=" + nodeName + ",token=" + tokenName
+ "): begin");
for (int i = 0; i < 5; i++) {
- log.info("ACTION (process="
- + processName
- + ",node="
- + nodeName
- + ",token="
- + tokenName
+ log.info("ACTION (process=" + processName + ",node=" + nodeName + ",token=" + tokenName
+ "): working...");
Thread.sleep(100);
}
- log.info("ACTION (process="
- + processName
- + ",node="
- + nodeName
- + ",token="
- + tokenName
+ log.info("ACTION (process=" + processName + ",node=" + nodeName + ",token=" + tokenName
+ "): end");
executionContext.leaveNode();
14 years, 8 months
JBoss JBPM SVN: r5596 - in jbpm3/branches/jbpm-3.2-soa/modules/enterprise: src/test/java/org/jbpm/enterprise/console and 1 other directory.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2009-08-31 04:26:10 -0400 (Mon, 31 Aug 2009)
New Revision: 5596
Modified:
jbpm3/branches/jbpm-3.2-soa/modules/enterprise/pom.xml
jbpm3/branches/jbpm-3.2-soa/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java
Log:
make jboss.bind.address available to console availability test
Modified: jbpm3/branches/jbpm-3.2-soa/modules/enterprise/pom.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/enterprise/pom.xml 2009-08-31 07:22:40 UTC (rev 5595)
+++ jbpm3/branches/jbpm-3.2-soa/modules/enterprise/pom.xml 2009-08-31 08:26:10 UTC (rev 5596)
@@ -27,11 +27,6 @@
<relativePath>../../pom.xml</relativePath>
</parent>
- <!-- Properties -->
- <properties>
- <surefire.security.args>-Djava.security.manager -Djava.security.policy=src/test/resources/test.policy</surefire.security.args>
- </properties>
-
<!-- Dependencies -->
<dependencies>
<!-- jBPM Dependencies -->
@@ -57,6 +52,8 @@
<artifactId>hibernate</artifactId>
<scope>provided</scope>
</dependency>
+
+ <!-- Test Dependencies -->
<dependency>
<groupId>org.apache.cactus</groupId>
<artifactId>cactus.core.framework.wrapper.javaEE.14</artifactId>
@@ -84,8 +81,6 @@
<artifactId>jbossall-client</artifactId>
<scope>test</scope>
</dependency>
-
- <!-- Test Dependencies -->
</dependencies>
<!-- Plugins -->
@@ -164,16 +159,24 @@
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
- <argLine>${surefire.security.args}</argLine>
<systemProperties>
<property>
<name>log4j.output.dir</name>
<value>${project.build.directory}</value>
</property>
+ <property>
+ <name>jboss.bind.address</name>
+ <value>${jboss.bind.address}</value>
+ </property>
+ <property>
+ <name>java.security.manager</name>
+ <value/>
+ </property>
+ <property>
+ <name>java.security.policy</name>
+ <value>src/test/resources/test.policy</value>
+ </property>
</systemProperties>
- <excludes>
- <exclude>org/jbpm/enterprise/console/ConsoleAvailabilityTest.java</exclude>
- </excludes>
</configuration>
</plugin>
</plugins>
@@ -260,92 +263,5 @@
</plugins>
</build>
</profile>
-
- <!--
- Name: mysql
- Descr: MySQL Database Setup
- -->
- <profile>
- <id>mysql</id>
- <activation>
- <property>
- <name>database</name>
- <value>mysql</value>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </profile>
-
- <!--
- Name: postgresql
- Descr: PostgreSQL Database Setup
- -->
- <profile>
- <id>postgresql</id>
- <activation>
- <property>
- <name>database</name>
- <value>postgresql</value>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </profile>
-
- <!--
- Name: sybase
- Descr: Sybase Database Setup
- -->
- <profile>
- <id>sybase</id>
- <activation>
- <property>
- <name>database</name>
- <value>sybase</value>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </profile>
-
- <!--
- Name: oracle
- Descr: Oracle Database Setup
- -->
- <profile>
- <id>oracle</id>
- <activation>
- <property>
- <name>database</name>
- <value>oracle</value>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- </dependencies>
- </profile>
-
</profiles>
</project>
Modified: jbpm3/branches/jbpm-3.2-soa/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java 2009-08-31 07:22:40 UTC (rev 5595)
+++ jbpm3/branches/jbpm-3.2-soa/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java 2009-08-31 08:26:10 UTC (rev 5596)
@@ -21,35 +21,28 @@
*/
package org.jbpm.enterprise.console;
-import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
import junit.framework.TestCase;
/**
* @author Heiko.Braun <heiko.braun(a)jboss.com>
*/
-public class ConsoleAvailabilityTest extends TestCase
-{
+public class ConsoleAvailabilityTest extends TestCase {
+
/**
* Verify if the console has been deployed successfully
*/
- public void testConsoleDeployment() throws IOException
- {
+ public void testConsoleDeployment() throws IOException {
String host = "localhost";
int port = 8080;
String bindAddress = System.getProperty("jboss.bind.address");
- if (bindAddress != null)
- {
+ if (bindAddress != null) {
int colonIndex = bindAddress.lastIndexOf(':');
- if (colonIndex != -1)
- {
+ if (colonIndex != -1) {
host = bindAddress.substring(0, colonIndex);
port = Integer.parseInt(bindAddress.substring(colonIndex + 1));
}
@@ -60,45 +53,23 @@
URL url = new URL("http", host, port, "/jbpm-console");
System.out.println("Console URL: " + url);
- List response = doGet(url);
- String status = (String) response.get(0);
- assertEquals(HttpURLConnection.HTTP_OK, Integer.parseInt(status));
+ int responseCode = doGet(url);
+ assertEquals(HttpURLConnection.HTTP_OK, responseCode);
}
/**
* Gets the resource pointed by the given URL.
+ *
* @param url a pointer to a resource
- * @return response data in the following order:
- * <
- * <li>Code</li>
- * <li>Message</li>
- * <li>Body</li>
- * @throws IOException
+ * @return the response code
+ * @throws IOException if an I/O error occurs
*/
- static List doGet(URL url) throws IOException
- {
+ static int doGet(URL url) throws IOException {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- try
- {
- List response = new ArrayList();
- response.add(Integer.toString(connection.getResponseCode()));
- response.add(connection.getResponseMessage());
-
- BufferedReader connReader = new BufferedReader(new InputStreamReader(connection
- .getInputStream()));
- try
- {
- for (String line; (line = connReader.readLine()) != null;)
- response.add(line);
- }
- finally
- {
- connReader.close();
- }
- return response;
+ try {
+ return connection.getResponseCode();
}
- finally
- {
+ finally {
connection.disconnect();
}
}
14 years, 8 months
JBoss JBPM SVN: r5595 - jbpm3/branches/jbpm-3.2-soa/hudson.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2009-08-31 03:22:40 -0400 (Mon, 31 Aug 2009)
New Revision: 5595
Modified:
jbpm3/branches/jbpm-3.2-soa/hudson/profiles.xml.redhat.qa
Log:
switch to new mysql/postgresql hosts
Modified: jbpm3/branches/jbpm-3.2-soa/hudson/profiles.xml.redhat.qa
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/hudson/profiles.xml.redhat.qa 2009-08-31 07:01:35 UTC (rev 5594)
+++ jbpm3/branches/jbpm-3.2-soa/hudson/profiles.xml.redhat.qa 2009-08-31 07:22:40 UTC (rev 5595)
@@ -25,7 +25,7 @@
<jdbc.mssql.username>jbpm</jdbc.mssql.username>
<jdbc.mssql.password>jbpm</jdbc.mssql.password>
- <jdbc.mysql.server>dev02.qa.atl2.redhat.com</jdbc.mysql.server>
+ <jdbc.mysql.server>vmg02.mw.lab.eng.bos.redhat.com</jdbc.mysql.server>
<jdbc.mysql.port>3306</jdbc.mysql.port>
<jdbc.mysql.database>jbpm3</jdbc.mysql.database>
<jdbc.mysql.url>jdbc:mysql://${jdbc.mysql.server}:${jdbc.mysql.port}/${jdbc.mysql.database}</jdbc.mysql.url>
@@ -39,7 +39,7 @@
<jdbc.oracle.username>jbpm3</jdbc.oracle.username>
<jdbc.oracle.password>jbpm3</jdbc.oracle.password>
- <jdbc.postgresql.server>dev01.qa.atl2.redhat.com</jdbc.postgresql.server>
+ <jdbc.postgresql.server>vmg01.mw.lab.eng.bos.redhat.com</jdbc.postgresql.server>
<jdbc.postgresql.port>5432</jdbc.postgresql.port>
<jdbc.postgresql.database>jbpm3</jdbc.postgresql.database>
<jdbc.postgresql.url>jdbc:postgresql://${jdbc.postgresql.server}:${jdbc.postgresql.port}/${jdbc.postgresql.database}</jdbc.postgresql.url>
14 years, 8 months
JBoss JBPM SVN: r5594 - jbpm4/tags.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2009-08-31 03:01:35 -0400 (Mon, 31 Aug 2009)
New Revision: 5594
Added:
jbpm4/tags/jbpm-4.1/
Log:
creating 4.1 release tag
Copied: jbpm4/tags/jbpm-4.1 (from rev 5593, jbpm4/trunk)
14 years, 8 months
JBoss JBPM SVN: r5593 - in jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources: taskinstance and 1 other directories.
by do-not-reply@jboss.org
Author: alex.guizar(a)jboss.com
Date: 2009-08-31 02:55:16 -0400 (Mon, 31 Aug 2009)
New Revision: 5593
Modified:
jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/door/gpd.xml
jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/taskinstance/gpd.xml
jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/websale/jpdl/gpd.xml
Log:
upgrade examples to latest gpd format
Modified: jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/door/gpd.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/door/gpd.xml 2009-08-30 11:54:41 UTC (rev 5592)
+++ jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/door/gpd.xml 2009-08-31 06:55:16 UTC (rev 5593)
@@ -1,36 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
-<process-diagram name="door" width="781" height="626">
+<root-container name="door" width="781" height="626">
<node name="Locked" x="96" y="24" width="140" height="40">
- <transition name="unlock">
+ <edge>
<label x="-34" y="-12"/>
<bendpoint w1="-26" h1="54" w2="-26" h2="-54"/>
- </transition>
+ </edge>
</node>
<node name="Closed" x="96" y="132" width="140" height="40">
- <transition name="lock">
+ <edge>
<label x="5" y="-10"/>
<bendpoint w1="22" h1="-54" w2="22" h2="54"/>
- </transition>
- <transition name="open">
+ </edge>
+ <edge>
<label x="-33" y="-8"/>
<bendpoint w1="-27" h1="55" w2="-27" h2="-53"/>
- </transition>
+ </edge>
</node>
<node name="Open" x="96" y="240" width="140" height="40">
- <transition name="close">
+ <edge>
<label x="7" y="-6"/>
<bendpoint w1="21" h1="-55" w2="21" h2="53"/>
- </transition>
- <transition name="lock">
+ </edge>
+ <edge>
<label x="-20" y="-8"/>
<bendpoint w1="-23" h1="55" w2="-23" h2="-53"/>
- </transition>
+ </edge>
</node>
<node name="Open Locked" x="96" y="348" width="140" height="40">
- <transition name="unlock">
+ <edge>
<label x="5" y="-10"/>
<bendpoint w1="21" h1="-53" w2="21" h2="55"/>
- </transition>
+ </edge>
</node>
-</process-diagram>
+</root-container>
Modified: jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/taskinstance/gpd.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/taskinstance/gpd.xml 2009-08-30 11:54:41 UTC (rev 5592)
+++ jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/taskinstance/gpd.xml 2009-08-31 06:55:16 UTC (rev 5593)
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
-<process-diagram name="CustomTaskInstance" width="774" height="673">
+<root-container name="CustomTaskInstance" width="774" height="673">
<node name="start" x="176" y="65" width="-1" height="-1">
- <transition name="">
+ <edge>
<label x="5" y="-10"/>
- </transition>
+ </edge>
</node>
<node name="end1" x="178" y="349" width="140" height="40"/>
<node name="Review Order" x="177" y="205" width="140" height="40">
- <transition name="">
+ <edge>
<label x="5" y="-10"/>
- </transition>
+ </edge>
</node>
-</process-diagram>
+</root-container>
Modified: jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/websale/jpdl/gpd.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/websale/jpdl/gpd.xml 2009-08-30 11:54:41 UTC (rev 5592)
+++ jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/resources/websale/jpdl/gpd.xml 2009-08-31 06:55:16 UTC (rev 5593)
@@ -1,57 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
-<process-diagram name="websale" width="566" height="541">
+<root-container name="websale" width="566" height="541">
<node name="Create new web sale order" x="250" y="50" width="200" height="40">
- <transition>
+ <edge>
<label x="5" y="-10"/>
- </transition>
+ </edge>
</node>
<node name="Evaluate web order" x="280" y="125" width="140" height="40">
- <transition name="ok">
+ <edge>
<label x="9" y="-10"/>
- </transition>
- <transition name="more info needed">
+ </edge>
+ <edge>
<label x="-44" y="-18"/>
<bendpoint w1="-114" h1="-35" w2="116" h2="-35"/>
- </transition>
+ </edge>
</node>
<node name="Fix web order data" x="50" y="125" width="140" height="40">
- <transition>
+ <edge>
<label x="5" y="-10"/>
<bendpoint w1="109" h1="32" w2="-121" h2="32"/>
- </transition>
+ </edge>
</node>
<node name="salefork" x="250" y="200" width="200" height="25">
- <transition name="payment">
+ <edge>
<label x="12" y="-18"/>
<bendpoint w1="145" h1="31" w2="0" h2="-52"/>
- </transition>
- <transition name="shipping">
+ </edge>
+ <edge>
<label x="10" y="10"/>
<bendpoint w1="-130" h1="34" w2="0" h2="-89"/>
- </transition>
+ </edge>
</node>
<node name="Wait for money" x="425" y="275" width="140" height="40">
- <transition>
+ <edge>
<label x="5" y="-10"/>
- </transition>
+ </edge>
</node>
<node name="update books" x="425" y="350" width="140" height="40">
- <transition>
+ <edge>
<label x="5" y="-10"/>
<bendpoint w1="-1" h1="34" w2="144" h2="-33"/>
- </transition>
+ </edge>
</node>
<node name="ship item" x="150" y="315" width="140" height="40">
- <transition>
+ <edge>
<label x="5" y="-10"/>
<bendpoint w1="-1" h1="74" w2="-131" h2="-28"/>
- </transition>
+ </edge>
</node>
<node name="salejoin" x="250" y="425" width="200" height="25">
- <transition>
+ <edge>
<label x="5" y="-10"/>
- </transition>
+ </edge>
</node>
<node name="end" x="280" y="500" width="140" height="40"/>
-</process-diagram>
+</root-container>
14 years, 8 months
JBoss JBPM SVN: r5592 - in jbpm4/trunk/modules: userguide/src/main/docbook/en/modules and 1 other directory.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2009-08-30 07:54:41 -0400 (Sun, 30 Aug 2009)
New Revision: 5592
Modified:
jbpm4/trunk/modules/distro/src/main/files/readme.html
jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml
Log:
added release notes for 4.1, including db migration instructions. also removed the db migration instructions in the userguide.
Modified: jbpm4/trunk/modules/distro/src/main/files/readme.html
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/readme.html 2009-08-30 10:38:08 UTC (rev 5591)
+++ jbpm4/trunk/modules/distro/src/main/files/readme.html 2009-08-30 11:54:41 UTC (rev 5592)
@@ -39,8 +39,16 @@
<h2>DB Migration</h2>
-<p>A column CLASSNAME_ (String) was added to the JBPM4_VARIABLE table. Please follow the instructions
-in the section Migration in the userguide. Tech details of the update in the jira
+<p>Add column <code>CLASSNAME_</code> to the <code>JBPM4_VARIABLE</code> table.
+The type of the column is dependent on the database and can be found in this table:
+</p>
+<table border="1">
+ <tr><td>Hsqldb</td><td>varchar(255)</td></tr>
+ <tr><td>MySQL</td><td>varchar(255)</td></tr>
+ <tr><td>Oracle</td><td>varchar2(255 char)</td></tr>
+ <tr><td>PostgreSQL</td><td>varchar(255)</td></tr>
+</table>
+<p>Tech details of the update in the jira
issue: <a href="https://jira.jboss.org/jira/browse/JBPM-2474">JBPM-2474</a>
</p>
@@ -53,7 +61,113 @@
</li>
</ul>
-
+<h2> Bug
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2040'>JBPM-2040</a>] - Inconsistent behaviour depending on the ordering of events (fork+end state+join)
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2418'>JBPM-2418</a>] - fix dueDate property in TaskQuery
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2425'>JBPM-2425</a>] - Completing task with nonexistent outcome silently does nothing
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2436'>JBPM-2436</a>] - Mail activity details lost when switching between source and diagram
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2452'>JBPM-2452</a>] - freemarker templating for task forms: outcome (transitions) vs. outcome (result) clash
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2455'>JBPM-2455</a>] - add template attribute to notification and reminder in xsd
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2466'>JBPM-2466</a>] - task-reminder should not use task-notification template when sending mail
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2474'>JBPM-2474</a>] - Process variables of type hibernate-long-id/hibernate-string-id don't work
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2476'>JBPM-2476</a>] - creating new process instance from console fails to set process variables properly
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2486'>JBPM-2486</a>] - jbpm4 user guide : small errors in doc
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2490'>JBPM-2490</a>] - Inconsistency in user's guide: decide or select in DecisionHandler
+</li>
+</ul>
+
+<h2> Feature Request
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-1995'>JBPM-1995</a>] - build script to calculate jBPM DB differences
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2210'>JBPM-2210</a>] - Add support for AS 5.1.x
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2334'>JBPM-2334</a>] - make business calendar customizable and pluggable
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2343'>JBPM-2343</a>] - completeTask with submitting variables
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2479'>JBPM-2479</a>] - Integrate Signavio in distro build
+</li>
+</ul>
+
+<h2> Patch
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2407'>JBPM-2407</a>] - Join multiplicity FIX
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2445'>JBPM-2445</a>] - JBPM4-Spring 1.2 integration problems
+</li>
+</ul>
+
+<h2> Quality Risk
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2446'>JBPM-2446</a>] - Jira freeze
+</li>
+</ul>
+
+<h2> Task
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2301'>JBPM-2301</a>] - add start forms to jpdl and the api
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2316'>JBPM-2316</a>] - review executability of examples in console
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2317'>JBPM-2317</a>] - task forms examples refinement
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2351'>JBPM-2351</a>] - review task forms
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2353'>JBPM-2353</a>] - remove explicit jta transaction demarcation in console and deployer
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2360'>JBPM-2360</a>] - fix deletion of deployments in cluster
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2392'>JBPM-2392</a>] - review duedate in jpdl3 converter
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2402'>JBPM-2402</a>] - verify job executor threads in case of errors
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2408'>JBPM-2408</a>] - fix duplicate schemdoc entries in the distro zip file
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2409'>JBPM-2409</a>] - expand qa capabilities and ci
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2410'>JBPM-2410</a>] - clean up obsolete qa dbs
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2411'>JBPM-2411</a>] - configuration tool
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2419'>JBPM-2419</a>] - change Job.dueDate in Job.duedate
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2432'>JBPM-2432</a>] - problem displaying process image in console
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2433'>JBPM-2433</a>] - Review existing BI reports and enhance/add existing/new reports
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2435'>JBPM-2435</a>] - verify online presence of xsd's
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2437'>JBPM-2437</a>] - add start task form capability to console
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2438'>JBPM-2438</a>] - move settings to the bottom
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2439'>JBPM-2439</a>] - make task lists the home page
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2440'>JBPM-2440</a>] - define subset of jpdl schema for tooling
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2480'>JBPM-2480</a>] - Create demo for JBW
+</li>
+<li>[<a href='https://jira.jboss.org/jira/browse/JBPM-2498'>JBPM-2498</a>] - improve exception message when execution not found
+</li>
+</ul>
+
<h1>Release Notes for jBPM 4.0 (GA)</h1>
<h2>Known Issues
Modified: jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml
===================================================================
--- jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml 2009-08-30 10:38:08 UTC (rev 5591)
+++ jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml 2009-08-30 11:54:41 UTC (rev 5592)
@@ -88,6 +88,10 @@
</tbody>
</tgroup>
</table>
+ <para>Known limitation: Currently, the timeout of the console is too tight for
+ the reporting to initialize. So the first time when you access the reporting
+ the request will timeout and the console crashes. Logging out and login again works around
+ this problem. It's being addressed as issue <ulink url="https://jira.jboss.org/jira/browse/JBPM-2508">JBPM-2508</ulink> </para>
</section>
<section id="installscripts">
@@ -187,8 +191,10 @@
</itemizedlist>
</section>
+ <!--
<section id="databasemigration">
<title>Database migration</title>
+
<para>jBPM is able to generate SQL DDL scripts to upgrade the database schema from any past version
starting from 4.0. To enact this capability, first check out the project from our SVN repository as
described in the Wiki page <ulink url="http://www.jboss.org/community/wiki/jbpm4buildingfromsource">
@@ -221,6 +227,7 @@
belongs to the Unix family (including Linux and Mac OS X) and provides the diff command.</listitem>
</itemizedlist>
</section>
+ -->
<section id="graphicalprocessdesigner">
<title>Graphical Process Designer (GPD)</title>
14 years, 8 months
JBoss JBPM SVN: r5591 - in jbpm4/trunk: modules/distro/src/main/files/install and 7 other directories.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2009-08-30 06:38:08 -0400 (Sun, 30 Aug 2009)
New Revision: 5591
Removed:
jbpm4/trunk/modules/test-cactus/src/test/java/org/jbpm/test/AllIntegrationTests.java
Modified:
jbpm4/trunk/modules/distro/src/main/files/examples/build.xml
jbpm4/trunk/modules/distro/src/main/files/install/build.xml
jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/config.jboss5/deploy/jbpm/jbpm-service.sar/jbpm-service-jboss-beans.xml
jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/datasources/jbpm-hsqldb-ds.xml
jbpm4/trunk/modules/integration/spi/src/main/java/org/jbpm/integration/spi/JBPMService.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/AcquireJobsCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/DispatcherThread.java
jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml
jbpm4/trunk/qa/build.xml
Log:
fixed job executor exceptions during startup of jboss
Modified: jbpm4/trunk/modules/distro/src/main/files/examples/build.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/examples/build.xml 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/distro/src/main/files/examples/build.xml 2009-08-30 10:38:08 UTC (rev 5591)
@@ -43,7 +43,7 @@
<copy file="${jbpm.home}/install/src/cfg/hibernate/jdbc/${database}.hibernate.cfg.xml"
tofile="${jbpm.home}/examples/target/classes/jbpm.hibernate.cfg.xml"
overwrite="true">
- <filterset filtersfile="${jbpm.home}/install/src/jdbc/${database}.properties" />
+ <filterset filtersfile="${jbpm.home}/install/jdbc/${database}.properties" />
</copy>
<jar destfile="${jbpm.home}/examples/target/examples.bar">
<fileset dir="${jbpm.home}/examples/src">
Modified: jbpm4/trunk/modules/distro/src/main/files/install/build.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/install/build.xml 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/distro/src/main/files/install/build.xml 2009-08-30 10:38:08 UTC (rev 5591)
@@ -6,11 +6,11 @@
<property file="${user.home}/.jbpm4/build.properties" />
<!-- USER CUSTOMIZABLE PROPERTIES -->
- <property name="database" value="hsqldb" /> <!-- hsqldb | mysql | oracle | postgresql} -->
+ <property name="database" value="hsqldb" /> <!-- {hsqldb | mysql | oracle | postgresql} -->
<echo message="database......... ${database}" />
- <property name="tx" value="standalone" /> <!-- standalone | jta | spring} -->
+ <property name="tx" value="standalone" /> <!-- {standalone | jta | spring} -->
<echo message="tx............... ${tx}" />
- <property name="mail.smtp.host" value="localhost" />
+ <property name="mail.smtp.host" value="localhost" />
<echo message="mail.smtp.host... ${mail.smtp.host}" />
<!-- INTERNAL PROPERTY DEFAULTS -->
@@ -24,10 +24,10 @@
<property name="mail.cfg" value="default" />
<property name="jdbc.properties.dir" value="${jbpm.home}/install/jdbc" />
- <property file="${jdbc.properties.dir}/${database}.properties" />
-
- <property name="examples.file" value="${jbpm.home}/examples/target/examples.jar"/>
+ <property file="${jdbc.properties.dir}/${database}.properties" />
+ <property name="examples.file" value="${jbpm.home}/examples/target/examples.jar"/>
+
<property name="tomcat.version" value="6.0.20" />
<property name="tomcat.parent.dir" value="${jbpm.home}" />
<property name="tomcat.home" value="${tomcat.parent.dir}/apache-tomcat-${tomcat.version}" />
@@ -35,9 +35,9 @@
<property name="tomcat.distro.dir" value="downloads" />
<property name="tomcat.distro.url" value="http://www.apache.org/dist/tomcat/tomcat-6/v${tomcat.version}/bin/${tomca..." />
<property name="tomcat.distro.path" value="${tomcat.distro.dir}/${tomcat.filename}" />
- <property name="tomcat.lib.dir" value="${tomcat.home}/lib" />
- <property name="tomcat.webapps.dir" value="${tomcat.home}/webapps" />
-
+ <property name="tomcat.lib.dir" value="${tomcat.home}/lib" />
+ <property name="tomcat.webapps.dir" value="${tomcat.home}/webapps" />
+
<property name="hsqldb.server.install.dir" value="${jbpm.home}/hsqldb-server"/>
<property name="hsqldb.server.source.dir" value="${jbpm.home}/install/src/hsqldb-server" />
@@ -51,16 +51,16 @@
<property name="jboss.server.configuration" value="default" />
<property name="jboss.server.config.dir" value="${jboss.home}/server/${jboss.server.configuration}" />
<property name="jboss.server.data.dir" value="${jboss.home}/server/${jboss.server.configuration}/data" />
- <property name="jboss.server.deploy.dir" value="${jboss.home}/server/${jboss.server.configuration}/deploy" />
+ <property name="jboss.server.deploy.dir" value="${jboss.home}/server/${jboss.server.configuration}/deploy" />
- <property name="signavio.war.file.name" value="jbpmeditor.war" />
- <property name="signavio.src.dir" value="${jbpm.home}/install/src/signavio" />
- <property name="signavio.repo.dir.name" value="signavio-repository" />
- <property name="signavio.repo.dir" value="${jbpm.home}/${signavio.repo.dir.name}"/>
-
- <dirname property="current.dir" file="../jbpm.jar" />
- <echo message="current dir = ${current.dir}" />
-
+ <property name="signavio.war.file.name" value="jbpmeditor.war" />
+ <property name="signavio.src.dir" value="${jbpm.home}/install/src/signavio" />
+ <property name="signavio.repo.dir.name" value="signavio-repository" />
+ <property name="signavio.repo.dir" value="${jbpm.home}/${signavio.repo.dir.name}"/>
+
+ <dirname property="current.dir" file="../jbpm.jar" />
+ <echo message="current dir = ${current.dir}" />
+
<!-- GENERAL CONDITIONS -->
<condition property="is.jboss.distro.available">
<available file="${jboss.distro.path}" />
@@ -74,7 +74,10 @@
<os family="mac" />
</or>
</condition>
-
+ <condition property="hsqldb.needed">
+ <equals arg1="${database}" arg2="hsqldb" />
+ </condition>
+
<!-- OS CONDITIONS -->
<condition property="isWindows">
<os family="windows"/>
@@ -85,7 +88,7 @@
</not>
</condition>
- <condition property="is.jboss.500">
+ <condition property="is.jboss.500">
<equals arg1="${jboss.version}" arg2="5.0.0.GA"/>
</condition>
@@ -142,25 +145,27 @@
description="installs jboss, installs jbpm into jboss, starts jboss, creates the jBPM DB schema, deploys examples, loads example identities, installs and starts eclipse">
<antcall target="internal.enable.jboss.debug.jboss500" />
<antcall target="internal.enable.jboss.debug.jboss510" />
+ <antcall target="internal.install.and.start.hsqldb.if.needed" />
+ <antcall target="create.jbpm.schema" />
<antcall target="start.jboss" />
- <antcall target="create.jbpm.schema" />
<antcall target="install.examples.into.jboss" />
<antcall target="load.example.identities" />
<antcall target="install.eclipse" />
<antcall target="start.eclipse" />
</target>
+ <!-- ### DEMO TEARDOWN JBOSS ##################################################### -->
<target name="demo.teardown.jboss"
description="drops the jbpm db schema and stops jboss">
<ant antfile="${jbpm.home}/db/build.xml" target="drop.jbpm.schema" />
<antcall target="stop.jboss" />
</target>
-
+
<!-- ### CLEAN CONFIGURATION DIR ########################################### -->
<target name="clean.cfg.dir" description="Deletes the ${cfg.dest.dir}">
<delete dir="${cfg.dest.dir}" />
</target>
-
+
<!-- ### CREATE CONFIGURATION ########################################### -->
<target name="create.cfg" description="Creates a configuration in ${cfg.dest.dir}">
<mkdir dir="${cfg.dest.dir}" />
@@ -169,16 +174,16 @@
overwrite="true" />
<copy tofile="${cfg.dest.dir}/jbpm.hibernate.cfg.xml"
file="${install.src.dir}/cfg/hibernate/${hibernate.connection.type}/${database}.hibernate.cfg.xml"
- overwrite="true">
+ overwrite="true">
<filterset filtersfile="${jdbc.properties.dir}/${database}.properties" />
</copy>
<copy todir="${cfg.dest.dir}"
- overwrite="true">
+ overwrite="true">
<fileset dir="${install.src.dir}/cfg/logging/${logging}" />
</copy>
<copy tofile="${cfg.dest.dir}/jbpm.mail.properties"
file="${install.src.dir}/cfg/mail/jbpm.mail.${mail.cfg}.properties"
- overwrite="true">
+ overwrite="true">
<filterset>
<filter token="mail.smtp.host" value="${mail.smtp.host}" />
</filterset>
@@ -291,11 +296,11 @@
<include name="gwt-console-rpc.jar" />
</fileset>
</copy>
-
- <!-- Copy Signavio war into /webapps
- commented cause it doesn't seem to run on jdk 5
- <antcall target="install.signavio.into.jboss" />
- -->
+
+ <!-- Copy Signavio war into /webapps
+ commented cause it doesn't seem to run on jdk 5
+ <antcall target="install.signavio.into.jboss" />
+ -->
<copy todir="${jboss.server.config.dir}/deploy/jbpm" overwrite="true">
<fileset dir="${jbpm.home}/lib">
@@ -352,15 +357,15 @@
<property name="container.lib.dir" value="${jboss.server.config.dir}/deploy/jbpm/jbpm-service.sar" />
<antcall target="internal.copy.database.driver" />
</target>
-
- <!-- ### INSTALL EXAMPLES INTO JBOSS ################################################ -->
- <target name="install.examples.into.jboss">
- <ant antfile="${jbpm.home}/examples/build.xml" target="create.and.deploy.examples" />
- <mkdir dir="${jboss.server.config.dir}/deploy/jbpm/userlibs" />
- <copy file="${examples.file}"
- todir="${jboss.server.config.dir}/deploy/jbpm/userlibs"
- overwrite="true" />
- </target>
+
+ <!-- ### INSTALL EXAMPLES INTO JBOSS ################################################ -->
+ <target name="install.examples.into.jboss">
+ <ant antfile="${jbpm.home}/examples/build.xml" target="create.and.deploy.examples" />
+ <mkdir dir="${jboss.server.config.dir}/deploy/jbpm/userlibs" />
+ <copy file="${examples.file}"
+ todir="${jboss.server.config.dir}/deploy/jbpm/userlibs"
+ overwrite="true" />
+ </target>
<!-- ### START JBOSS ################################################### -->
<target name="start.jboss"
@@ -386,24 +391,26 @@
<arg line="-S"/>
</exec>
</target>
-
- <!-- ### TOMCAT DEMO SETUP ################################################ -->
- <target name="demo.setup.tomcat"
- depends="delete.tomcat, install.tomcat, install.jbpm.into.tomcat"
- description="installs tomcat, installs jbpm into tomcat, starts tomcat, creates the jBPM DB schema, deploys examples, loads example identities, installs and starts eclipse">
-
- <condition property="hsqldb.needed">
- <equals arg1="${database}" arg2="hsqldb" />
- </condition>
- <antcall target="internal.install.and.start.hqsldb.if.needed" />
- <antcall target="create.jbpm.schema" />
- <antcall target="install.examples.into.tomcat" />
- <antcall target="install.example.identities.into.tomcat" />
- <antcall target="start.tomcat" />
- <antcall target="install.eclipse" />
- <antcall target="start.eclipse" />
- </target>
+
+ <!-- ### DEMO SETUP TOMCAT ################################################ -->
+ <target name="demo.setup.tomcat"
+ depends="delete.tomcat, install.tomcat, install.jbpm.into.tomcat"
+ description="installs tomcat, installs jbpm into tomcat, starts tomcat, creates the jBPM DB schema, deploys examples, loads example identities, installs and starts eclipse">
+ <antcall target="internal.install.and.start.hsqldb.if.needed" />
+ <antcall target="create.jbpm.schema" />
+ <antcall target="install.examples.into.tomcat" />
+ <antcall target="install.example.identities.into.tomcat" />
+ <antcall target="start.tomcat" />
+ <antcall target="install.eclipse" />
+ <antcall target="start.eclipse" />
+ </target>
+ <!-- ### DEMO TEARDOWN TOMCAT ################################################ -->
+ <target name="demo.teardown.tomcat"
+ depends="stop.tomcat, internal.stop.hsqldb.server.if.needed"
+ description="stops tomcat and then the hsqldb server if needed">
+ </target>
+
<!-- ### REINSTALL TOMCAT ################################################ -->
<target name="reinstall.tomcat"
depends="delete.tomcat, install.tomcat"
@@ -424,16 +431,16 @@
depends="get.tomcat"
description="Downloads tomcat to ${tomcat.distro.dir} if its not available and then unzips tomcat">
<unzip src="${tomcat.distro.path}" dest="${tomcat.parent.dir}" />
- <antcall target="install.tomcat.linuxandmac" />
+ <antcall target="install.tomcat.linuxandmac" />
</target>
- <target name="install.tomcat.linuxandmac" if="is.linux.unix.or.mac">
- <chmod perm="a+x" os="Linux, Mac OS X">
+ <target name="install.tomcat.linuxandmac" if="is.linux.unix.or.mac">
+ <chmod perm="a+x" os="Linux, Mac OS X">
<fileset dir="${tomcat.home}/bin">
<include name="*.sh" />
</fileset>
</chmod>
- </target>
+ </target>
<!-- ### GET TOMCAT ###################################################### -->
<target name="get.tomcat"
@@ -445,10 +452,10 @@
<!-- ### INSTALL JBPM INTO TOMCAT ####################################### -->
<target name="install.jbpm.into.tomcat"
- depends="create.cfg"
+ depends="create.cfg"
description="Installs jBPM into tomcat">
-
- <property name="is.tomcat" value="true" />
+
+ <property name="is.tomcat" value="true" />
<!-- create the jbpm configuration jar file and drop in /lib -->
<jar destfile="${tomcat.home}/lib/jbpm.cfg.jar">
@@ -457,7 +464,7 @@
</fileset>
</jar>
- <!-- Copy jBPM third party libs into /lib -->
+ <!-- Copy jBPM third party libs into /lib -->
<copy todir="${tomcat.home}/lib" overwrite="true">
<fileset dir="${jbpm.home}">
<include name="jbpm.jar" />
@@ -466,18 +473,18 @@
<include name="activation.jar" />
<include name="antlr.jar" />
<include name="commons-collections.jar" />
- <include name="commons-logging.jar" />
+ <include name="commons-logging.jar" />
<include name="dom4j.jar" />
<include name="freemarker.jar" />
<include name="hibernate-core.jar" />
<include name="hibernate-cglib-repack.jar" />
<include name="javassist.jar" />
- <include name="jbpm-spi.jar" />
- <include name="jbpm-tomcat6.jar" />
+ <include name="jbpm-spi.jar" />
+ <include name="jbpm-tomcat6.jar" />
<include name="jta.jar" />
<include name="juel*.jar" />
<include name="livetribe-jsr223.jar" />
- <include name="log4j.jar" />
+ <include name="log4j.jar" />
<include name="mail.jar" />
<include name="slf4j-api.jar" />
<include name="slf4j-jdk14.jar" />
@@ -489,22 +496,23 @@
</fileset>
</copy>
- <!-- Copy jbpm-console wars into /webapps -->
+ <!-- Copy jbpm-console wars into /webapps -->
<copy todir="${tomcat.home}/webapps" overwrite="true">
<fileset dir="${jbpm.home}/lib">
<include name="gwt-console-jbpm.war" />
<include name="gwt-console-server-jbpm.war" />
</fileset>
</copy>
-
- <!-- Copy Signavio war into /webapps -->
- <antcall target="install.signavio.into.tomcat" />
-
- <!-- Rename wars (the context root is configured by WEB-INF/jboss-web.xml,
- which is neglected by Tomcat -->
- <move file="${tomcat.home}/webapps/gwt-console-jbpm.war" tofile="${tomcat.home}/webapps/jbpm-console.war" />
- <move file="${tomcat.home}/webapps/gwt-console-server-jbpm.war" tofile="${tomcat.home}/webapps/gwt-console-server.war" />
+ <!-- Copy Signavio war into /webapps
+ <antcall target="install.signavio.into.tomcat" />
+ -->
+
+ <!-- Rename wars (the context root is configured by WEB-INF/jboss-web.xml,
+ which is neglected by Tomcat -->
+ <move file="${tomcat.home}/webapps/gwt-console-jbpm.war" tofile="${tomcat.home}/webapps/jbpm-console.war" />
+ <move file="${tomcat.home}/webapps/gwt-console-server-jbpm.war" tofile="${tomcat.home}/webapps/gwt-console-server.war" />
+
<!-- reporting -->
<property name="birt.dir" value="${tomcat.home}/birt"/>
<mkdir dir="${birt.dir}"/>
@@ -514,33 +522,33 @@
<!-- copy database driver -->
<property name="database.driver.destination.dir" value="${tomcat.home}/lib" />
<antcall target="internal.copy.database.driver" />
-
+
</target>
-
- <!-- ### INSTALL EXAMPLES INTO TOMCAT ################################################ -->
- <target name="install.examples.into.tomcat"
- description="deploys all the example processes">
- <ant antfile="${jbpm.home}/examples/build.xml" target="create.and.deploy.examples" />
- <copy file="${examples.file}"
- todir="${tomcat.home}/lib"
- overwrite="true" />
- </target>
-
- <!-- ### INSTALL HSQLDB SERVER ################################################ -->
+
+ <!-- ### INSTALL EXAMPLES INTO TOMCAT ################################################ -->
+ <target name="install.examples.into.tomcat"
+ description="deploys all the example processes">
+ <ant antfile="${jbpm.home}/examples/build.xml" target="create.and.deploy.examples" />
+ <copy file="${examples.file}"
+ todir="${tomcat.home}/lib"
+ overwrite="true" />
+ </target>
+
+ <!-- ### INSTALL HSQLDB SERVER ################################################ -->
<target name="install.hsqldb.server">
- <delete dir="${hsqldb.server.install.dir}" /> <!-- Also deletes old data -->
- <mkdir dir="${hsqldb.server.install.dir}"/>
- <copy file="${jbpm.home}/lib/hsqldb.jar" todir="${hsqldb.server.install.dir}" />
- <copy todir="${hsqldb.server.install.dir}">
- <fileset dir="${hsqldb.server.source.dir}" />
- </copy>
- <chmod perm="a+x" os="Linux, Mac OS X">
- <fileset dir="${hsqldb.server.install.dir}">
- <include name="*.sh"/>
- </fileset>
- </chmod>
+ <delete dir="${hsqldb.server.install.dir}" /> <!-- Also deletes old data -->
+ <mkdir dir="${hsqldb.server.install.dir}"/>
+ <copy file="${jbpm.home}/lib/hsqldb.jar" todir="${hsqldb.server.install.dir}" />
+ <copy todir="${hsqldb.server.install.dir}">
+ <fileset dir="${hsqldb.server.source.dir}" />
+ </copy>
+ <chmod perm="a+x" os="Linux, Mac OS X">
+ <fileset dir="${hsqldb.server.install.dir}">
+ <include name="*.sh"/>
+ </fileset>
+ </chmod>
</target>
-
+
<!-- ### START HSQLDB SERVER ################################################ -->
<target name="start.hsqldb.server" >
<taskdef name="start-hsqldb-server" classname="org.jbpm.pvm.internal.ant.StartHsqldbServerTask">
@@ -549,32 +557,26 @@
<include name="jbpm.jar"/>
</fileset>
</classpath>
- </taskdef>
- <start-hsqldb-server hsqldbServerHome="${hsqldb.server.install.dir}" />
+ </taskdef>
+ <start-hsqldb-server hsqldbServerHome="${hsqldb.server.install.dir}" />
</target>
-
+
<!-- ### SHUTDOWN HSQLDB SERVER ################################################ -->
- <target name="shutdown.hsqldb.server">
+ <target name="stop.hsqldb.server">
<sql driver="${jdbc.driver}"
- password="${jdbc.password}"
- url="${jdbc.url}"
- userid="${jdbc.username}"
- autocommit="true"
- src="${hsqldb.server.install.dir}/shutdown.sql">
- <classpath>
- <fileset dir="${hsqldb.server.install.dir}">
- <include name="hsqldb.jar"/>
- </fileset>
- </classpath>
+ password="${jdbc.password}"
+ url="${jdbc.url}"
+ userid="${jdbc.username}"
+ autocommit="true"
+ src="${hsqldb.server.install.dir}/shutdown.sql">
+ <classpath>
+ <fileset dir="${hsqldb.server.install.dir}">
+ <include name="hsqldb.jar"/>
+ </fileset>
+ </classpath>
</sql>
</target>
-
- <target name="internal.install.and.start.hqsldb.if.needed" if="hsqldb.needed">
- <antcall target="install.hsqldb.server" />
- <antcall target="start.hsqldb.server" />
- </target>
-
-
+
<!-- ### START TOMCAT ################################################### -->
<target name="start.tomcat"
description="Starts Tomcat and waits till it is booted, then lets Tomcat run in the background">
@@ -602,11 +604,11 @@
<arg line="stop"/>
</exec>
</target>
-
+
<!-- ### CREATE JBPM SCHEMA ############################################# -->
<target name="create.jbpm.schema"
description="creates the jbpm tables in the database">
- <echo message="creating jbpm schema in db ${jdbc.url}" />
+ <echo message="creating jbpm schema in db ${jdbc.url}" />
<sql driver="${jdbc.driver}"
url="${jdbc.url}"
userid="${jdbc.username}"
@@ -656,14 +658,14 @@
</classpath>
</sql>
</target>
-
- <!-- ### INSTALL EXAMPLE IDENTITIES INTO TOMCAT ######################################## -->
+
+ <!-- ### INSTALL EXAMPLE IDENTITIES INTO TOMCAT ######################################## -->
<target name="install.example.identities.into.tomcat" depends="load.example.identities">
- <copy file="${install.src.dir}/tomcat/server.xml"
- tofile="${tomcat.home}/conf/server.xml"
- overwrite="true">
- <filterset filtersfile="${jdbc.properties.dir}/${database}.properties" />
- </copy>
+ <copy file="${install.src.dir}/tomcat/server.xml"
+ tofile="${tomcat.home}/conf/server.xml"
+ overwrite="true">
+ <filterset filtersfile="${jdbc.properties.dir}/${database}.properties" />
+ </copy>
</target>
<!-- ### START HSQLDB DATABASE MGR ##################################### -->
@@ -679,27 +681,6 @@
</java>
</target>
- <!-- ### SET SIGNAVIO REPO DIR ##################################### -->
- <target name="internal.set.signavio.repo.dir">
- <mkdir dir="${jbpm.home}/signavio-repository" />
-
- <!-- unzip the signavio war -->
- <property name="temp.signavio.unzip" value="${jbpm.home}/temp-signavio-unzip" />
- <delete dir="${temp.signavio.unzip}" />
- <mkdir dir="${temp.signavio.unzip}" />
- <unzip src="${jbpm.home}/install/src/signavio/${signavio.war.file.name}" dest="${temp.signavio.unzip}" />
-
- <!-- replace the repo dir in he unzipped WEB-INF/web.xml -->
- <replaceregexp file="${temp.signavio.unzip}/WEB-INF/web.xml" flags="s"
- match="<param-name>fileSystemRootDirectory</param-name>.*?<param-value>.*?</param-value>"
- replace="<param-name>fileSystemRootDirectory</param-name><param-value>${current.dir}/${signavio.repo.dir.name}</param-value>"/>
-
- <!-- zip it up again and copy it back to /lib-->
- <zip destfile="${temp.signavio.unzip}/${signavio.war.file.name}" basedir="${temp.signavio.unzip}" />
- <copy file="${temp.signavio.unzip}/${signavio.war.file.name}" todir="${signavio.src.dir}" overwrite="true"/>
- <delete dir="${temp.signavio.unzip}" />
- </target>
-
<!-- ### INSTALL ECLIPSE ################################################ -->
<target name="install.eclipse"
depends="get.eclipse"
@@ -737,8 +718,28 @@
</exec>
</target>
- <!-- ### INTERNAL TARGETS ################################################## -->
+ <target name="install.signavio.into.jboss" depends="internal.set.signavio.repo.dir">
+ <!-- Current version of Signavio needs to be unpacked in /deploy to work correctly -->
+ <unzip src="${signavio.src.dir}/${signavio.war.file.name}" dest="${jboss.server.deploy.dir}/${signavio.war.file.name}" />
+ </target>
+ <target name="install.signavio.into.tomcat" depends="internal.set.signavio.repo.dir">
+ <copy file="${signavio.src.dir}/${signavio.war.file.name}" todir="${tomcat.webapps.dir}"/>
+ </target>
+
+ <!-- ######################## -->
+ <!-- ### INTERNAL TARGETS ### -->
+ <!-- ######################## -->
+
+ <target name="internal.install.and.start.hsqldb.if.needed" if="hsqldb.needed">
+ <antcall target="install.hsqldb.server" />
+ <antcall target="start.hsqldb.server" />
+ </target>
+
+ <target name="internal.stop.hsqldb.server.if.needed" if="hsqldb.needed">
+ <antcall target="stop.hsqldb.server" />
+ </target>
+
<target name="internal.enable.jboss.debug.jboss500" if="is.jboss.500">
<echo message="enabling debug on ${jboss.home}" />
<replace file="${jboss.home}/bin/run.bat"
@@ -785,14 +786,25 @@
<echo message="Copying database driver ${database.driver} to ${database.driver.destination.dir}" />
<copy file="${jbpm.home}/lib/${database.driver}" todir="${database.driver.destination.dir}" />
</target>
-
- <target name="install.signavio.into.jboss" depends="internal.set.signavio.repo.dir">
- <!-- Current version of Signavio needs to be unpacked in /deploy to work correctly -->
- <unzip src="${signavio.src.dir}/${signavio.war.file.name}" dest="${jboss.server.deploy.dir}/${signavio.war.file.name}" />
- </target>
- <target name="install.signavio.into.tomcat" depends="internal.set.signavio.repo.dir">
- <copy file="${signavio.src.dir}/${signavio.war.file.name}" todir="${tomcat.webapps.dir}"/>
+ <target name="internal.set.signavio.repo.dir">
+ <mkdir dir="${jbpm.home}/signavio-repository" />
+
+ <!-- unzip the signavio war -->
+ <property name="temp.signavio.unzip" value="${jbpm.home}/temp-signavio-unzip" />
+ <delete dir="${temp.signavio.unzip}" />
+ <mkdir dir="${temp.signavio.unzip}" />
+ <unzip src="${jbpm.home}/install/src/signavio/${signavio.war.file.name}" dest="${temp.signavio.unzip}" />
+
+ <!-- replace the repo dir in he unzipped WEB-INF/web.xml -->
+ <replaceregexp file="${temp.signavio.unzip}/WEB-INF/web.xml" flags="s"
+ match="<param-name>fileSystemRootDirectory</param-name>.*?<param-value>.*?</param-value>"
+ replace="<param-name>fileSystemRootDirectory</param-name><param-value>${current.dir}/${signavio.repo.dir.name}</param-value>"/>
+
+ <!-- zip it up again and copy it back to /lib-->
+ <zip destfile="${temp.signavio.unzip}/${signavio.war.file.name}" basedir="${temp.signavio.unzip}" />
+ <copy file="${temp.signavio.unzip}/${signavio.war.file.name}" todir="${signavio.src.dir}" overwrite="true"/>
+ <delete dir="${temp.signavio.unzip}" />
</target>
<target name="internal.install.eclipse.windows" if="isWindows">
Modified: jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/config.jboss5/deploy/jbpm/jbpm-service.sar/jbpm-service-jboss-beans.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/config.jboss5/deploy/jbpm/jbpm-service.sar/jbpm-service-jboss-beans.xml 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/config.jboss5/deploy/jbpm/jbpm-service.sar/jbpm-service-jboss-beans.xml 2009-08-30 10:38:08 UTC (rev 5591)
@@ -8,6 +8,9 @@
<bean name="org.jbpm:service=ProcessEngine"
class="org.jbpm.integration.spi.JBPMService">
<property name="serverConfig"><inject bean="org.jbpm:service=ServerConfig"/></property>
+ <property name="dataSource">
+ <inject bean="jboss.jca:name=JbpmDS,service=DataSourceBinding" />
+ </property>
</bean>
<!--
Modified: jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/datasources/jbpm-hsqldb-ds.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/datasources/jbpm-hsqldb-ds.xml 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/datasources/jbpm-hsqldb-ds.xml 2009-08-30 10:38:08 UTC (rev 5591)
@@ -24,14 +24,6 @@
<metadata>
<type-mapping>Hypersonic SQL</type-mapping>
</metadata>
-
- <!-- ensure the datasource is not initialized before the database itself -->
- <depends>jboss:service=Hypersonic,database=jbpm4DB</depends>
</local-tx-datasource>
- <mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic,database=jbpm4DB">
- <attribute name="Database">jbpm4DB</attribute>
- <attribute name="InProcessMode">false</attribute>
- </mbean>
-
</datasources>
Modified: jbpm4/trunk/modules/integration/spi/src/main/java/org/jbpm/integration/spi/JBPMService.java
===================================================================
--- jbpm4/trunk/modules/integration/spi/src/main/java/org/jbpm/integration/spi/JBPMService.java 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/integration/spi/src/main/java/org/jbpm/integration/spi/JBPMService.java 2009-08-30 10:38:08 UTC (rev 5591)
@@ -21,13 +21,13 @@
*/
package org.jbpm.integration.spi;
+import javax.naming.InitialContext;
+
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.integration.spi.mgmt.ServerConfig;
import org.jbpm.internal.log.Log;
-import javax.naming.InitialContext;
-
/**
* @author Heiko.Braun <heiko.braun(a)jboss.com>
*/
@@ -87,4 +87,7 @@
{
this.jndiName = jndiName;
}
+
+ public void setDataSource(Object dataSource) {
+ }
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/AcquireJobsCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/AcquireJobsCmd.java 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/AcquireJobsCmd.java 2009-08-30 10:38:08 UTC (rev 5591)
@@ -54,35 +54,45 @@
public Collection<Long> execute(Environment environment) throws Exception {
Collection<Long> acquiredJobDbids = new ArrayList<Long>();
- Collection<JobImpl<?>> acquiredJobs = new ArrayList<JobImpl<?>>();
-
- DbSession dbSession = environment.get(DbSession.class);
- log.debug("start querying first acquirable job...");
+ try {
+ Collection<JobImpl<?>> acquiredJobs = new ArrayList<JobImpl<?>>();
+
+ DbSession dbSession = environment.get(DbSession.class);
+ log.debug("start querying first acquirable job...");
- JobImpl<?> job = dbSession.findFirstAcquirableJob();
+ JobImpl<?> job = dbSession.findFirstAcquirableJob();
- if (job!=null) {
- if (job.isExclusive()) {
- log.trace("exclusive acquirable job found ("+job+"). querying for other exclusive jobs to lock them all in one tx...");
- List<JobImpl<?>> otherExclusiveJobs = dbSession.findExclusiveJobs(job.getProcessInstance());
- acquiredJobs.addAll(otherExclusiveJobs);
+ if (job!=null) {
+ if (job.isExclusive()) {
+ log.trace("exclusive acquirable job found ("+job+"). querying for other exclusive jobs to lock them all in one tx...");
+ List<JobImpl<?>> otherExclusiveJobs = dbSession.findExclusiveJobs(job.getProcessInstance());
+ acquiredJobs.addAll(otherExclusiveJobs);
+ } else {
+ acquiredJobs.add(job);
+ }
+
+ for (JobImpl<?> acquiredJob: acquiredJobs) {
+ long lockExpirationTime = System.currentTimeMillis()+jobExecutor.getLockMillis();
+ log.trace("trying to obtain a lock for '"+acquiredJob+"' with exp "+timeFormat.format(new Date(lockExpirationTime)));
+ acquiredJob.acquire(jobExecutor.getName(), new Date(lockExpirationTime));
+ acquiredJobDbids.add(acquiredJob.getDbid());
+ }
+
} else {
- acquiredJobs.add(job);
+ log.trace("no acquirable jobs in job table");
}
-
- for (JobImpl<?> acquiredJob: acquiredJobs) {
- long lockExpirationTime = System.currentTimeMillis()+jobExecutor.getLockMillis();
- log.trace("trying to obtain a lock for '"+acquiredJob+"' with exp "+timeFormat.format(new Date(lockExpirationTime)));
- acquiredJob.acquire(jobExecutor.getName(), new Date(lockExpirationTime));
- acquiredJobDbids.add(acquiredJob.getDbid());
+
+ log.debug("locking jobs "+acquiredJobDbids);
+
+ } catch (Exception e) {
+ // if jboss is still booting exceptions that are due to improper
+ // dependency configuration can be swallowed
+ // https://jira.jboss.org/jira/browse/JBPM-2501
+ if (e.getMessage().indexOf("JbpmDS not bound")==-1) {
+ throw e;
}
-
- } else {
- log.trace("no acquirable jobs in job table");
}
- log.debug("locking jobs "+acquiredJobDbids);
-
return acquiredJobDbids;
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/DispatcherThread.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/DispatcherThread.java 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/jobexecutor/DispatcherThread.java 2009-08-30 10:38:08 UTC (rev 5591)
@@ -90,7 +90,12 @@
} catch (InterruptedException e) {
log.info((isActive ? "active" : "inactive") + " job dispatcher thread '" + getName() + "' got interrupted");
} catch (Exception e) {
- log.error("exception in job executor thread. waiting " + currentIdleInterval + " milliseconds", e);
+ // the exception doesn't have to be logged if jboss is still booting
+ // this should be replaced with proper dependency configuration
+ // https://jira.jboss.org/jira/browse/JBPM-2501
+ if (e.getMessage().indexOf("couldn't lookup 'UserTransaction' from jndi: UserTransaction not bound: UserTransaction not bound")==-1) {
+ log.error("exception in job executor thread. waiting " + currentIdleInterval + " milliseconds", e);
+ }
try {
synchronized (semaphore) {
semaphore.wait(currentIdleInterval);
Deleted: jbpm4/trunk/modules/test-cactus/src/test/java/org/jbpm/test/AllIntegrationTests.java
===================================================================
--- jbpm4/trunk/modules/test-cactus/src/test/java/org/jbpm/test/AllIntegrationTests.java 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/test-cactus/src/test/java/org/jbpm/test/AllIntegrationTests.java 2009-08-30 10:38:08 UTC (rev 5591)
@@ -1,114 +0,0 @@
-package org.jbpm.test;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import org.apache.cactus.ServletTestSuite;
-
-public class AllIntegrationTests extends TestCase {
-
- public static Test suite() {
- ServletTestSuite suite = new ServletTestSuite();
- suite.addTestSuite(org.jbpm.examples.async.activity.AsyncActivityTest.class);
- suite.addTestSuite(org.jbpm.examples.async.fork.AsyncForkTest.class);
- suite.addTestSuite(org.jbpm.examples.concurrency.graphbased.ConcurrencyGraphBasedTest.class);
- suite.addTestSuite(org.jbpm.examples.custom.CustomTest.class);
- suite.addTestSuite(org.jbpm.examples.decision.conditions.DecisionConditionsTest.class);
- suite.addTestSuite(org.jbpm.examples.decision.expression.DecisionExpressionTest.class);
- suite.addTestSuite(org.jbpm.examples.decision.handler.DecisionHandlerTest.class);
- suite.addTestSuite(org.jbpm.examples.end.multiple.EndMultipleTest.class);
- suite.addTestSuite(org.jbpm.examples.end.processinstance.EndProcessInstanceTest.class);
- suite.addTestSuite(org.jbpm.examples.end.state.EndStateTest.class);
- suite.addTestSuite(org.jbpm.examples.eventlistener.EventListenerTest.class);
- suite.addTestSuite(org.jbpm.examples.hql.HqlTest.class);
- suite.addTestSuite(org.jbpm.examples.java.JavaInstantiateTest.class);
- suite.addTestSuite(org.jbpm.examples.mail.inline.InlineMailTest.class);
- suite.addTestSuite(org.jbpm.examples.mail.template.TemplateMailTest.class);
- suite.addTestSuite(org.jbpm.examples.script.expression.ScriptExpressionTest.class);
- suite.addTestSuite(org.jbpm.examples.script.text.ScriptTextTest.class);
- suite.addTestSuite(org.jbpm.examples.services.ServicesTest.class);
- suite.addTestSuite(org.jbpm.examples.sql.SqlTest.class);
- suite.addTestSuite(org.jbpm.examples.state.choice.StateChoiceTest.class);
- suite.addTestSuite(org.jbpm.examples.state.sequence.StateSequenceTest.class);
- suite.addTestSuite(org.jbpm.examples.subprocess.outcomeactivity.SubProcessOutcomeActivityTest.class);
- suite.addTestSuite(org.jbpm.examples.subprocess.outcomevalue.SubProcessOutcomeValueTest.class);
- suite.addTestSuite(org.jbpm.examples.subprocess.variables.SubProcessVariablesTest.class);
- suite.addTestSuite(org.jbpm.examples.task.assignee.TaskAssigneeTest.class);
- suite.addTestSuite(org.jbpm.examples.task.assignmenthandler.TaskAssignmentHandlerTest.class);
- suite.addTestSuite(org.jbpm.examples.task.candidates.TaskCandidatesTest.class);
- suite.addTestSuite(org.jbpm.examples.task.comments.TaskCommentsTest.class);
- suite.addTestSuite(org.jbpm.examples.task.notification.TaskNotificationTest.class);
- suite.addTestSuite(org.jbpm.examples.task.reminder.TaskReminderTest.class);
- suite.addTestSuite(org.jbpm.examples.task.swimlane.TaskSwimlaneTest.class);
- suite.addTestSuite(org.jbpm.examples.task.variables.TaskVariablesTest.class);
- suite.addTestSuite(org.jbpm.examples.timer.businesstime.TimerBusinessTimeTest.class);
- suite.addTestSuite(org.jbpm.examples.timer.event.TimerEventTest.class);
- suite.addTestSuite(org.jbpm.examples.timer.repeat.TimerRepeatTest.class);
- suite.addTestSuite(org.jbpm.examples.timer.transition.TimerTransitionTest.class);
- suite.addTestSuite(org.jbpm.examples.async.eventlistener.AsyncEventListenerTest.class);
- suite.addTestSuite(org.jbpm.examples.goup.concurrency.GroupConcurrencyTest.class);
- suite.addTestSuite(org.jbpm.examples.goup.multipleentries.MultipleEntriesTest.class);
- suite.addTestSuite(org.jbpm.examples.goup.simple.GroupSimpleTest.class);
- suite.addTestSuite(org.jbpm.examples.goup.timer.GroupTimerTest.class);
- suite.addTestSuite(org.jbpm.test.activities.DecisionTest.class);
- suite.addTestSuite(org.jbpm.test.activities.ForkJoinInSameTransactionTest.class);
- suite.addTestSuite(org.jbpm.test.activities.ForkTest.class);
- suite.addTestSuite(org.jbpm.test.activities.ForkToTaskTest.class);
- suite.addTestSuite(org.jbpm.test.activities.GroupBasicsTest.class);
- suite.addTestSuite(org.jbpm.test.activities.GroupTimersTest.class);
- suite.addTestSuite(org.jbpm.test.activities.JoinTest.class);
- suite.addTestSuite(org.jbpm.test.activities.StatesJoinEndTest.class);
- suite.addTestSuite(org.jbpm.test.activities.StateTest.class);
- suite.addTestSuite(org.jbpm.test.activities.SubProcessTest.class);
- suite.addTestSuite(org.jbpm.test.activities.TasksJoinEndTest.class);
- suite.addTestSuite(org.jbpm.test.async.AsyncBasicsTest.class);
- suite.addTestSuite(org.jbpm.test.async.AsyncEndCombinationTest.class);
- suite.addTestSuite(org.jbpm.test.async.AsyncEventListenerOnEndTest.class);
- suite.addTestSuite(org.jbpm.test.auth.UserProvidedAuthenticationTest.class);
- suite.addTestSuite(org.jbpm.test.cfg.ConfigurationTest.class);
- suite.addTestSuite(org.jbpm.test.deploy.DeploymentQueryTest.class);
- suite.addTestSuite(org.jbpm.test.deploy.ImageTest.class);
- suite.addTestSuite(org.jbpm.test.deploy.SuspendDeploymentTest.class);
- suite.addTestSuite(org.jbpm.test.eventlistener.EventListenerTest.class);
- suite.addTestSuite(org.jbpm.test.eventlistener.HqlEventListenerTest.class);
- suite.addTestSuite(org.jbpm.test.execution.ConcurrentEndTest.class);
- suite.addTestSuite(org.jbpm.test.execution.ExecutionEagerLoadingTest.class);
- suite.addTestSuite(org.jbpm.test.execution.ExecutionQueryTest.class);
- suite.addTestSuite(org.jbpm.test.execution.FindExecutionTest.class);
- suite.addTestSuite(org.jbpm.test.execution.SignalExecutionTest.class);
- suite.addTestSuite(org.jbpm.test.execution.StartExecutionTest.class);
- suite.addTestSuite(org.jbpm.test.execution.SystemVariablesTest.class);
- suite.addTestSuite(org.jbpm.test.history.AvgDurationTest.class);
- suite.addTestSuite(org.jbpm.test.history.ChoiceDistributionTest.class);
- suite.addTestSuite(org.jbpm.test.history.EndProcessInstanceTest.class);
- suite.addTestSuite(org.jbpm.test.history.HistoryActivityInstanceQeuryTest.class);
- suite.addTestSuite(org.jbpm.test.history.HistoryDetailQueryTest.class);
- suite.addTestSuite(org.jbpm.test.history.HistoryTaskAssigneeTest.class);
- suite.addTestSuite(org.jbpm.test.history.ProcessInstanceHistoryTest.class);
- suite.addTestSuite(org.jbpm.test.identity.IdentityTest.class);
- suite.addTestSuite(org.jbpm.test.mgmt.JobQueryTest.class);
- suite.addTestSuite(org.jbpm.test.process.ActivityCoordinatesTest.class);
- suite.addTestSuite(org.jbpm.test.process.DeploymentResourcesTest.class);
- suite.addTestSuite(org.jbpm.test.process.DescriptionTest.class);
- suite.addTestSuite(org.jbpm.test.process.ProcessDefinitionQueryTest.class);
- suite.addTestSuite(org.jbpm.test.process.ProcessDefinitionStartFormTest.class);
- suite.addTestSuite(org.jbpm.test.process.RepositoryServiceTest.class);
- suite.addTestSuite(org.jbpm.test.task.SubTaskTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskCommentsTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskCreateUpdateDeleteTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskListTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskParticipationsTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskPropertiesTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskQueryCandidatesTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskQueryProcessTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskQueryTest.class);
- suite.addTestSuite(org.jbpm.test.task.TaskVariablesTest.class);
- suite.addTestSuite(org.jbpm.test.taskactivity.TaskCandidatesTest.class);
- suite.addTestSuite(org.jbpm.test.taskactivity.TaskCompletionTest.class);
- suite.addTestSuite(org.jbpm.test.taskactivity.TaskOutcomesTest.class);
- suite.addTestSuite(org.jbpm.test.taskactivity.TaskReassignTest.class);
- suite.addTestSuite(org.jbpm.test.timer.TimerTest.class);
- suite.addTestSuite(org.jbpm.test.variables.BasicVariablesTest.class);
- suite.addTestSuite(org.jbpm.test.variables.VariableBasicTypesTest.class);
- return suite;
- }
-}
Modified: jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml
===================================================================
--- jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch02-Installation.xml 2009-08-30 10:38:08 UTC (rev 5591)
@@ -36,20 +36,21 @@
there. Otherwise the script will download it for you. The same is true for eclipse-jee-galileo-win32.zip
(or eclipse-jee-galileo-linux-gtk(-x86_64).tar.gz on Linux and eclipse-jee-galileo-macosx-carbon.tar.gz on Mac OSX)
</para>
- <para>Open a command prompt and go do directory <literal>${jbpm.home}/jboss</literal>. Then
+ <para>Open a command prompt and go do directory <literal>${jbpm.home}/install</literal>. Then
run
</para>
- <programlisting>ant demo.setup</programlisting>
+ <programlisting>ant demo.setup.jboss</programlisting>
+ <para>or</para>
+ <programlisting>ant demo.setup.tomcat</programlisting>
<para>That will</para>
<itemizedlist>
<listitem>Install JBoss into the <literal>${jbpm.home}/jboss-5.0.0.GA</literal> directory</listitem>
- <listitem>Install jBPM into that JBoss installation. By default, this includes a hypersonic
- database that is accessable over TCP/IP.
- </listitem>
- <listitem>Start JBoss in the background. This will also start the hypersonic DB.</listitem>
+ <listitem>Install jBPM into that JBoss installation.</listitem>
+ <listitem>Install hsqldb and start it in the background</listitem>
<listitem>Create the DB Schema</listitem>
+ <listitem>Start JBoss in the background.</listitem>
<listitem>Create an examples.bar business archive from the examples and deploy it to the jBPM DB.</listitem>
- <listitem>Load the example users and groups from <literal>${jbpm.home}/db/example.identities.sql</literal> </listitem>
+ <listitem>Load the example users and groups from <literal>${jbpm.home}/install/src/demo/example.identities.sql</literal> </listitem>
<listitem>Install eclipse into <literal>${jbpm.home}/eclipse</literal></listitem>
<listitem>Start eclipse</listitem>
</itemizedlist>
@@ -89,57 +90,42 @@
</table>
</section>
- <section id="antscripts">
- <title>Ant scripts</title>
- <para>This chapter describes how to install jBPM in different
- application environments. Currently we only have a JBoss installation, but we
- soon hope to expand that to incorporate other application environments.
+ <section id="installscripts">
+ <title>Install scripts</title>
+ <para>The jBPM download contains an <literal>install</literal> directory
+ with an ant <link>build.xml</link> file in it. You can use that to
+ install jBPM into your application environment.
</para>
- <para>As part of the installation, the jBPM configuration
- files will be deployed to the target environment. Those jBPM configuration
- files themselves should not be changed after installation. Instead
- the installation scripts take specific configuration parameters
- that will build a valid configuration on the target environment.
- </para>
-
- <para>So it's best to stick to the installations and jBPM configuration files
+ <para>It's best to stick to the installations and jBPM configuration files
as done with these installation scripts. Customizing jBPM configuration files
directly, is possible, but not supported.
</para>
- <para>As you already saw one example in the demo setup, the distribution contains a couple of ant
- scripts:
+ <para>To invoke the install script, open a command line and go to the
+ <literal>${jbpm.home}/install</literal> directory. With <literal>ant -p</literal> you can
+ find out what each of these scripts can do.
</para>
- <itemizedlist>
- <listitem><literal>${jbpm.home}/jboss/build.xml</literal></listitem>
- <listitem><literal>${jbpm.home}/db/build.xml</literal></listitem>
- <listitem><literal>${jbpm.home}/gpd/build.xml</literal></listitem>
- <listitem><literal>${jbpm.home}/examples/build.xml</literal></listitem>
- </itemizedlist>
- <para>With <literal>ant -p</literal> you can find out what each of these scripts can do.
+ <para>The scripts are parametrized with default values.
</para>
- <para>The scripts are parametrized with default values. Following properties you might
- want to customize:
+ <para>To specify your jdbc properties that are used in the DB schema generation, direct DB access like
+ deployment and for the JBoss datasource creation, the easiest is to update the appropriate
+ properties file in directory <literal>${jbpm.home}/install/jdbc</literal>. The appropriate properties
+ file will be loaded by the scripts that are DB related.
</para>
+ <para>Also following properties you might want to customize:</para>
<itemizedlist>
- <listitem><literal>jbpm.home</literal> : Default value is <literal>${user.home}/jbpm-${jbpm-version}</literal>.
- You should set it to the location where you unzipped the distribution.</listitem>
<listitem><literal>database</literal> : Default value is <literal>hsqldb</literal>. Alternative values
are <literal>mysql</literal>, <literal>oracle</literal> and <literal>postgresql</literal></listitem>
<listitem><literal>jboss.version</literal> : Default value is <literal>5.0.0.GA</literal>. Alternative
- value is <literal>5.0.1.GA</literal></listitem>
+ value is <literal>5.1.0.GA</literal></listitem>
</itemizedlist>
<para>To customize the values for these properties, just use <literal>-D</literal> like this
</para>
- <programlisting>ant -Ddatabase=postgresql demo.setup</programlisting>
- <para>Or specify the customized values in <literal>${user.home}/.jbpm4/build.properties</literal>
+ <programlisting>ant -Ddatabase=postgresql demo.setup.jboss</programlisting>
+ <para>Alternativelym you can specify the customized values in
+ <literal>${user.home}/.jbpm4/build.properties</literal>
</para>
- <para>To specify your jdbc properties that are used in the DB schema generation, direct DB access like
- deployment and for the JBoss datasource creation, the easiest is to update the appropriate
- properties file in directory <literal>${jbpm.home}/db/jdbc</literal>. The appropriate properties
- file will be loaded by the scripts that are DB related.
- </para>
</section>
<section id="librarydependenciesandconfigurationfiles">
@@ -153,30 +139,51 @@
<section id="jboss">
<title>JBoss</title>
- <para>The build file <literal>${jbpm.home}/jboss/build.xml</literal> contains scripts for
- installing jBPM into JBoss 5. Navigate to that directory and run <literal>ant -p</literal>
- for more details.
+ <para>The target <literal>install.jbpm.into.jboss</literal> will install jBPM into
+ your JBoss 5 installation. Navigate to the install directory and run <literal>ant -p</literal>
+ for more details. This install script will install jBPM as a JBoss-wide service so
+ that all applications can use the same jBPM ProcessEngine.
</para>
+ <para>Specify property <literal>-Djboss.home=PathToYourJBossInstallation</literal>
+ to customize the path to your JBoss installation.
+ </para>
+ <para>If you are running on a JDK 6, you can also call the installation target
+ <literal>install.signavio.into.jboss</literal>, which will install the
+ web based process modeller into JBoss.
+ </para>
<para>In JBoss, the <literal>ProcessEngine</literal> can be obtained from JNDI
with <literal>new InitialContext().lookup("java:/ProcessEngine")</literal>
+ The same ProcessEngine can be obtained with <literal>Configuration.getProcessEngine()</literal>
</para>
</section>
<section id="tomcat">
<title>Tomcat</title>
- <para>ETA for Tomcat is 4.1: <ulink url="https://jira.jboss.org/jira/browse/JBPM-2397">See JBPM-2397</ulink></para>
+ <para>The target <literal>install.jbpm.into.tomcat</literal> will install jBPM into
+ your JBoss 5 installation.
+ </para>
</section>
+ <section id="userwebapp">
+ <title>User webapp</title>
+ <para>If you want to deploy jBPM as a part of your web application, use the
+ install target <literal>create.user.webapp</literal>. That will
+ create a web application with jBPM in it, in the location <literal>${jbpm.home}/install/generated/user-webapp</literal>.
+ </para>
+ <para>In case you deploy your app on JBoss or another appserver that has the
+ jta.jar classes, then you need to delete the <literal>${jbpm.home}/install/generated/user-webapp/WEB-INF/lib/jta.jar</literal>
+ </para>
+ </section>
+
<section id="database">
<title>Database</title>
- <para>The build file <literal>${jbpm.home}/db/build.xml</literal> contains scripts for
- DB operations like creating and dropping the schema. Navigate to that directory and run <literal>ant -p</literal>
- for more details.
+ <para>The install script also contains scripts for
+ DB operations like creating and dropping the schema.
</para>
<para>To create the schema in your database:</para>
<itemizedlist>
- <listitem>First, update the properties file of your database in <literal>${jbpm.home}/db/jdbc</literal></listitem>
- <listitem>Then run target <literal>ant create.jbpm.schema</literal> in the db directory</listitem>
+ <listitem>First, update the properties file of your database in <literal>${jbpm.home}/install/jdbc</literal></listitem>
+ <listitem>Then run target <literal>ant create.jbpm.schema</literal> in the <literal>${jbpm.home}/install</literal> directory</listitem>
</itemizedlist>
</section>
Modified: jbpm4/trunk/qa/build.xml
===================================================================
--- jbpm4/trunk/qa/build.xml 2009-08-30 07:09:09 UTC (rev 5590)
+++ jbpm4/trunk/qa/build.xml 2009-08-30 10:38:08 UTC (rev 5591)
@@ -60,6 +60,8 @@
depends="reinstall.jbpm">
<ant antfile="${jbpm.home}/install/build.xml" target="reinstall.tomcat" />
<ant antfile="${jbpm.home}/install/build.xml" target="create.user.webapp" />
+ <ant antfile="${jbpm.home}/install/build.xml" target="internal.install.and.start.hsqldb.if.needed" />
+ <ant antfile="${jbpm.home}/install/build.xml" target="create.jbpm.schema" />
<!-- to build the jbpm test webapp we start by copying the user webapp -->
<mkdir dir="${tomcat.home}/webapps/jbpm-test-webapp" />
@@ -90,8 +92,9 @@
<!-- TOMCAT TEARDOWN -->
<target name="testsuite.tomcat.teardown">
- <!-- stop tomcat -->
<ant antfile="${jbpm.home}/install/build.xml" target="stop.tomcat" />
+ <ant antfile="${jbpm.home}/install/build.xml" target="drop.jbpm.schema" />
+ <ant antfile="${jbpm.home}/install/build.xml" target="internal.stop.hsqldb.server.if.needed" />
</target>
<!-- JBOSS SETUP -->
@@ -102,6 +105,9 @@
<ant antfile="${jbpm.home}/install/build.xml" target="install.jbpm.into.jboss" />
<ant antfile="${jbpm.home}/install/build.xml" target="create.user.webapp" />
+ <ant antfile="${jbpm.home}/install/build.xml" target="internal.install.and.start.hsqldb.if.needed" />
+ <ant antfile="${jbpm.home}/install/build.xml" target="create.jbpm.schema" />
+
<ant antfile="${jbpm.home}/examples/build.xml" target="examples.jar" />
<mkdir dir="${jboss.server.config.dir}/deploy/jbpm/userlibs" />
<copy file="${jbpm.home}/examples/target/examples.jar"
@@ -141,16 +147,14 @@
<!-- start jboss -->
<ant antfile="${jbpm.home}/install/build.xml" target="start.jboss" />
-
- <!-- create db schema -->
- <ant antfile="${jbpm.home}/install/build.xml" target="create.jbpm.schema" />
</target>
<!-- JBOSS TEARDOWN -->
<target name="testsuite.jboss.teardown"
description="drops the jbpm schema and stops jboss">
+ <ant antfile="${jbpm.home}/install/build.xml" target="stop.jboss" />
<ant antfile="${jbpm.home}/install/build.xml" target="drop.jbpm.schema" />
- <ant antfile="${jbpm.home}/install/build.xml" target="stop.jboss" />
+ <ant antfile="${jbpm.home}/install/build.xml" target="internal.stop.hsqldb.server.if.needed" />
</target>
<!-- ############################################ -->
14 years, 8 months