diff --git a/config/alfresco/jbpm-context.xml b/config/alfresco/jbpm-context.xml new file mode 100644 index 0000000000..4c029ab307 --- /dev/null +++ b/config/alfresco/jbpm-context.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/alfresco/workflow-context.xml b/config/alfresco/workflow-context.xml index 5cecc77b2d..5ec8d95f9f 100644 --- a/config/alfresco/workflow-context.xml +++ b/config/alfresco/workflow-context.xml @@ -92,28 +92,7 @@ - - - - - - - - - - - - - - - - - - - ${spaces.store} - /${spaces.company_home.childname} - - + diff --git a/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java b/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java index e1f119158d..b2ae805bdd 100644 --- a/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java +++ b/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java @@ -696,6 +696,11 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT checkWorkflows(defId, instance1, instance2); } + + public void testDeleteWorkflow() throws Exception + { + //TODO Implement this test! + } public void checkWorkflows(String defId, String... expectedIds) { List workflows = workflowService.getWorkflows(defId); diff --git a/source/java/org/alfresco/repo/workflow/StartWorkflowActionExecuter.java b/source/java/org/alfresco/repo/workflow/StartWorkflowActionExecuter.java index e0db189097..6767562cab 100644 --- a/source/java/org/alfresco/repo/workflow/StartWorkflowActionExecuter.java +++ b/source/java/org/alfresco/repo/workflow/StartWorkflowActionExecuter.java @@ -50,7 +50,6 @@ public class StartWorkflowActionExecuter extends ActionExecuterAbstractBase public static final String PARAM_END_START_TASK = "endStartTask"; public static final String PARAM_START_TASK_TRANSITION = "startTaskTransition"; - // action dependencies private NamespaceService namespaceService; private WorkflowService workflowService; diff --git a/source/java/org/alfresco/repo/workflow/WorkflowTestSuite.java b/source/java/org/alfresco/repo/workflow/WorkflowTestSuite.java index 17e043e731..0d4cdb4f8b 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowTestSuite.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowTestSuite.java @@ -26,11 +26,9 @@ import org.alfresco.repo.workflow.activiti.ActivitiSpringTransactionTest; import org.alfresco.repo.workflow.activiti.ActivitiTimerExecutionTest; import org.alfresco.repo.workflow.activiti.ActivitiWorkflowServiceIntegrationTest; import org.alfresco.repo.workflow.jbpm.AlfrescoJavaScriptIntegrationTest; -import org.alfresco.repo.workflow.jbpm.JBPMDeleteProcessTest; import org.alfresco.repo.workflow.jbpm.JBPMEngineTest; import org.alfresco.repo.workflow.jbpm.JBPMSpringTest; import org.alfresco.repo.workflow.jbpm.JbpmWorkflowServiceIntegrationTest; -import org.alfresco.repo.workflow.jbpm.NodeListConverterTest; import org.alfresco.repo.workflow.jbpm.ReviewAndApproveTest; import org.alfresco.util.ApplicationContextHelper; @@ -55,8 +53,6 @@ public class WorkflowTestSuite extends TestSuite suite.addTestSuite( StartWorkflowActionExecuterTest.class ); suite.addTestSuite( JbpmWorkflowServiceIntegrationTest.class ); suite.addTestSuite( ReviewAndApproveTest.class ); - suite.addTestSuite( NodeListConverterTest.class ); - suite.addTestSuite( JBPMDeleteProcessTest.class ); suite.addTestSuite( JBPMSpringTest.class ); suite.addTestSuite( JBPMEngineTest.class ); suite.addTestSuite( AlfrescoJavaScriptIntegrationTest.class ); diff --git a/source/java/org/alfresco/repo/workflow/activiti/variable/ScriptNodeListVariableType.java b/source/java/org/alfresco/repo/workflow/activiti/variable/ScriptNodeListVariableType.java index f2fc74b8e9..4ee2dc6f96 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/variable/ScriptNodeListVariableType.java +++ b/source/java/org/alfresco/repo/workflow/activiti/variable/ScriptNodeListVariableType.java @@ -38,14 +38,14 @@ import org.alfresco.service.cmr.repository.NodeRef; */ public class ScriptNodeListVariableType extends SerializableType { - public static final String TYPE_NAME = "alfrescoScriptNodeList"; + public static final String TYPE = "alfrescoScriptNodeList"; private ServiceRegistry serviceRegistry; @Override public String getTypeName() { - return TYPE_NAME; + return TYPE; } @Override diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoAssignment.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoAssignment.java index 782f845299..d824eee8ee 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoAssignment.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoAssignment.java @@ -93,20 +93,20 @@ public class AlfrescoAssignment extends JBPMSpringAssignmentHandler throw new WorkflowException("actor expression '" + actorValStr + "' evaluates to null"); } - String actor = null; + String theActor = null; if (eval instanceof String) { - actor = (String)eval; + theActor = (String)eval; } else if (eval instanceof JBPMNode) { - actor = mapAuthorityToName((JBPMNode)eval, false); + theActor = mapAuthorityToName((JBPMNode)eval, false); } - if (actor == null) + if (theActor == null) { throw new WorkflowException("actor expression must evaluate to a person"); } - assignedActor = actor; + assignedActor = theActor; } else { @@ -140,30 +140,30 @@ public class AlfrescoAssignment extends JBPMSpringAssignmentHandler assignedPooledActors = new String[nodes.length]; int i = 0; - for (ScriptNode node : (ScriptNode[])nodes) + for (ScriptNode node : nodes) { - String actor = mapAuthorityToName(node, true); - if (actor == null) + String theActor = mapAuthorityToName(node, true); + if (theActor == null) { throw new WorkflowException("pooledactors expression does not evaluate to a collection of authorities"); } - assignedPooledActors[i++] = actor; + assignedPooledActors[i++] = theActor; } } if (eval instanceof Collection) { List actors = new ArrayList(); - Collection nodes = (Collection)eval; + Collection nodes = (Collection)eval; for (Object node : nodes) { if (node instanceof ScriptNode) { - String actor = mapAuthorityToName((ScriptNode)node, true); - if (actor == null) + String theActor = mapAuthorityToName((ScriptNode)node, true); + if (theActor == null) { throw new WorkflowException("pooledactors expression does not evaluate to a collection of authorities"); } - actors.add(actor); + actors.add(theActor); } } assignedPooledActors = new String[actors.size()]; @@ -172,12 +172,12 @@ public class AlfrescoAssignment extends JBPMSpringAssignmentHandler else if (eval instanceof ScriptNode) { ScriptNode node = (ScriptNode)eval; - String actor = mapAuthorityToName(node, true); - if (actor == null) + String theActor = mapAuthorityToName(node, true); + if (theActor == null) { throw new WorkflowException("pooledactors expression does not evaluate to a collection of authorities"); } - assignedPooledActors = new String[] {actor}; + assignedPooledActors = new String[] {theActor}; } else if (eval instanceof String) { diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJbpmConfigurationFactoryBean.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJbpmConfigurationFactoryBean.java index f5c9c4f936..6fbfab9035 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJbpmConfigurationFactoryBean.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJbpmConfigurationFactoryBean.java @@ -41,7 +41,7 @@ import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; * @author Costin Leau * @author davidc */ -public class AlfrescoJbpmConfigurationFactoryBean implements InitializingBean, FactoryBean, +public class AlfrescoJbpmConfigurationFactoryBean implements InitializingBean, FactoryBean, BeanFactoryAware, BeanNameAware, DisposableBean { private JbpmConfiguration jbpmConfiguration; @@ -74,21 +74,16 @@ public class AlfrescoJbpmConfigurationFactoryBean implements InitializingBean, F this.factoryLocator.setBeanFactory(beanFactory); } - /* - * (non-Javadoc) - * @see - * org.springframework.beans.factory.BeanNameAware#setBeanName(java.lang - * .String) + /** + * {@inheritDoc} */ public void setBeanName(final String name) { this.factoryLocator.setBeanName(name); } - /* - * (non-Javadoc) - * @see - * org.springframework.beans.factory.InitializingBean#afterPropertiesSet() + /** + * {@inheritDoc} */ public void afterPropertiesSet() throws Exception { @@ -115,28 +110,25 @@ public class AlfrescoJbpmConfigurationFactoryBean implements InitializingBean, F } } - /* - * (non-Javadoc) - * @see org.springframework.beans.factory.FactoryBean#getObject() - */ - public Object getObject() throws Exception + /** + * {@inheritDoc} + */ + public JbpmConfiguration getObject() throws Exception { return this.jbpmConfiguration; } - /* - * (non-Javadoc) - * @see org.springframework.beans.factory.FactoryBean#getObjectType() - */ - public Class getObjectType() + /** + * {@inheritDoc} + */ + public Class getObjectType() { return JbpmConfiguration.class; } - /* - * (non-Javadoc) - * @see org.springframework.beans.factory.FactoryBean#isSingleton() - */ + /** + * {@inheritDoc} + */ public boolean isSingleton() { return true; @@ -206,10 +198,9 @@ public class AlfrescoJbpmConfigurationFactoryBean implements InitializingBean, F this.sessionFactory = sessionFactory; } - /* - * (non-Javadoc) - * @see org.springframework.beans.factory.DisposableBean#destroy() - */ + /** + * {@inheritDoc} + */ public void destroy() throws Exception { this.factoryLocator.destroy(); diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutor.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutor.java index 3e3891dec9..1d196b4932 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutor.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutor.java @@ -101,10 +101,11 @@ public class AlfrescoJobExecutor extends JobExecutor } - /* (non-Javadoc) - * @see org.jbpm.job.executor.JobExecutor#startThread() - */ + /** + * {@inheritDoc} + */ @SuppressWarnings("unchecked") + @Override protected synchronized void startThread() { String threadName = getNextThreadName(); diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java index c3165adcac..9bd874ad52 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java @@ -82,7 +82,7 @@ public class AlfrescoJobExecutorThread extends JobExecutorThread this.jbpmConfiguration = jbpmConfiguration; } - @SuppressWarnings("unchecked") + @SuppressWarnings("rawtypes") @Override protected Collection acquireJobs() { @@ -291,17 +291,17 @@ public class AlfrescoJobExecutorThread extends JobExecutorThread private String getExecutorLock() { - String jobLockToken = null; + String lockToken = null; if (alfrescoJobExecutor.getJobExecutorLockEnabled()) { try { - jobLockToken = alfrescoJobExecutor.getJobLockService().getLock(LOCK_QNAME, jobLockTTL, 3000, 10); + lockToken = alfrescoJobExecutor.getJobLockService().getLock(LOCK_QNAME, jobLockTTL, 3000, 10); if (logger.isTraceEnabled()) { - logger.trace(Thread.currentThread().getName()+" got lock token: "+jobLockToken); + logger.trace(Thread.currentThread().getName()+" got lock token: "+lockToken); } } catch (LockAcquisitionException e) @@ -314,51 +314,51 @@ public class AlfrescoJobExecutorThread extends JobExecutorThread } } - return jobLockToken; + return lockToken; } - private void refreshExecutorLock(String jobLockToken) + private void refreshExecutorLock(String lockToken) { - if (jobLockToken != null) + if (lockToken != null) { try { - alfrescoJobExecutor.getJobLockService().refreshLock(jobLockToken, LOCK_QNAME, jobLockTTL); + alfrescoJobExecutor.getJobLockService().refreshLock(lockToken, LOCK_QNAME, jobLockTTL); if (logger.isTraceEnabled()) { - logger.trace(Thread.currentThread().getName()+" refreshed lock token: "+jobLockToken); + logger.trace(Thread.currentThread().getName()+" refreshed lock token: "+lockToken); } } catch (LockAcquisitionException e) { if (logger.isTraceEnabled()) { - logger.trace("Failed to refresh Alfresco Job Executor lock - may no longer exist ("+jobLockToken+")"); + logger.trace("Failed to refresh Alfresco Job Executor lock - may no longer exist ("+lockToken+")"); } throw e; } } } - private void releaseExecutorLock(String jobLockToken) + private void releaseExecutorLock(String lockToken) { - if (jobLockToken != null) + if (lockToken != null) { try { - alfrescoJobExecutor.getJobLockService().releaseLock(jobLockToken, LOCK_QNAME); + alfrescoJobExecutor.getJobLockService().releaseLock(lockToken, LOCK_QNAME); if (logger.isTraceEnabled()) { - logger.trace(Thread.currentThread().getName()+" released lock token: "+jobLockToken); + logger.trace(Thread.currentThread().getName()+" released lock token: "+lockToken); } } catch (LockAcquisitionException e) { if (logger.isTraceEnabled()) { - logger.trace("Failed to release Alfresco Job Executor lock - may no longer exist ("+jobLockToken+")"); + logger.trace("Failed to release Alfresco Job Executor lock - may no longer exist ("+lockToken+")"); } throw e; } diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMDeleteProcessTest.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMDeleteProcessTest.java deleted file mode 100644 index e2c5d31ca7..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMDeleteProcessTest.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco 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 3 of the License, or - * (at your option) any later version. - * - * Alfresco 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 Alfresco. If not, see . - */ -package org.alfresco.repo.workflow.jbpm; - - -import java.util.List; - -import org.alfresco.util.BaseSpringTest; -import org.jbpm.JbpmConfiguration; -import org.jbpm.JbpmContext; -import org.jbpm.db.GraphSession; -import org.jbpm.db.TaskMgmtSession; -import org.jbpm.graph.def.ProcessDefinition; -import org.jbpm.graph.exe.ProcessInstance; -import org.jbpm.graph.exe.Token; -import org.jbpm.taskmgmt.exe.TaskInstance; - - -/** - * Unit Test for reproducing constraint violation during JBPM process deletion - * - * http://jira.jboss.com/jira/browse/JBPM-757 - * - * @author davidc - */ - -public class JBPMDeleteProcessTest extends BaseSpringTest { - - JbpmConfiguration jbpmConfiguration; - long processId = -1L; - String currentTokenPath; - - - @Override - protected void onSetUpInTransaction() throws Exception - { - jbpmConfiguration = (JbpmConfiguration) getApplicationContext().getBean("jbpm_configuration"); - } - - public void testDelete() { - deployProcessDefinition(); - - startProcess(); - step2TaskEnd(); - deleteProcess(); - } - - public void deployProcessDefinition() { - ProcessDefinition processDefinition = ProcessDefinition.parseXmlString - ( - "" + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - " " + - "" - ); - - JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); - try { - jbpmContext.deployProcessDefinition(processDefinition); - } finally { - jbpmContext.close(); - } - } - - public void startProcess() { - - JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); - try { - - GraphSession graphSession = jbpmContext.getGraphSession(); - - ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("deletetest"); - ProcessInstance processInstance = new ProcessInstance(processDefinition); - processId = processInstance.getId(); - - TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance(); - taskInstance.setVariableLocally("var1", "var1Value"); - taskInstance.end(); - Token token = taskInstance.getToken(); - currentTokenPath = token.getFullName(); - - jbpmContext.save(processInstance); - } finally { - jbpmContext.close(); - } - } - - public void step2TaskEnd() { - - JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); - try { - - GraphSession graphSession = jbpmContext.getGraphSession(); - ProcessInstance processInstance = graphSession.loadProcessInstance(processId); - Token token = processInstance.findToken(currentTokenPath); - TaskMgmtSession taskSession = jbpmContext.getTaskMgmtSession(); - List tasks = taskSession.findTaskInstancesByToken(token.getId()); - TaskInstance taskInstance = (TaskInstance)tasks.get(0); - - // - // Uncomment the following line to force constraint violation - // - taskInstance.setVariableLocally("var1", "var1TaskValue"); - - taskInstance.setVariableLocally("var2", "var2UpdatedValue"); - taskInstance.end(); - token = taskInstance.getToken(); - currentTokenPath = token.getFullName(); - - jbpmContext.save(processInstance); - } finally { - jbpmContext.close(); - } - } - - - public void deleteProcess() - { - JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); - try { - - GraphSession graphSession = jbpmContext.getGraphSession(); - ProcessInstance processInstance = graphSession.loadProcessInstance(processId); - graphSession.deleteProcessInstance(processInstance, true, true); - } finally { - jbpmContext.close(); - } - } - -} \ No newline at end of file diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java index 33134413a3..7e81588180 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java @@ -2094,7 +2094,8 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine { JBPMJpdlXmlReader jpdlReader = new JBPMJpdlXmlReader(definitionStream); ProcessDefinition def = jpdlReader.readProcessDefinition(); - compiledDef = new CompiledProcessDefinition(def, jpdlReader.getProblems()); + List problems = jpdlReader.getProblems(); + compiledDef = new CompiledProcessDefinition(def, problems); } catch(Exception e) { diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlXmlReader.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlXmlReader.java index fbf1efa920..14261091b8 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlXmlReader.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlXmlReader.java @@ -22,7 +22,6 @@ import java.io.InputStream; import java.io.Reader; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; @@ -32,6 +31,7 @@ import org.jbpm.graph.def.Event; import org.jbpm.graph.def.Node; import org.jbpm.instantiation.Delegation; import org.jbpm.jpdl.xml.JpdlXmlReader; +import org.jbpm.jpdl.xml.Problem; import org.jbpm.jpdl.xml.ProblemListener; import org.jbpm.scheduler.def.CancelTimerAction; import org.jbpm.scheduler.def.CreateTimerAction; @@ -81,9 +81,10 @@ public class JBPMJpdlXmlReader extends JpdlXmlReader super(reader); } - /* (non-Javadoc) - * @see org.jbpm.jpdl.xml.JpdlXmlReader#readNodeTimer(org.dom4j.Element, org.jbpm.graph.def.Node) - */ + /** + * {@inheritDoc} + */ + @Override protected void readNodeTimer(Element timerElement, Node node) { // NOTE: This method implementation is a copy from the JpdlXmlReader class @@ -103,9 +104,10 @@ public class JBPMJpdlXmlReader extends JpdlXmlReader addAction(node, Event.EVENTTYPE_NODE_LEAVE, cancelTimerAction); } - /* (non-Javadoc) - * @see org.jbpm.jpdl.xml.JpdlXmlReader#readTaskTimer(org.dom4j.Element, org.jbpm.taskmgmt.def.Task) - */ + /** + * {@inheritDoc} + */ + @Override protected void readTaskTimer(Element timerElement, Task task) { // NOTE: This method implementation is a copy from the JpdlXmlReader class @@ -133,7 +135,7 @@ public class JBPMJpdlXmlReader extends JpdlXmlReader addAction(task, Event.EVENTTYPE_TASK_CREATE, createTimerAction); // read the cancel-event types - Collection cancelEventTypes = new ArrayList(); + Collection cancelEventTypes = new ArrayList(); String cancelEventTypeText = timerElement.attributeValue("cancel-event"); if (cancelEventTypeText != null) @@ -150,11 +152,8 @@ public class JBPMJpdlXmlReader extends JpdlXmlReader // set the default cancelEventTypes.add(Event.EVENTTYPE_TASK_END); } - - Iterator iter = cancelEventTypes.iterator(); - while (iter.hasNext()) + for (String cancelEventType : cancelEventTypes) { - String cancelEventType = (String) iter.next(); CancelTimerAction cancelTimerAction = new CancelTimerAction(); cancelTimerAction.setTimerName(name); addAction(task, cancelEventType, cancelTimerAction); @@ -166,7 +165,8 @@ public class JBPMJpdlXmlReader extends JpdlXmlReader * * @return problems */ - public List getProblems() + @SuppressWarnings("unchecked") + public List getProblems() { return problems; } diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringActionHandler.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringActionHandler.java index b43bb51dd7..487eb526c0 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringActionHandler.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringActionHandler.java @@ -35,6 +35,7 @@ import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; */ public abstract class JBPMSpringActionHandler implements ActionHandler { + private static final long serialVersionUID = 6848343645482681529L; /** * Construct diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringAssignmentHandler.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringAssignmentHandler.java index eb5dc9c631..e50349fcb3 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringAssignmentHandler.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringAssignmentHandler.java @@ -33,6 +33,7 @@ import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; */ public abstract class JBPMSpringAssignmentHandler implements AssignmentHandler { + private static final long serialVersionUID = -2233750219905283562L; /** * Construct diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringTest.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringTest.java index 8c930ff629..58e3c1b7d6 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringTest.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringTest.java @@ -43,59 +43,21 @@ public class JBPMSpringTest extends BaseSpringTest //@Override + @SuppressWarnings("deprecation") + @Override protected void onSetUpInTransaction() throws Exception { jbpmTemplate = (JbpmTemplate)applicationContext.getBean("jbpm_template"); descriptorService = (DescriptorService)applicationContext.getBean("DescriptorService"); } - public void testDummy() - { - } - public void testHelloWorld() throws Exception { - // Between the 3 method calls below, all data is passed via the - // database. Here, in this unit test, these 3 methods are executed - // right after each other because we want to test a complete process - // scenario. But in reality, these methods represent different - // requests to a server. - - // Since we start with a clean, empty in-memory database, we have to - // deploy the process first. In reality, this is done once by the - // process developer. deployProcessDefinition(); - - // Suppose we want to start a process instance (=process execution) - // when a user submits a form in a web application... processInstanceIsCreatedWhenUserSubmitsWebappForm(); - - // Then, later, upon the arrival of an asynchronous message the - // execution must continue. - theProcessInstanceContinuesWhenAnAsyncMessageIsReceived(); - } - - public void testStep0() - throws Exception - { - deployProcessDefinition(); - setComplete(); - } - - public void testStep1() - throws Exception - { - processInstanceIsCreatedWhenUserSubmitsWebappForm(); - setComplete(); - } - - public void testStep2() - throws Exception - { theProcessInstanceContinuesWhenAnAsyncMessageIsReceived(); undeployProcessDefinition(); - setComplete(); } private void deployProcessDefinition() @@ -192,7 +154,7 @@ public class JBPMSpringTest extends BaseSpringTest ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("hello world"); // Now, we search for all process instances of this process definition. - List processInstances = graphSession.findProcessInstances(processDefinition.getId()); + List processInstances = graphSession.findProcessInstances(processDefinition.getId()); // Because we know that in the context of this unit test, there is // only one execution. In real life, the processInstanceId can be diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTestSpringActionHandler.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMTestSpringActionHandler.java index fbcd242f43..9360fffa6b 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTestSpringActionHandler.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMTestSpringActionHandler.java @@ -59,7 +59,7 @@ public class JBPMTestSpringActionHandler extends JBPMSpringActionHandler @Override protected void initialiseHandler(BeanFactory factory) { - descriptorService = (DescriptorService)factory.getBean("DescriptorService", DescriptorService.class); + descriptorService = factory.getBean("DescriptorService", DescriptorService.class); } } diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTransactionTemplate.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMTransactionTemplate.java index 47798e871a..35d6868e76 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTransactionTemplate.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMTransactionTemplate.java @@ -75,9 +75,9 @@ public class JBPMTransactionTemplate extends JbpmTemplate } - /* (non-Javadoc) - * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() - */ + /** + * {@inheritDoc} + */ @SuppressWarnings("synthetic-access") @Override public void afterPropertiesSet() throws Exception @@ -93,9 +93,9 @@ public class JBPMTransactionTemplate extends JbpmTemplate } - /* (non-Javadoc) - * @see org.springmodules.workflow.jbpm31.JbpmTemplate#getContext() - */ + /** + * {@inheritDoc} + */ @Override protected JbpmContext getContext() { @@ -120,9 +120,9 @@ public class JBPMTransactionTemplate extends JbpmTemplate } - /* (non-Javadoc) - * @see org.springmodules.workflow.jbpm31.JbpmTemplate#releaseContext(org.jbpm.JbpmContext) - */ + /** + * {@inheritDoc} + */ @Override protected void releaseContext(JbpmContext jbpmContext) { @@ -137,33 +137,36 @@ public class JBPMTransactionTemplate extends JbpmTemplate } - /* (non-Javadoc) - * @see org.alfresco.repo.transaction.TransactionListener#flush() - */ + /** + * {@inheritDoc} + */ public void flush() { + //NOOP } - /* (non-Javadoc) - * @see org.alfresco.repo.transaction.TransactionListener#beforeCommit(boolean) - */ + /** + * {@inheritDoc} + */ public void beforeCommit(boolean readOnly) { + //NOOP } - /* (non-Javadoc) - * @see org.alfresco.repo.transaction.TransactionListener#beforeCompletion() + /** + * {@inheritDoc} */ public void beforeCompletion() { + //NOOP } - /* (non-Javadoc) - * @see org.alfresco.repo.transaction.TransactionListener#afterCommit() - */ + /** + * {@inheritDoc} + */ public void afterCommit() { JbpmContext context = (JbpmContext)AlfrescoTransactionSupport.getResource(JBPM_CONTEXT_KEY); @@ -177,9 +180,9 @@ public class JBPMTransactionTemplate extends JbpmTemplate } - /* (non-Javadoc) - * @see org.alfresco.repo.transaction.TransactionListener#afterRollback() - */ + /** + * {@inheritDoc} + */ public void afterRollback() { JbpmContext context = (JbpmContext)AlfrescoTransactionSupport.getResource(JBPM_CONTEXT_KEY); @@ -194,8 +197,8 @@ public class JBPMTransactionTemplate extends JbpmTemplate /** - * @see java.lang.Object#hashCode() - */ + * {@inheritDoc} + */ @Override public int hashCode() { @@ -203,8 +206,8 @@ public class JBPMTransactionTemplate extends JbpmTemplate } /** - * @see java.lang.Object#equals(java.lang.Object) - */ + * {@inheritDoc} + */ @Override public boolean equals(Object obj) { diff --git a/source/java/org/alfresco/repo/workflow/jbpm/Join.java b/source/java/org/alfresco/repo/workflow/jbpm/Join.java index 43b8037553..9efbae0fce 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/Join.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/Join.java @@ -40,6 +40,7 @@ public class Join extends org.jbpm.graph.node.Join */ public Join() { + super(); } /** @@ -50,16 +51,17 @@ public class Join extends org.jbpm.graph.node.Join super(name); } - /* (non-Javadoc) - * @see org.jbpm.jpdl.xml.Parsable#read(org.dom4j.Element, org.jbpm.jpdl.xml.JpdlXmlReader) - */ + /** + * {@inheritDoc} + */ + @Override public void read(Element element, JpdlXmlReader jpdlReader) { // Add "on node leave" event handler which ends child tokens / tasks Delegation delegation = new Delegation(JoinEndForkedTokens.class.getName()); - Action action = new Action(delegation); + Action theAction = new Action(delegation); Event event = new Event(Event.EVENTTYPE_NODE_LEAVE); - event.addAction(action); + event.addAction(theAction); addEvent(event); } diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JoinEndForkedTokens.java b/source/java/org/alfresco/repo/workflow/jbpm/JoinEndForkedTokens.java index 17ad9b0934..936a3869d7 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JoinEndForkedTokens.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JoinEndForkedTokens.java @@ -41,15 +41,16 @@ public class JoinEndForkedTokens implements ActionHandler */ public JoinEndForkedTokens() { + super(); } - /* (non-Javadoc) - * @see org.jbpm.graph.def.ActionHandler#execute(org.jbpm.graph.exe.ExecutionContext) - */ + /** + * {@inheritDoc} + */ public void execute(ExecutionContext executionContext) { Token token = executionContext.getToken(); - Map childTokens = token.getActiveChildren(); + Map childTokens = token.getActiveChildren(); for (Object childToken : childTokens.values()) { cancelToken(executionContext, (Token)childToken); @@ -65,7 +66,7 @@ public class JoinEndForkedTokens implements ActionHandler protected void cancelToken(ExecutionContext executionContext, Token token) { // visit child tokens - Map childTokens = token.getActiveChildren(); + Map childTokens = token.getActiveChildren(); for (Object childToken : childTokens.values()) { cancelToken(executionContext, (Token)childToken); @@ -90,7 +91,7 @@ public class JoinEndForkedTokens implements ActionHandler protected void cancelTokenTasks(ExecutionContext executionContext, Token token) { TaskMgmtInstance tms = executionContext.getTaskMgmtInstance(); - Collection tasks = tms.getUnfinishedTasks(token); + Collection tasks = tms.getUnfinishedTasks(token); for (Object task : tasks) { TaskInstance taskInstance = (TaskInstance)task; diff --git a/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverter.java b/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverter.java index 01f4f45e8a..c0e16522e2 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverter.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverter.java @@ -41,9 +41,10 @@ public class NodeListConverter extends SerializableToByteArrayConverter private static BeanFactoryLocator jbpmFactoryLocator = new JbpmFactoryLocator(); - /* (non-Javadoc) - * @see org.jbpm.context.exe.Converter#supports(java.lang.Object) - */ + /** + * {@inheritDoc} + */ + @Override public boolean supports(Object value) { if (value == null) @@ -53,9 +54,10 @@ public class NodeListConverter extends SerializableToByteArrayConverter return (value.getClass() == JBPMNodeList.class); } - /* (non-Javadoc) - * @see org.jbpm.context.exe.Converter#convert(java.lang.Object) - */ + /** + * {@inheritDoc} + */ + @Override public Object convert(Object o) { Object converted = null; @@ -72,9 +74,10 @@ public class NodeListConverter extends SerializableToByteArrayConverter return converted; } - /* (non-Javadoc) - * @see org.jbpm.context.exe.Converter#revert(java.lang.Object) - */ + /** + * {@inheritDoc} + */ + @Override @SuppressWarnings("unchecked") public Object revert(Object o) { diff --git a/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverterTest.java b/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverterTest.java deleted file mode 100644 index a8383eeba4..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverterTest.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco 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 3 of the License, or - * (at your option) any later version. - * - * Alfresco 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 Alfresco. If not, see . - */ -package org.alfresco.repo.workflow.jbpm; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.alfresco.repo.content.MimetypeMap; -import org.alfresco.repo.security.authentication.AuthenticationComponent; -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.workflow.BPMEngineRegistry; -import org.alfresco.repo.workflow.TaskComponent; -import org.alfresco.repo.workflow.WorkflowComponent; -import org.alfresco.repo.workflow.WorkflowModel; -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.repository.StoreRef; -import org.alfresco.service.cmr.security.PersonService; -import org.alfresco.service.cmr.workflow.WorkflowDefinition; -import org.alfresco.service.cmr.workflow.WorkflowDeployment; -import org.alfresco.service.cmr.workflow.WorkflowPath; -import org.alfresco.service.cmr.workflow.WorkflowTask; -import org.alfresco.service.namespace.QName; -import org.alfresco.util.BaseSpringTest; -import org.springframework.core.io.ClassPathResource; - - -/** - * JBPM Engine Tests - * - * @author davidc - */ -public class NodeListConverterTest extends BaseSpringTest -{ - AuthenticationComponent authenticationComponent; - PersonService personService; - WorkflowComponent workflowComponent; - TaskComponent taskComponent; - WorkflowDefinition testWorkflowDef; - NodeRef testNodeRef; - - private static String taskId = null; - - - @Override - protected void onSetUpInTransaction() throws Exception - { - personService = (PersonService)applicationContext.getBean("personService"); - BPMEngineRegistry registry = (BPMEngineRegistry)applicationContext.getBean("bpm_engineRegistry"); - workflowComponent = registry.getWorkflowComponent("jbpm"); - taskComponent = registry.getTaskComponent("jbpm"); - - // deploy latest review and approve process definition - ClassPathResource processDef = new ClassPathResource("alfresco/workflow/review_processdefinition.xml"); - WorkflowDeployment deployment = workflowComponent.deployDefinition(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML); - testWorkflowDef = deployment.definition; - assertNotNull(testWorkflowDef); - - // run as system - authenticationComponent = (AuthenticationComponent)applicationContext.getBean("authenticationComponent"); - authenticationComponent.setSystemUserAsCurrentUser(); - - // get valid node ref - NodeService nodeService = (NodeService)applicationContext.getBean(ServiceRegistry.NODE_SERVICE.getLocalName()); - testNodeRef = nodeService.getRootNode(new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore")); - } - - - public void testStep1Start() - { - Map params = new HashMap(); - params.put(WorkflowModel.ASSOC_PACKAGE, testNodeRef); - Date reviewDueDate = new Date(); - params.put(QName.createQName("http://www.alfresco.org/model/workflow/1.0", "reviewDueDate"), reviewDueDate); - NodeRef reviewer = personService.getPerson(AuthenticationUtil.getAdminUserName()); - params.put(QName.createQName("http://www.alfresco.org/model/workflow/1.0", "reviewer"), reviewer); - - WorkflowPath path = workflowComponent.startWorkflow(testWorkflowDef.id, params); - assertNotNull(path); - List tasks1 = workflowComponent.getTasksForWorkflowPath(path.id); - assertNotNull(tasks1); - assertEquals(1, tasks1.size()); - - setComplete(); - taskId = tasks1.get(0).id; - } - - - public void testSetNodeRefList() - { - List nodeRefs = new ArrayList(); - nodeRefs.add(testNodeRef); - nodeRefs.add(testNodeRef); - Map params = new HashMap(); - params.put(WorkflowModel.PROP_COMPLETED_ITEMS, (Serializable)nodeRefs); - - WorkflowTask task = taskComponent.getTaskById(taskId); - assertNull(task.properties.get(WorkflowModel.PROP_COMPLETED_ITEMS)); - - WorkflowTask updatedTask = taskComponent.updateTask(taskId, params, null, null); - assertNotNull(updatedTask); - assertTrue(updatedTask.properties.containsKey(WorkflowModel.PROP_COMPLETED_ITEMS)); - assertEquals(2, ((List)updatedTask.properties.get(WorkflowModel.PROP_COMPLETED_ITEMS)).size()); - - setComplete(); - } - - - public void testUpdateNodeRefList() - { - List nodeRefs = new ArrayList(); -// nodeRefs.add(testNodeRef); - Map params = new HashMap(); - params.put(WorkflowModel.PROP_COMPLETED_ITEMS, (Serializable)nodeRefs); - -// WorkflowTask task = taskComponent.getTaskById(taskId); -// assertNotNull(task); -// assertTrue(task.properties.containsKey(WorkflowModel.PROP_COMPLETED_ITEMS)); -// assertEquals(2, ((List)task.properties.get(WorkflowModel.PROP_COMPLETED_ITEMS)).size()); - - WorkflowTask updatedTask = taskComponent.updateTask(taskId, params, null, null); - assertNotNull(updatedTask); - assertTrue(updatedTask.properties.containsKey(WorkflowModel.PROP_COMPLETED_ITEMS)); - assertEquals(0, ((List)updatedTask.properties.get(WorkflowModel.PROP_COMPLETED_ITEMS)).size()); - - setComplete(); - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/ReviewAndApproveTest.java b/source/java/org/alfresco/repo/workflow/jbpm/ReviewAndApproveTest.java index 09cb29cac9..ef5d70063c 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/ReviewAndApproveTest.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/ReviewAndApproveTest.java @@ -61,8 +61,7 @@ public class ReviewAndApproveTest extends BaseSpringTest WorkflowDefinition testWorkflowDef; NodeRef testNodeRef; - - + @SuppressWarnings("deprecation") @Override protected void onSetUpInTransaction() throws Exception { @@ -74,7 +73,7 @@ public class ReviewAndApproveTest extends BaseSpringTest // deploy latest review and approve process definition ClassPathResource processDef = new ClassPathResource("alfresco/workflow/review_processdefinition.xml"); WorkflowDeployment deployment = workflowComponent.deployDefinition(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML); - testWorkflowDef = deployment.definition; + testWorkflowDef = deployment.getDefinition(); assertNotNull(testWorkflowDef); // run as system @@ -105,27 +104,27 @@ public class ReviewAndApproveTest extends BaseSpringTest params.put(WorkflowModel.ASSOC_ASSIGNEE, reviewer); params.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Test review"); - WorkflowPath path = workflowComponent.startWorkflow(workflowDef.id, params); + WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), params); assertNotNull(path); - List tasks1 = workflowComponent.getTasksForWorkflowPath(path.id); + List tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId()); assertNotNull(tasks1); assertEquals(1, tasks1.size()); WorkflowTask task = tasks1.get(0); - assertTrue(task.properties.containsKey(WorkflowModel.ASSOC_PACKAGE)); - WorkflowTask endedTask = taskComponent.endTask(task.id, null); + assertTrue(task.getProperties().containsKey(WorkflowModel.ASSOC_PACKAGE)); + WorkflowTask endedTask = taskComponent.endTask(task.getId(), null); assertNotNull(endedTask); - assertTrue(endedTask.properties.containsKey(WorkflowModel.PROP_OUTCOME)); - assertEquals("", endedTask.properties.get(WorkflowModel.PROP_OUTCOME)); - assertEquals("Test review", endedTask.properties.get(WorkflowModel.PROP_DESCRIPTION)); - assertEquals("Test review", endedTask.path.instance.description); + assertTrue(endedTask.getProperties().containsKey(WorkflowModel.PROP_OUTCOME)); + assertEquals("", endedTask.getProperties().get(WorkflowModel.PROP_OUTCOME)); + assertEquals("Test review", endedTask.getProperties().get(WorkflowModel.PROP_DESCRIPTION)); + assertEquals("Test review", endedTask.getPath().getInstance().getDescription()); List assignedTasks = taskComponent.getAssignedTasks(AuthenticationUtil.getAdminUserName(), WorkflowTaskState.IN_PROGRESS); assertNotNull(assignedTasks); - assignedTasks = filterTasksByWorkflowInstance(assignedTasks, path.instance.id); + assignedTasks = filterTasksByWorkflowInstance(assignedTasks, path.getInstance().getId()); - assertEquals(testNodeRef, assignedTasks.get(0).properties.get(WorkflowModel.ASSOC_PACKAGE)); - assertEquals(reviewDueDate, assignedTasks.get(0).properties.get(WorkflowModel.PROP_DUE_DATE)); + assertEquals(testNodeRef, assignedTasks.get(0).getProperties().get(WorkflowModel.ASSOC_PACKAGE)); + assertEquals(reviewDueDate, assignedTasks.get(0).getProperties().get(WorkflowModel.PROP_DUE_DATE)); } public void testCompletedItems() @@ -144,15 +143,15 @@ public class ReviewAndApproveTest extends BaseSpringTest NodeRef reviewer = personService.getPerson(AuthenticationUtil.getAdminUserName()); params.put(WorkflowModel.ASSOC_ASSIGNEE, reviewer); - WorkflowPath path = workflowComponent.startWorkflow(workflowDef.id, params); + WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), params); assertNotNull(path); - List tasks1 = workflowComponent.getTasksForWorkflowPath(path.id); + List tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId()); assertNotNull(tasks1); assertEquals(1, tasks1.size()); WorkflowTask task = tasks1.get(0); - assertTrue(task.properties.containsKey(WorkflowModel.PROP_COMPLETED_ITEMS)); - assertEquals(2, ((List)task.properties.get(WorkflowModel.PROP_COMPLETED_ITEMS)).size()); + assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_COMPLETED_ITEMS)); + assertEquals(2, ((List)task.getProperties().get(WorkflowModel.PROP_COMPLETED_ITEMS)).size()); } @@ -168,7 +167,7 @@ public class ReviewAndApproveTest extends BaseSpringTest List filteredTasks = new ArrayList(); for (WorkflowTask task : tasks) { - if (task.path.instance.id.equals(workflowInstanceId)) + if (task.getPath().getInstance().getId().equals(workflowInstanceId)) { filteredTasks.add(task); }