Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java Tue Jan 6 18:00:47 2009 @@ -21,9 +21,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ode.bpel.common.CorrelationKey; +import org.apache.ode.bpel.common.ProcessState; import org.apache.ode.bpel.dao.CorrelatorDAO; import org.apache.ode.bpel.dao.ProcessDAO; import org.apache.ode.bpel.dao.ProcessInstanceDAO; +import org.apache.ode.bpel.dao.CorrelationSetDAO; import org.apache.ode.daohib.SessionManager; import org.apache.ode.daohib.bpel.hobj.HActivityRecovery; import org.apache.ode.daohib.bpel.hobj.HBpelEvent; @@ -53,6 +55,7 @@ import java.util.Collection; import java.util.Date; import java.util.Iterator; +import java.util.ArrayList; /** * Hibernate-based {...@link ProcessDAO} implementation. @@ -216,7 +219,16 @@ return new CorrelatorDaoImpl(_sm, correlator); } - public int getNumInstances() { + public Collection<ProcessInstanceDAO> getActiveInstances() { + ArrayList<ProcessInstanceDAO> instDaos = new ArrayList<ProcessInstanceDAO>(); + Collection<HProcessInstance> insts = getSession().getNamedQuery(HProcessInstance.SELECT_ACTIVE_INSTANCES) + .setParameter("processId", _process.getId()).setParameter("state", ProcessState.STATE_ACTIVE).list(); + for (HProcessInstance inst : insts) + instDaos.add(new ProcessInstanceDaoImpl(_sm, inst)); + return instDaos; + } + + public int getNumInstances() { entering("ProcessDaoImpl.getNumInstances"); // this should be efficient if the relation is tagged as extra-lazy. // If the collection is not initialized yet, Hibernate will do a count(*) and the whole collection will not be fetched.
Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java Tue Jan 6 18:00:47 2009 @@ -28,107 +28,109 @@ * @hibernate.query name="DELETE_CORSETS_BY_INSTANCE" query="delete from HCorrelationSet as c where c.instance = :instance" * @hibernate.query name="DELETE_CORSETS_BY_PROCESS" query="delete from HCorrelationSet as c where c.process = :process" * @hibernate.query name="SELECT_CORSETS_BY_INSTANCES" query="from HCorrelationSet as c left join fetch c.properties where c.instance.id in (:instances)" + * @hibernate.query name="SELECT_ACTIVE_CORSETS" query="from HCorrelationSet as c left join fetch c.process left join fetch c.instance where c.instance.state = (:state)" */ public class HCorrelationSet extends HObject{ - public static final String DELETE_CORSETS_BY_INSTANCE = "DELETE_CORSETS_BY_INSTANCE"; - public static final String DELETE_CORSETS_BY_PROCESS = "DELETE_CORSETS_BY_PROCESS"; - public static final String SELECT_CORSETS_BY_INSTANCES = "SELECT_CORSETS_BY_INSTANCES"; - - private HProcess _process; - private HProcessInstance _instance; - private Collection<HCorrelationProperty> _properties = new HashSet<HCorrelationProperty>(); - private HScope _scope; - private String _name; - private String _value; - - public HCorrelationSet() { - super(); - } - - public HCorrelationSet(HScope scope, String name) { - super(); - _scope = scope; - _instance = scope.getInstance(); - _process = _instance.getProcess(); - _name = name; - } - - /** - * @hibernate.property - * column="VALUE" - */ - public String getValue() { - return _value; - } - - public void setName(String name) { - _name = name; - } - - public void setScope(HScope scope) { - _scope = scope; - } - - public void setValue(String value) { - _value = value; - } - - /** - * @hibernate.property - * column="CORR_SET_NAME" - * length="255" - */ - public String getName() { - return _name; - } - - /** - * @hibernate.many-to-one - * column="SCOPE_ID" foreign-key="none" - */ - public HScope getScope() { - return _scope; - } - - /** - * @hibernate.many-to-one - * column="PIID" foreign-key="none" - */ - public HProcessInstance getInstance() { - return _instance; - } - - public void setInstance(HProcessInstance instance) { - _instance = instance; - } - - /** - * @hibernate.many-to-one - * column="PROCESS_ID" foreign-key="none" - */ - public HProcess getProcess() { - return _process; - } - - public void setProcess(HProcess process) { - _process = process; - } - - /** - * @hibernate.set - * lazy="true" - * inverse="true" - * cascade="delete" - * @hibernate.collection-key - * column="CORR_SET_ID" foreign-key="none" - * @hibernate.collection-one-to-many - * class="org.apache.ode.daohib.bpel.hobj.HCorrelationProperty" - */ - public Collection<HCorrelationProperty> getProperties() { - return _properties; - } - - public void setProperties(Collection<HCorrelationProperty> properties) { - _properties = properties; - } + public static final String DELETE_CORSETS_BY_INSTANCE = "DELETE_CORSETS_BY_INSTANCE"; + public static final String DELETE_CORSETS_BY_PROCESS = "DELETE_CORSETS_BY_PROCESS"; + public static final String SELECT_CORSETS_BY_INSTANCES = "SELECT_CORSETS_BY_INSTANCES"; + public static final String SELECT_ACTIVE_CORSETS = "SELECT_ACTIVE_CORSETS"; + + private HProcess _process; + private HProcessInstance _instance; + private Collection<HCorrelationProperty> _properties = new HashSet<HCorrelationProperty>(); + private HScope _scope; + private String _name; + private String _value; + + public HCorrelationSet() { + super(); + } + + public HCorrelationSet(HScope scope, String name) { + super(); + _scope = scope; + _instance = scope.getInstance(); + _process = _instance.getProcess(); + _name = name; + } + + /** + * @hibernate.property + * column="VALUE" + */ + public String getValue() { + return _value; + } + + public void setName(String name) { + _name = name; + } + + public void setScope(HScope scope) { + _scope = scope; + } + + public void setValue(String value) { + _value = value; + } + + /** + * @hibernate.property + * column="CORR_SET_NAME" + * length="255" + */ + public String getName() { + return _name; + } + + /** + * @hibernate.many-to-one + * column="SCOPE_ID" foreign-key="none" + */ + public HScope getScope() { + return _scope; + } + + /** + * @hibernate.many-to-one + * column="PIID" foreign-key="none" + */ + public HProcessInstance getInstance() { + return _instance; + } + + public void setInstance(HProcessInstance instance) { + _instance = instance; + } + + /** + * @hibernate.many-to-one + * column="PROCESS_ID" foreign-key="none" + */ + public HProcess getProcess() { + return _process; + } + + public void setProcess(HProcess process) { + _process = process; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="delete" + * @hibernate.collection-key + * column="CORR_SET_ID" foreign-key="none" + * @hibernate.collection-one-to-many + * class="org.apache.ode.daohib.bpel.hobj.HCorrelationProperty" + */ + public Collection<HCorrelationProperty> getProperties() { + return _properties; + } + + public void setProperties(Collection<HCorrelationProperty> properties) { + _properties = properties; + } } Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java Tue Jan 6 18:00:47 2009 @@ -31,8 +31,10 @@ * @hibernate.query name="DELETE_INSTANCES_BY_PROCESS" query="delete from HProcessInstance as p where p.process = :process" * @hibernate.query name="COUNT_INSTANCES_BY_STATUS_AND_PROCESS_ID" query="select count(i.id) as cnt, max(i.activityFailureDateTime) as lastFailureDt from HProcessInstance as i where i.process.processId = :processId and i.state in(:states) and i.activityFailureCount > 0" * @hibernate.query name="COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID" query="select count(i.id) as cnt, max(i.activityFailureDateTime) as lastFailureDt from HProcessInstance as i where i.process.processId = :processId and i.state in(:states) and i.activityFailureCount > 0" + * @hibernate.query name="SELECT_ACTIVE_INSTANCES" query="from HProcessInstance as i where i.process.id = :processId and i.state = :state" */ public class HProcessInstance extends HObject { + public static final String SELECT_ACTIVE_INSTANCES="SELECT_ACTIVE_INSTANCES"; public static final String DELETE_INSTANCES_BY_PROCESS="DELETE_INSTANCES_BY_PROCESS"; public static final String COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID="COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID"; Modified: ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java Tue Jan 6 18:00:47 2009 @@ -144,8 +144,8 @@ ProcessInstanceDAO pi = null; String[] actions = { "action1","action2" }; String[] correlationKeys = { "key1", "key2" }; - CorrelationKey key1 = new CorrelationKey(1,correlationKeys); - CorrelationKey key2 = new CorrelationKey(2,correlationKeys); + CorrelationKey key1 = new CorrelationKey("key1",correlationKeys); + CorrelationKey key2 = new CorrelationKey("key2",correlationKeys); CorrelationKey[] corrkeys = {key1,key2}; QName[] names = { new QName(TEST_NS,"name1"), new QName(TEST_NS,"name2") }; Modified: ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java Tue Jan 6 18:00:47 2009 @@ -55,7 +55,7 @@ private static final String TEST_NS = "http://org.apache.ode.jpa.test"; private String[] correlationKeys = { "key1", "key2" }; private String[] actions = { "action1","action2" }; - private CorrelationKey key1 = new CorrelationKey(1,correlationKeys); + private CorrelationKey key1 = new CorrelationKey("key",correlationKeys); private static final String CORRELATOR_ID1 = "testCorrelator1"; private static final String CORRELATOR_ID2 = "testCorrelator2"; Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java Tue Jan 6 18:00:47 2009 @@ -137,6 +137,9 @@ _emf.close(); } + public DataSource getDataSource() { + return _ds; + } private class TxMgrProvider implements ManagedRuntime { public TxMgrProvider() { Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java Tue Jan 6 18:00:47 2009 @@ -38,6 +38,7 @@ import org.apache.ode.bpel.common.BpelEventFilter; import org.apache.ode.bpel.common.Filter; import org.apache.ode.bpel.common.InstanceFilter; +import org.apache.ode.bpel.common.ProcessState; import org.apache.ode.bpel.dao.BpelDAOConnection; import org.apache.ode.bpel.dao.CorrelationSetDAO; import org.apache.ode.bpel.dao.MessageExchangeDAO; @@ -55,10 +56,10 @@ * @author Matthieu Riou <mriou at apache dot org> */ public class BPELDAOConnectionImpl implements BpelDAOConnection { - - static final Log __log = LogFactory.getLog(BPELDAOConnectionImpl.class); - - protected EntityManager _em; + + static final Log __log = LogFactory.getLog(BPELDAOConnectionImpl.class); + + protected EntityManager _em; public BPELDAOConnectionImpl(EntityManager em) { _em = em; @@ -75,8 +76,8 @@ // TODO throw new UnsupportedOperationException(); } - - public ProcessInstanceDAO getInstance(Long iid) { + + public ProcessInstanceDAO getInstance(Long iid) { ProcessInstanceDAOImpl instance = _em.find(ProcessInstanceDAOImpl.class, iid); return instance; } @@ -124,8 +125,8 @@ eventDao.setScopeId(((ScopeEvent) event).getScopeId()); eventDao.setEvent(event); _em.persist(eventDao); - } - + } + private static String dateFilter(String filter) { String date = Filter.getDateWithoutOp(filter); String op = filter.substring(0,filter.indexOf(date)); @@ -139,7 +140,7 @@ return op + " '" + ts.toString() + "'"; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") public Collection<ProcessInstanceDAO> instanceQuery(InstanceFilter criteria) { StringBuffer query = new StringBuffer(); query.append("select pi from ProcessInstanceDAOImpl as pi left join fetch pi._fault "); @@ -147,7 +148,7 @@ if (criteria != null) { // Building each clause ArrayList<String> clauses = new ArrayList<String>(); - + // iid filter if ( criteria.getIidFilter() != null ) { StringBuffer filters = new StringBuffer(); @@ -158,7 +159,7 @@ } clauses.add(" (" + filters + ")"); } - + // pid filter if (criteria.getPidFilter() != null) { StringBuffer filters = new StringBuffer(); @@ -169,7 +170,7 @@ } clauses.add(" (" + filters + ")"); } - + // name filter if (criteria.getNameFilter() != null) { String val = criteria.getNameFilter(); @@ -181,30 +182,30 @@ //because the name space and name are stored together clauses.add(" pi._process._processType like '%" + val + "'"); } - + // name space filter if (criteria.getNamespaceFilter() != null) { //process type string begins with name space //this could possibly match more than you want //because the name space and name are stored together - clauses.add(" pi._process._processType like '{" + + clauses.add(" pi._process._processType like '{" + criteria.getNamespaceFilter() + "%'"); } - + // started filter if (criteria.getStartedDateFilter() != null) { for ( String ds : criteria.getStartedDateFilter() ) { clauses.add(" pi._dateCreated " + dateFilter(ds)); } } - + // last-active filter if (criteria.getLastActiveDateFilter() != null) { for ( String ds : criteria.getLastActiveDateFilter() ) { clauses.add(" pi._lastActive " + dateFilter(ds)); } } - + // status filter if (criteria.getStatusFilter() != null) { StringBuffer filters = new StringBuffer(); @@ -215,12 +216,12 @@ } clauses.add(" (" + filters.toString() + ")"); } - + // $property filter if (criteria.getPropertyValuesFilter() != null) { Map<String,String> props = criteria.getPropertyValuesFilter(); // join to correlation sets - query.append(" inner join pi._rootScope._correlationSets as cs"); + query.append(" inner join pi._rootScope._correlationSets as cs"); int i = 0; for (String propKey : props.keySet()) { i++; @@ -233,7 +234,7 @@ props.get(propKey).replaceAll(" ", " ")+"'"); } } - + // order by StringBuffer orderby = new StringBuffer(""); if (criteria.getOrders() != null) { @@ -275,48 +276,48 @@ if (m < clauses.size() - 1) query.append(" and"); } } - + query.append(orderby); } - + if (__log.isDebugEnabled()) { - __log.debug(query.toString()); + __log.debug(query.toString()); } - + // criteria limit Query pq = _em.createQuery(query.toString()); OpenJPAQuery kq = OpenJPAPersistence.cast(pq); - kq.getFetchPlan().setFetchBatchSize(criteria.getLimit()); + kq.getFetchPlan().setFetchBatchSize(criteria.getLimit()); List<ProcessInstanceDAO> ql = pq.getResultList(); - + Collection<ProcessInstanceDAO> list = new ArrayList<ProcessInstanceDAO>(); - int num = 0; + int num = 0; for (Iterator iterator = ql.iterator(); iterator.hasNext();) { if(num++ > criteria.getLimit()) break; ProcessInstanceDAO processInstanceDAO = (ProcessInstanceDAO) iterator.next(); - list.add(processInstanceDAO); - } - + list.add(processInstanceDAO); + } + return list; - } + } + + + public Collection<ProcessInstanceDAO> instanceQuery(String expression) { + return instanceQuery(new InstanceFilter(expression)); + } + + public void setEntityManger(EntityManager em) { + _em = em; + } - - public Collection<ProcessInstanceDAO> instanceQuery(String expression) { - return instanceQuery(new InstanceFilter(expression)); - } - - public void setEntityManger(EntityManager em) { - _em = em; - } - public MessageExchangeDAO getMessageExchange(String mexid) { return _em.find(MessageExchangeDAOImpl.class, mexid); } public void deleteMessageExchange(MessageExchangeDAO mexDao) { - _em.remove(mexDao); + _em.remove(mexDao); } - + public EntityManager getEntityManager() { return _em; } @@ -330,7 +331,7 @@ for (ProcessInstanceDAO dao: instances) { iids.add(dao.getInstanceId()); } - Collection<CorrelationSetDAOImpl> csets = _em.createNamedQuery(CorrelationSetDAOImpl.SELECT_CORRELATION_SETS_BY_INSTANCES).setParameter("instances", iids).getResultList(); + Collection<CorrelationSetDAOImpl> csets = _em.createNamedQuery(CorrelationSetDAOImpl.SELECT_CORRELATION_SETS_BY_INSTANCES).setParameter("instances", iids).getResultList(); Map<Long, Collection<CorrelationSetDAO>> map = new HashMap<Long, Collection<CorrelationSetDAO>>(); for (CorrelationSetDAOImpl cset: csets) { Long id = cset.getScope().getProcessInstance().getInstanceId(); @@ -344,7 +345,12 @@ return map; } + public Collection<CorrelationSetDAO> getActiveCorrelationSets() { + return _em.createNamedQuery(CorrelationSetDAOImpl.SELECT_ACTIVE_SETS).setParameter("state", ProcessState.STATE_ACTIVE).getResultList(); + } + + public ProcessManagementDAO getProcessManagement() { - return new ProcessManagementDAOImpl(_em); + return new ProcessManagementDAOImpl(_em); } } Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java Tue Jan 6 18:00:47 2009 @@ -22,6 +22,8 @@ import org.apache.ode.bpel.common.CorrelationKey; import org.apache.ode.bpel.dao.CorrelationSetDAO; import org.apache.ode.bpel.dao.ScopeDAO; +import org.apache.ode.bpel.dao.ProcessDAO; +import org.apache.ode.bpel.dao.ProcessInstanceDAO; import javax.persistence.Basic; import javax.persistence.CascadeType; @@ -48,13 +50,15 @@ @NamedQuery(name=CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_IDS, query="delete from CorrelationSetDAOImpl as c where c._correlationSetId in (:ids)"), @NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SETS_BY_INSTANCES, query="select c from CorrelationSetDAOImpl as c left join fetch c._scope left join fetch c._props where c._scope._processInstance._instanceId in (:instances)"), @NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SET_IDS_BY_PROCESS, query="select c._correlationSetId from CorrelationSetDAOImpl as c where c._scope._processInstance._process = :process"), - @NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SET_IDS_BY_INSTANCE, query="select c._correlationSetId from CorrelationSetDAOImpl as c where c._scope._processInstance = :instance") + @NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SET_IDS_BY_INSTANCE, query="select c._correlationSetId from CorrelationSetDAOImpl as c where c._scope._processInstance = :instance"), + @NamedQuery(name=CorrelationSetDAOImpl.SELECT_ACTIVE_SETS, query="select c from CorrelationSetDAOImpl as c left join fetch c._scope where c._scope._processInstance._state = (:state)") }) public class CorrelationSetDAOImpl implements CorrelationSetDAO { public final static String DELETE_CORRELATION_SETS_BY_IDS = "DELETE_CORRELATION_SETS_BY_IDS"; public final static String SELECT_CORRELATION_SETS_BY_INSTANCES = "SELECT_CORRELATION_SETS_BY_INSTANCES"; public final static String SELECT_CORRELATION_SET_IDS_BY_PROCESS = "SELECT_CORRELATION_SET_IDS_BY_PROCESS"; public final static String SELECT_CORRELATION_SET_IDS_BY_INSTANCE = "SELECT_CORRELATION_SET_IDS_BY_INSTANCE"; + public final static String SELECT_ACTIVE_SETS = "SELECT_ACTIVE_SETS"; @Id @Column(name="CORRELATION_SET_ID") @GeneratedValue(strategy=GenerationType.AUTO) @@ -102,10 +106,18 @@ public void setValue(QName[] names, CorrelationKey values) { _correlationKey = values.toCanonicalString(); - for (int m = 0; m < names.length; m++) { - CorrSetProperty prop = new CorrSetProperty(names[m].toString(), values.getValues()[m]); - _props.add(prop); - prop.setCorrSet(this); - } + if (names != null) + for (int m = 0; m < names.length; m++) { + CorrSetProperty prop = new CorrSetProperty(names[m].toString(), values.getValues()[m]); + _props.add(prop); + prop.setCorrSet(this); + } } + + public ProcessDAO getProcess() { + return _scope.getProcessInstance().getProcess(); + } + public ProcessInstanceDAO getInstance() { + return _scope.getProcessInstance(); + } } Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java Tue Jan 6 18:00:47 2009 @@ -20,10 +20,7 @@ package org.apache.ode.dao.jpa; import org.apache.ode.bpel.common.CorrelationKeySet; -import org.apache.ode.bpel.dao.CorrelatorDAO; -import org.apache.ode.bpel.dao.MessageExchangeDAO; -import org.apache.ode.bpel.dao.MessageRouteDAO; -import org.apache.ode.bpel.dao.ProcessInstanceDAO; +import org.apache.ode.bpel.dao.*; import javax.persistence.*; import java.util.ArrayList; @@ -83,7 +80,10 @@ mexImpl.setCorrelationKeySet(correlationKeySet); _exchanges.add(mexImpl); mexImpl.setCorrelator(this); + } + public Collection<CorrelatorMessageDAO> getAllMessages() { + return new ArrayList<CorrelatorMessageDAO>(_exchanges); } @SuppressWarnings("unchecked") @@ -137,6 +137,10 @@ return _correlatorKey; } + public void setCorrelatorId(String newId) { + _correlatorKey = newId; + } + public void removeRoutes(String routeGroupId, ProcessInstanceDAO target) { // remove route across all correlators of the process ((ProcessInstanceDAOImpl)target).removeRoutes(routeGroupId); @@ -151,4 +155,8 @@ } } } + + public Collection<MessageRouteDAO> getAllRoutes() { + return new ArrayList<MessageRouteDAO>(_routes); + } } Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java Tue Jan 6 18:00:47 2009 @@ -22,11 +22,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ode.bpel.common.CorrelationKeySet; -import org.apache.ode.bpel.dao.MessageDAO; -import org.apache.ode.bpel.dao.MessageExchangeDAO; -import org.apache.ode.bpel.dao.PartnerLinkDAO; -import org.apache.ode.bpel.dao.ProcessDAO; -import org.apache.ode.bpel.dao.ProcessInstanceDAO; +import org.apache.ode.bpel.common.CorrelationKey; +import org.apache.ode.bpel.dao.*; import org.apache.ode.utils.DOMUtils; import org.apache.ode.utils.uuid.UUID; import org.w3c.dom.Element; @@ -58,7 +55,7 @@ @NamedQuery(name=MessageExchangeDAOImpl.DELETE_MEXS_BY_PROCESS, query="delete from MessageExchangeDAOImpl as m where m._process = :process"), @NamedQuery(name=MessageExchangeDAOImpl.SELECT_MEX_IDS_BY_PROCESS, query="select m._id from MessageExchangeDAOImpl as m where m._process = :process") }) -public class MessageExchangeDAOImpl extends OpenJPADAO implements MessageExchangeDAO { +public class MessageExchangeDAOImpl extends OpenJPADAO implements MessageExchangeDAO, CorrelatorMessageDAO { private static final Log __log = LogFactory.getLog(MessageExchangeDAOImpl.class); public final static String DELETE_MEXS_BY_PROCESS = "DELETE_MEXS_BY_PROCESS"; @@ -330,6 +327,16 @@ return new CorrelationKeySet(_correlationKeys); } + public CorrelationKey getCorrelationKey() { + if (_correlationKeys == null) return null; + return getCorrelationKeySet().iterator().next(); + } + + public void setCorrelationKey(CorrelationKey ckey) { + _correlationKeys = ckey.toCanonicalString(); + } + + public void release(boolean doClean) { if( doClean ) { deleteMessages(); Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java Tue Jan 6 18:00:47 2009 @@ -87,7 +87,11 @@ public CorrelationKey getCorrelationKey() { return new CorrelationKey(_correlationKey); } - + + public void setCorrelationKey(CorrelationKey key) { + _correlationKey = key.toCanonicalString(); + } + public String getGroupId() { return _groupId; } @@ -107,4 +111,5 @@ public CorrelationKeySet getCorrelationKeySet() { return new CorrelationKeySet(_correlationKey); } + } Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java Tue Jan 6 18:00:47 2009 @@ -22,6 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ode.bpel.common.CorrelationKey; +import org.apache.ode.bpel.common.ProcessState; import org.apache.ode.bpel.dao.CorrelatorDAO; import org.apache.ode.bpel.dao.MessageExchangeDAO; import org.apache.ode.bpel.dao.ProcessDAO; @@ -39,6 +40,7 @@ @Entity @Table(name="ODE_PROCESS") @NamedQueries({ + @NamedQuery(name="ActiveInstances", query="select i from ProcessInstanceDAOImpl as i where i._process = :process and i._state = :state"), @NamedQuery(name="InstanceByCKey", query="select cs._scope._processInstance from CorrelationSetDAOImpl as cs where cs._correlationKey = :ckey"), @NamedQuery(name="CorrelatorByKey", query="select c from CorrelatorDAOImpl as c where c._correlatorKey = :ckey and c._process = :process") }) @@ -201,4 +203,11 @@ public String getGuid() { return _guid; } + + public Collection<ProcessInstanceDAO> getActiveInstances() { + Query qry = getEM().createNamedQuery("ActiveInstances"); + qry.setParameter("process", this); + qry.setParameter("state", ProcessState.STATE_ACTIVE); + return qry.getResultList(); + } } \ No newline at end of file Modified: ode/branches/APACHE_ODE_1.X/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java (original) +++ ode/branches/APACHE_ODE_1.X/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java Tue Jan 6 18:00:47 2009 @@ -68,7 +68,7 @@ private ClassLoader _classLoader; - private static ConcurrentHashMap<String, ObjectStreamClass> _classDescriptors + public static ConcurrentHashMap<String, ObjectStreamClass> _classDescriptors = new ConcurrentHashMap<String, ObjectStreamClass>(); /** Modified: ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java (original) +++ ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java Tue Jan 6 18:00:47 2009 @@ -359,6 +359,7 @@ throw new JBIException(errmsg, ex); } + _ode._scheduler.start(); _receiver = new Receiver(_ode); _receiver.start(); _started = true; Modified: ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java?rev=732195&r1=732194&r2=732195&view=diff ============================================================================== --- ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java (original) +++ ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java Tue Jan 6 18:00:47 2009 @@ -221,6 +221,10 @@ } } + public void setRollbackOnly() throws Exception { + _txm.setRollbackOnly(); + } + public void registerSynchronizer(final Synchronizer synch) throws ContextException { try { _txm.getTransaction().registerSynchronization(new Synchronization() {
