[jbpm-commits] JBoss JBPM SVN: r4342 - in jbpm4/branches/tbaeyens/modules: api/src/main/java/org/jbpm/session and 14 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Mar 27 09:19:48 EDT 2009
Author: tom.baeyens at jboss.com
Date: 2009-03-27 09:19:48 -0400 (Fri, 27 Mar 2009)
New Revision: 4342
Removed:
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java
Modified:
jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java
jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java
jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java
jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java
jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml
jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml
jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java
jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java
jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java
jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java
jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml
jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java
jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml
Log:
revisiting deployment
Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -30,12 +30,6 @@
*/
public interface ProcessDefinition extends Serializable {
- /** the optional package name of this process. This can be used to create
- * hierarchy of process categories for easy lookup. This is a
- * similar way of grouping and creating a structure as in Java.
- * We recommend the same conventions as with Java package names. */
- String getPackageName();
-
/** the short display name given to this process definition.
* Multiple process definitions can have the same as long
* as they are given a different {@link #version}. */
@@ -54,8 +48,4 @@
* the same {@link ObservableElement#getId() name}. */
int getVersion();
- /** the description name given to this process definition.
- * Multiple process definitions can have the same */
- String getDescription();
-
}
Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -28,17 +28,21 @@
*/
public interface ProcessDefinitionQuery {
- String PROPERTY_NAME = "name";
- String PROPERTY_KEY = "key";
- String PROPERTY_PACKAGENAME = "packageName";
- String PROPERTY_VERSION = "version";
- String PROPERTY_DEPLOYMENTTIME = "deploymentTime";
+ String PROPERTY_ID = "idProperty.stringValue";
+ String PROPERTY_KEY = "keyProperty.stringValue";
+ String PROPERTY_NAME = "idProperty.objectName";
+ String PROPERTY_VERSION = "versionProperty.longValue";
+ String PROPERTY_DEPLOYMENT_TIMESTAMP = "deployment.timestamp";
+ ProcessDefinitionQuery id(String id);
+ ProcessDefinitionQuery key(String key);
ProcessDefinitionQuery nameLike(String name);
- ProcessDefinitionQuery keyLike(String key);
ProcessDefinitionQuery orderAsc(String property);
ProcessDefinitionQuery orderDesc(String property);
+
+ ProcessDefinitionQuery page(int firstResult, int maxResults);
List<ProcessDefinition> execute();
+ ProcessDefinition uniqueResult();
}
Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -35,4 +35,6 @@
InputStream getResourceAsStream(long deploymentDbid, String resourceName);
+ ProcessDefinitionQuery createProcessDefinitionQuery();
+
}
\ No newline at end of file
Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -25,6 +25,8 @@
import java.util.List;
import org.jbpm.Deployment;
+import org.jbpm.ProcessDefinitionQuery;
+import org.jbpm.client.ClientProcessDefinition;
/**
@@ -36,9 +38,13 @@
Object getObject(long deploymentDbid, String objectName);
+ InputStream getResourceAsStream(long deploymentDbid, String resourceName);
+
+ ProcessDefinitionQuery createProcessDefinitionQuery();
+
+
List<String> findObjectNames(String propertyKey, String propertyValue);
List<String> findObjectPropertyValues(String objectName, String propertyKey);
Object findObjectByPropertyValue(String propertyKey, String propertyValue);
-
- InputStream getResourceAsStream(long deploymentDbid, String resourceName);
+ ClientProcessDefinition findLatestProcessDefinitionByKey(String processDefinitionKey);
}
Modified: jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml 2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
index="IDX_DEPLPROP_DEPL" />
<property name="objectName" column="OBJNAME_" />
<property name="key" column="KEY_" />
- <property name="value" column="VALUE_" />
+ <property name="stringValue" column="STRINGVAL_" />
+ <property name="longValue" column="LONGVAL_" />
</class>
</hibernate-mapping>
\ No newline at end of file
Modified: jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml 2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
index="IDX_DEPLPROP_DEPL" />
<property name="objectName" column="OBJNAME_" />
<property name="key" column="KEY_" />
- <property name="value" column="VALUE_" />
+ <property name="stringValue" column="STRINGVAL_" />
+ <property name="longValue" column="LONGVAL_" />
</class>
</hibernate-mapping>
\ No newline at end of file
Modified: jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -49,10 +49,9 @@
def.setId( p0.getId() );
def.setName(p0.getName());
def.setVersion(p0.getVersion());
-
def.setKey( p0.getKey() );
- def.setDescription(p0.getDescription());
- def.setPackageName(p0.getPackageName());
+ // def.setDescription(p0.getDescription());
+ // def.setPackageName(p0.getPackageName());
return def;
Modified: jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -24,6 +24,8 @@
import java.io.InputStream;
import java.util.List;
+import org.jbpm.ProcessDefinition;
+import org.jbpm.ProcessDefinitionQuery;
import org.jbpm.env.Environment;
import org.jbpm.internal.log.Log;
import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
@@ -60,21 +62,25 @@
processDefinition.setDeploymentDbid(deployment.getDbid());
- String key = deployment.getObjectProperty(processDefinitionName, "jpdl.key");
- if (key != null) {
- String id = deployment.getObjectProperty(processDefinitionName, "jpdl.id");
+ if (deployment.hasObjectProperties(processDefinitionName)) {
+ String key = (String) deployment.getObjectProperty(processDefinitionName, "key");
+ String id = (String) deployment.getObjectProperty(processDefinitionName, "id");
+ String version = (String) deployment.getObjectProperty(processDefinitionName, "version");
processDefinition.setId(id);
processDefinition.setKey(key);
- deployment.addObject(processDefinitionName, processDefinition);
+ processDefinition.setVersion(Integer.parseInt(version));
} else {
checkKey(processDefinition, deployment);
+ checkVersion(processDefinition, deployment);
checkId(processDefinition, deployment);
- deployment.addObject(processDefinitionName, processDefinition);
- deployment.addObjectProperty(processDefinitionName, "jpdl.key", processDefinition.getKey());
- deployment.addObjectProperty(processDefinitionName, "jpdl.id", processDefinition.getId());
+ deployment.addObjectProperty(processDefinitionName, "key", processDefinition.getKey());
+ deployment.addObjectProperty(processDefinitionName, "version", new Long(processDefinition.getVersion()));
+ deployment.addObjectProperty(processDefinitionName, "id", processDefinition.getId());
}
+
+ deployment.addObject(processDefinitionName, processDefinition);
}
}
}
@@ -111,8 +117,8 @@
protected void checkId(ProcessDefinitionImpl processDefinition, DeploymentImpl deployment) {
String id = processDefinition.getId();
if (id==null) {
- id = processDefinition.getKey()+"-"+deployment.getDbid();
- log.trace("created id '"+id+"' for "+processDefinition);
+ id = processDefinition.getKey()+"-"+processDefinition.getVersion();
+ if (log.isTraceEnabled()) log.trace("created id '"+id+"' for "+processDefinition);
processDefinition.setId(id);
}
@@ -121,4 +127,27 @@
deployment.addProblem("process '" + id + "' already exists");
}
}
+
+ protected void checkVersion(ProcessDefinitionImpl processDefinition, DeploymentImpl deployment) {
+ int version = processDefinition.getVersion();
+ String key = processDefinition.getKey();
+ if (version==ProcessDefinitionImpl.UNASSIGNED_VERSION) {
+ RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
+
+ ProcessDefinition latestDeployedVersion = repositorySession
+ .createProcessDefinitionQuery()
+ .key(key)
+ .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)
+ .page(0, 1)
+ .uniqueResult();
+
+ if (latestDeployedVersion!=null) {
+ version = latestDeployedVersion.getVersion() + 1;
+ } else {
+ version = 1;
+ }
+ if (log.isTraceEnabled()) log.trace("assigning version "+version+" to process definition "+key);
+ processDefinition.setVersion(version);
+ }
+ }
}
Modified: jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml 2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
index="IDX_DEPLPROP_DEPL" />
<property name="objectName" column="OBJNAME_" />
<property name="key" column="KEY_" />
- <property name="value" column="VALUE_" />
+ <property name="stringValue" column="STRINGVAL_" />
+ <property name="longValue" column="LONGVAL_" />
</class>
</hibernate-mapping>
\ No newline at end of file
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -56,7 +56,7 @@
RepositorySession repositorySession = environment.get(RepositorySession.class);
processDefinition = (ClientProcessDefinition) repositorySession
- .findObjectByPropertyValue("jpdl.key", processDefinitionKey);
+ .findObjectByPropertyValue("key", processDefinitionKey);
if (processDefinition==null) {
throw new JbpmException("no process definition with key '"+processDefinitionKey+"'");
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -1024,7 +1024,7 @@
&& (processDefinitionId!=null)
) {
RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
- processDefinition = (ProcessDefinitionImpl) repositorySession.findObjectByPropertyValue("jpdl.id", processDefinitionId);
+ processDefinition = (ProcessDefinitionImpl) repositorySession.findObjectByPropertyValue("id", processDefinitionId);
if (processDefinition==null) {
throw new JbpmException("couldn't find process definition "+processDefinitionId+" in the repository");
}
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -22,9 +22,11 @@
package org.jbpm.pvm.internal.query;
import java.io.ObjectStreamException;
+import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
+import org.jbpm.ProcessDefinition;
import org.jbpm.cmd.Command;
import org.jbpm.cmd.CommandService;
import org.jbpm.env.Environment;
@@ -37,6 +39,7 @@
private static final long serialVersionUID = 1L;
+ protected Session session;
protected CommandService commandService;
protected String orderByClause = null;
protected Page page = null;
@@ -46,6 +49,10 @@
this.commandService = commandService;
}
+ public AbstractQuery(Session session) {
+ this.session = session;
+ }
+
protected abstract void applyParameters(Query query);
public abstract String hql();
@@ -53,20 +60,31 @@
/* reuse by copy and paste:
* (return type can't be changed)
public ConcreteQuery page(int firstResult, int maxResults) {
- this.page = new Page{firstResult, maxResults};
+ this.page = new Page(firstResult, maxResults);
return this;
}
*/
+ public List execute() {
+ if (commandService!=null) {
+ return (List) commandService.execute(this);
+ }
+ return (List) execute(session);
+ }
+
public Object execute(Environment environment) throws Exception {
Session session = environment.get(Session.class);
+ return execute(session);
+ }
+
+ public Object execute(Session session) {
String hql = hql();
Query query = session.createQuery(hql);
applyParameters(query);
applyPage(query);
return query.list();
}
-
+
protected void appendWhereClause(String whereClause, StringBuffer hql) {
if (isWhereAdded) {
hql.append(" and ");
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -21,13 +21,21 @@
*/
package org.jbpm.pvm.internal.query;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
import org.hibernate.Query;
+import org.hibernate.Session;
+import org.jbpm.JbpmException;
import org.jbpm.ProcessDefinition;
import org.jbpm.ProcessDefinitionQuery;
import org.jbpm.cmd.CommandService;
import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.repository.DeploymentImpl;
+import org.jbpm.pvm.internal.repository.DeploymentProperty;
/**
@@ -37,32 +45,85 @@
private static final long serialVersionUID = 1L;
- private static final String NEWLINE = System.getProperty("line.separator");
-
+ protected String id;
+ protected String key;
protected String nameLike;
- protected String keyLike;
+ protected String versionSortDirection;
public ProcessDefinitionQueryImpl(CommandService commandService) {
super(commandService);
}
- public List<ProcessDefinition> execute() {
- return (List) commandService.execute(this);
+ public ProcessDefinitionQueryImpl(Session session) {
+ super(session);
}
+ public ProcessDefinition uniqueResult() {
+ List list = execute();
+ if (list.isEmpty()) {
+ return null;
+ }
+ if (list.size()>1) {
+ throw new JbpmException("result not unique: "+list.size());
+ }
+ return (ProcessDefinition) list.get(0);
+ }
+
+ public Object execute(Session session) {
+ List<Map<String, Object>> propertyMaps = (List<Map<String, Object>>) super.execute(session);
+
+ List<ProcessDefinition> processDefinitions = new ArrayList<ProcessDefinition>();
+ for (Map<String, Object> properties: propertyMaps) {
+ ProcessDefinitionImpl processDefinition = new ProcessDefinitionImpl();
+ processDefinition.setName((String)properties.get("name"));
+ processDefinition.setKey((String)properties.get("key"));
+ processDefinition.setId((String)properties.get("id"));
+ Long versionLong = (Long)properties.get("version");
+ processDefinition.setVersion(versionLong.intValue());
+
+ processDefinitions.add(processDefinition);
+ }
+
+ return processDefinitions;
+ }
+
public String hql() {
StringBuffer hql = new StringBuffer();
- hql.append("select pd ");
+ hql.append("select new map( idProperty.objectName as name, " +
+ "idProperty.stringValue as id, " +
+ "keyProperty.stringValue as key," +
+ "versionProperty.longValue as version ) ");
hql.append("from ");
- hql.append(ProcessDefinitionImpl.class.getName());
- hql.append(" as pd ");
+ hql.append(DeploymentImpl.class.getName());
+ hql.append(" as deployment, ");
+ hql.append(DeploymentProperty.class.getName());
+ hql.append(" as idProperty, ");
+ hql.append(DeploymentProperty.class.getName());
+ hql.append(" as keyProperty, ");
+ hql.append(DeploymentProperty.class.getName());
+ hql.append(" as versionProperty ");
+
+ appendWhereClause("idProperty.key = 'id'", hql);
+ appendWhereClause("idProperty.deployment = deployment ", hql);
+ appendWhereClause("keyProperty.key = 'key' ", hql);
+ appendWhereClause("keyProperty.objectName = idProperty.objectName ", hql);
+ appendWhereClause("keyProperty.deployment = deployment ", hql);
+
+ appendWhereClause("versionProperty.key = 'version' ", hql);
+ appendWhereClause("versionProperty.objectName = idProperty.objectName ", hql);
+ appendWhereClause("versionProperty.deployment = deployment ", hql);
+
+ if (id!=null) {
+ appendWhereClause("idProperty = '"+id+"'", hql);
+ }
+
if (nameLike!=null) {
- appendWhereClause("pd.name like '"+nameLike+"'", hql);
+ appendWhereClause("idProperty.objectName like '"+nameLike+"' ", hql);
}
- if (keyLike!=null) {
- appendWhereClause("pd.key like '"+keyLike+"'", hql);
+ if (key!=null) {
+ appendWhereClause("keyProperty.stringValue = '"+key+"' ", hql);
}
appendOrderByClause(hql);
@@ -73,23 +134,33 @@
protected void applyParameters(Query query) {
}
- public ProcessDefinitionQuery nameLike(String name) {
- this.nameLike = name;
+ public ProcessDefinitionQuery id(String id) {
+ this.id = id;
return this;
}
- public ProcessDefinitionQuery keyLike(String key) {
- this.keyLike = key;
+ public ProcessDefinitionQuery key(String key) {
+ this.key = key;
return this;
}
+ public ProcessDefinitionQuery nameLike(String name) {
+ this.nameLike = name;
+ return this;
+ }
+
public ProcessDefinitionQuery orderAsc(String property) {
- addOrderByClause("pd."+property+" asc");
+ addOrderByClause(property+" asc");
return this;
}
public ProcessDefinitionQuery orderDesc(String property) {
- addOrderByClause("pd."+property+" desc");
+ addOrderByClause(property+" desc");
return this;
}
+
+ public ProcessDefinitionQuery page(int firstResult, int maxResults) {
+ this.page = new Page(firstResult, maxResults);
+ return this;
+ }
}
Deleted: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -1,62 +0,0 @@
-/*
- * 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.pvm.internal.repository;
-
-import org.jbpm.JbpmException;
-import org.jbpm.cmd.Command;
-import org.jbpm.env.Environment;
-import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.repository.DeploymentImpl;
-import org.jbpm.session.RepositorySession;
-
-
-/**
- * @author Tom Baeyens
- */
-public class DeployCmd implements Command<Long> {
-
- private static final long serialVersionUID = 1L;
-
- private static Log log = Log.getLog(DeployCmd.class.getName());
-
- DeploymentImpl deployment;
-
- public DeployCmd(DeploymentImpl deployment) {
- this.deployment = deployment;
- }
-
- public Long execute(Environment environment) throws Exception {
- RepositorySession repositorySession = environment.get(RepositorySession.class);
- long deploymentDbid = repositorySession.deploy(deployment);
-
- if (deployment.hasProblems()) {
- String problemsText = deployment.getProblemsText();
- if (problemsText!=null) {
- String errorMsg = "problems during deployment of "+deployment+": "+problemsText;
- log.info(errorMsg);
- throw new JbpmException(errorMsg);
- }
- }
-
- return deploymentDbid;
- }
-}
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -31,10 +31,9 @@
List<Deployer> deployers;
- public Object deploy(DeploymentImpl deployment) {
+ public void deploy(DeploymentImpl deployment) {
for (Deployer deployer: deployers) {
deployer.deploy(deployment);
}
- return null;
}
}
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -146,14 +146,16 @@
objects.put(objectName, object);
}
- public void addObjectProperty(String objectName, String key, String value) {
+ public void addObjectProperty(String objectName, String key, Object value) {
if (objectProperties==null) {
objectProperties = new HashSet<DeploymentProperty>();
}
- objectProperties.add(new DeploymentProperty(this, objectName, key, value));
+ DeploymentProperty deploymentProperty = new DeploymentProperty(this, objectName, key);
+ deploymentProperty.setValue(value);
+ objectProperties.add(deploymentProperty);
}
- public String getObjectProperty(String objectName, String key) {
+ public Object getObjectProperty(String objectName, String key) {
if (objectProperties!=null) {
for (DeploymentProperty deploymentProperty: objectProperties) {
if ( (deploymentProperty.getObjectName().equals(objectName))
@@ -166,6 +168,17 @@
return null;
}
+ public boolean hasObjectProperties(String objectName) {
+ if (objectProperties!=null) {
+ for (DeploymentProperty deploymentProperty: objectProperties) {
+ if (deploymentProperty.getObjectName().equals(objectName)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
protected Object writeReplace() throws ObjectStreamException {
commandService = null;
return this;
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -23,7 +23,9 @@
import java.io.Serializable;
+import org.jbpm.JbpmException;
+
/**
* @author Tom Baeyens
*/
@@ -35,20 +37,20 @@
protected DeploymentImpl deployment;
protected String objectName;
protected String key;
- protected String value;
+ protected String stringValue;
+ protected Long longValue;
public DeploymentProperty() {
}
- public DeploymentProperty(DeploymentImpl deployment, String objectName, String key, String value) {
+ public DeploymentProperty(DeploymentImpl deployment, String objectName, String key) {
this.deployment = deployment;
this.objectName = objectName;
this.key = key;
- this.value = value;
}
public String toString() {
- return "{"+objectName+","+key+","+value+"}";
+ return "{"+objectName+","+key+","+(stringValue!=null?stringValue:longValue)+"}";
}
public String getObjectName() {
@@ -57,10 +59,39 @@
public String getKey() {
return key;
}
- public String getValue() {
- return value;
- }
public DeploymentImpl getDeployment() {
return deployment;
}
+ public String getStringValue() {
+ return stringValue;
+ }
+ public Long getLongValue() {
+ return longValue;
+ }
+ public void setStringValue(String stringValue) {
+ this.stringValue = stringValue;
+ }
+ public void setLongValue(Long longValue) {
+ this.longValue = longValue;
+ }
+
+ public void setValue(Object value) {
+ if (value==null) {
+ stringValue = null;
+ longValue = null;
+ } else if (value instanceof String) {
+ stringValue = (String)value;
+ } else if (value instanceof Long) {
+ longValue = (Long)value;
+ } else {
+ throw new JbpmException("value type "+value.getClass().getName()+" not supported (only string and long)");
+ }
+ }
+
+ public Object getValue() {
+ if (stringValue!=null) {
+ return stringValue;
+ }
+ return longValue;
+ }
}
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -24,9 +24,11 @@
import java.io.InputStream;
import org.jbpm.Deployment;
+import org.jbpm.ProcessDefinitionQuery;
import org.jbpm.RepositoryService;
import org.jbpm.cmd.CommandService;
import org.jbpm.pvm.internal.cmd.GetResourceAsStream;
+import org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl;
/**
* @author Tom Baeyens
@@ -45,4 +47,8 @@
public InputStream getResourceAsStream(long deploymentDbid, String resource) {
return commandService.execute(new GetResourceAsStream(deploymentDbid, resource));
}
+
+ public ProcessDefinitionQuery createProcessDefinitionQuery() {
+ return new ProcessDefinitionQueryImpl(commandService);
+ }
}
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -29,7 +29,10 @@
import org.jbpm.Deployment;
import org.jbpm.JbpmException;
import org.jbpm.Problem;
+import org.jbpm.ProcessDefinitionQuery;
+import org.jbpm.client.ClientProcessDefinition;
import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl;
import org.jbpm.session.RepositorySession;
/**
@@ -39,9 +42,9 @@
private static Log log = Log.getLog(RepositorySessionImpl.class.getName());
- Session session;
- RepositoryCache repositoryCache;
- DeployerManager deployerManager;
+ protected Session session;
+ protected RepositoryCache repositoryCache;
+ protected DeployerManager deployerManager;
public long deploy(Deployment deployment) {
DeploymentImpl deploymentImpl = (DeploymentImpl) deployment;
@@ -89,15 +92,30 @@
}
return object;
}
+
+ public InputStream getResourceAsStream(long deploymentDbid, String resourceName) {
+ DeploymentImpl deployment = getDeployment(deploymentDbid);
+ if (deployment==null) {
+ throw new JbpmException("deployment "+deploymentDbid+" doesn't exist");
+ }
+ return deployment.getResourceAsStream(resourceName);
+ }
+ // queries //////////////////////////////////////////////////////////////////
+
+ public ProcessDefinitionQuery createProcessDefinitionQuery() {
+ return new ProcessDefinitionQueryImpl(session);
+ }
+
+
public Object findObjectByPropertyValue(String key, String value) {
DeploymentProperty deploymentProperty = (DeploymentProperty) session.createQuery(
"select deploymentProperty " +
"from "+DeploymentProperty.class.getName()+" as deploymentProperty " +
"where deploymentProperty.key = '"+key+"' " +
- " and deploymentProperty.value = '"+value+"' " +
+ " and deploymentProperty.stringValue = '"+value+"' " +
"order by deploymentProperty.deployment.timestamp desc "
- ).uniqueResult();
+ ).setMaxResults(1).uniqueResult();
if (deploymentProperty!=null) {
long deploymentDbid = deploymentProperty.getDeployment().getDbid();
@@ -114,24 +132,20 @@
"select distinct deploymentProperty.objectName " +
"from "+DeploymentProperty.class.getName()+" as deploymentProperty " +
"where deploymentProperty.key = '"+key+"' " +
- " and deploymentProperty.value = '"+value+"' "
+ " and deploymentProperty.stringValue = '"+value+"' "
).list();
}
public List<String> findObjectPropertyValues(String objectName, String key) {
return session.createQuery(
- "select distinct deploymentProperty.value " +
+ "select distinct deploymentProperty.stringValue " +
"from "+DeploymentProperty.class.getName()+" as deploymentProperty " +
"where deploymentProperty.objectName = '"+objectName+"' " +
" and deploymentProperty.key = '"+key+"' "
).list();
}
- public InputStream getResourceAsStream(long deploymentDbid, String resourceName) {
- DeploymentImpl deployment = getDeployment(deploymentDbid);
- if (deployment==null) {
- throw new JbpmException("deployment "+deploymentDbid+" doesn't exist");
- }
- return deployment.getResourceAsStream(resourceName);
+ public ClientProcessDefinition findLatestProcessDefinitionByKey(String processDefinitionKey) {
+ return (ClientProcessDefinition) findObjectByPropertyValue("key", processDefinitionKey);
}
}
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -297,7 +297,7 @@
if (autoWireValue!=null) {
try {
- log.debug("auto wiring field "+fieldName+" in "+name);
+ if (log.isTraceEnabled()) log.trace("auto wiring field "+fieldName+" in "+name);
ReflectUtil.set(field, object, autoWireValue);
} catch (JbpmException e) {
if(e.getCause() instanceof IllegalArgumentException) {
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -36,20 +36,6 @@
*/
public class BuilderTest extends BaseJbpmTestCase {
- public void testBuilderProcessDefinitionProperties() {
- ClientProcessDefinition processDefinition = ProcessDefinitionBuilder
- .startProcess("p")
- .key("k")
- .version(5)
- .description("the description")
- .endProcess();
-
- assertEquals("p", processDefinition.getName());
- assertEquals("k", processDefinition.getKey());
- assertEquals(5, processDefinition.getVersion());
- assertEquals("the description", processDefinition.getDescription());
- }
-
public void testBuilderInitialActivity() {
ClientProcessDefinition processDefinition = ProcessDefinitionBuilder
.startProcess("p")
Modified: jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml 2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
index="IDX_DEPLPROP_DEPL" />
<property name="objectName" column="OBJNAME_" />
<property name="key" column="KEY_" />
- <property name="value" column="VALUE_" />
+ <property name="stringValue" column="STRINGVAL_" />
+ <property name="longValue" column="LONGVAL_" />
</class>
</hibernate-mapping>
\ No newline at end of file
Modified: jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java 2009-03-27 13:19:48 UTC (rev 4342)
@@ -72,7 +72,7 @@
"</process>"
);
- List<ProcessDefinition> processDefinitions = processService.createProcessDefinitionQuery()
+ List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
.nameLike("%make%")
.orderAsc(ProcessDefinitionQuery.PROPERTY_NAME)
.execute();
@@ -125,15 +125,14 @@
"</process>"
);
- List<ProcessDefinition> processDefinitions = processService.createProcessDefinitionQuery()
- .keyLike("make%")
- .orderAsc(ProcessDefinitionQuery.PROPERTY_NAME)
- .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)
+ List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
+ .nameLike("make%")
+ .orderAsc(ProcessDefinitionQuery.PROPERTY_ID)
.execute();
- assertEquals("make_friends-3", processDefinitions.get(0).getId());
+ assertEquals("make_friends-1", processDefinitions.get(0).getId());
assertEquals("make_friends-2", processDefinitions.get(1).getId());
- assertEquals("make_friends-1", processDefinitions.get(2).getId());
+ assertEquals("make_friends-3", processDefinitions.get(2).getId());
assertEquals("make_print-1", processDefinitions.get(3).getId());
}
}
Modified: jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml 2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml 2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
index="IDX_DEPLPROP_DEPL" />
<property name="objectName" column="OBJNAME_" />
<property name="key" column="KEY_" />
- <property name="value" column="VALUE_" />
+ <property name="stringValue" column="STRINGVAL_" />
+ <property name="longValue" column="LONGVAL_" />
</class>
</hibernate-mapping>
\ No newline at end of file
More information about the jbpm-commits
mailing list