mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
ALF-16520, ALF-16477, ALF-16456, ALF-16453: Clones of fixes already performed in v4.1.2, but couldn't be merged automatically due to activiti-version difference
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@43597 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -54,7 +54,7 @@ import org.junit.Test;
|
||||
*/
|
||||
public abstract class AbstractMultitenantWorkflowTest extends BaseSpringTest
|
||||
{
|
||||
private static final String XML = MimetypeMap.MIMETYPE_XML;
|
||||
protected static final String XML = MimetypeMap.MIMETYPE_XML;
|
||||
|
||||
public static final String DEFAULT_ADMIN_PW = "admin";
|
||||
private final static QName ADHOC_TASK = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "adhocTask");
|
||||
@@ -64,15 +64,15 @@ public abstract class AbstractMultitenantWorkflowTest extends BaseSpringTest
|
||||
|
||||
private TenantAdminService tenantAdminService;
|
||||
|
||||
private TenantService tenantService;
|
||||
protected TenantService tenantService;
|
||||
|
||||
private ServiceRegistry serviceRegistry;
|
||||
protected ServiceRegistry serviceRegistry;
|
||||
|
||||
private WorkflowService workflowService;
|
||||
private PersonService personService;
|
||||
protected WorkflowService workflowService;
|
||||
protected PersonService personService;
|
||||
|
||||
private String user1;
|
||||
private String user2;
|
||||
protected String user1;
|
||||
protected String user2;
|
||||
|
||||
private WorkflowTestHelper wfTestHelper;
|
||||
|
||||
@@ -250,7 +250,7 @@ public abstract class AbstractMultitenantWorkflowTest extends BaseSpringTest
|
||||
return definition;
|
||||
}
|
||||
|
||||
private InputStream getInputStream(String resource)
|
||||
protected InputStream getInputStream(String resource)
|
||||
{
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
return classLoader.getResourceAsStream(resource);
|
||||
|
@@ -19,7 +19,14 @@
|
||||
|
||||
package org.alfresco.repo.workflow.activiti;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.workflow.AbstractMultitenantWorkflowTest;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDeployment;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
@@ -29,6 +36,10 @@ import org.alfresco.service.namespace.QName;
|
||||
*/
|
||||
public class ActivitiMultitenantWorkflowTest extends AbstractMultitenantWorkflowTest
|
||||
{
|
||||
private static final String CALLACTIVITY_SUBPROCESS_LOCATION = "activiti/test-callactivity-subprocess.bpmn20.xml";
|
||||
private static final String CALLACTIVITY_MAINPROCESS_LOCATION = "activiti/test-callactivity-main.bpmn20.xml";
|
||||
|
||||
|
||||
@Override
|
||||
protected String getEngine()
|
||||
{
|
||||
@@ -52,5 +63,31 @@ public class ActivitiMultitenantWorkflowTest extends AbstractMultitenantWorkflow
|
||||
{
|
||||
return "activiti$activitiAdhoc";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* ALF-15939: Call-activity should be multi-tenant aware.
|
||||
*/
|
||||
public void testSubProcessCallActivity() throws Exception
|
||||
{
|
||||
// Run as User1 so tenant domain 1
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(user1);
|
||||
|
||||
// Deploy called sub-process on tenant domain 1
|
||||
InputStream input = getInputStream(CALLACTIVITY_SUBPROCESS_LOCATION);
|
||||
WorkflowDeployment deployment = workflowService.deployDefinition(getEngine(), input, XML);
|
||||
|
||||
// Deploy called main-process on tenant domain 1
|
||||
input = getInputStream(CALLACTIVITY_MAINPROCESS_LOCATION);
|
||||
deployment = workflowService.deployDefinition(getEngine(), input, XML);
|
||||
WorkflowDefinition mainProcessDefinition = deployment.getDefinition();
|
||||
|
||||
// Start a process, which immediately tries to call the sub-process before returning control to thread
|
||||
try {
|
||||
workflowService.startWorkflow(mainProcessDefinition.getId(), new HashMap<QName, Serializable>());
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
fail("No exception was expected while running process, but got: " + e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -22,6 +22,7 @@ import java.util.List;
|
||||
|
||||
import org.activiti.engine.delegate.ExecutionListener;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
import org.activiti.engine.impl.bpmn.behavior.CallActivityBehavior;
|
||||
import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
|
||||
import org.activiti.engine.impl.bpmn.parser.BpmnParseListener;
|
||||
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
|
||||
@@ -139,7 +140,17 @@ public class AlfrescoBpmnParseListener implements BpmnParseListener
|
||||
@Override
|
||||
public void parseCallActivity(Element callActivityElement, ScopeImpl scope, ActivityImpl activity)
|
||||
{
|
||||
// Nothing to do here
|
||||
if (tenantService.isEnabled())
|
||||
{
|
||||
ActivityBehavior activityBehavior = activity.getActivityBehavior();
|
||||
if(activityBehavior instanceof CallActivityBehavior)
|
||||
{
|
||||
CallActivityBehavior callActivity = (CallActivityBehavior) activityBehavior;
|
||||
|
||||
// Make name of process-definition to be called aware of the current tenant
|
||||
callActivity.setProcessDefinitonKey(tenantService.getName(callActivity.getProcessDefinitonKey()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user