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:
Frederik Heremans
2012-11-14 09:53:02 +00:00
parent 72bef82fc6
commit 46e7e0e7e8
20 changed files with 178 additions and 20 deletions

View File

@@ -174,6 +174,7 @@
<ref bean="patch.db-V4.1-remove-column-activiti" /> <ref bean="patch.db-V4.1-remove-column-activiti" />
<ref bean="patch.db-V4.2-upgrade-to-activiti-5.10" /> <ref bean="patch.db-V4.2-upgrade-to-activiti-5.10" />
<ref bean="patch.db-V4.1-rename-constraint-activiti" /> <ref bean="patch.db-V4.1-rename-constraint-activiti" />
<ref bean="patch.db-V4.2-add-activti-index-historic-activity" />
</list> </list>
</property> </property>
</bean> </bean>

View File

@@ -1241,6 +1241,12 @@
<columnname>END_TIME_</columnname> <columnname>END_TIME_</columnname>
</columnnames> </columnnames>
</index> </index>
<index name="ACT_IDX_HI_ACT_INST_PROCINST" unique="false">
<columnnames>
<columnname>PROC_INST_ID_</columnname>
<columnname>ACT_ID_</columnname>
</columnnames>
</index>
</indexes> </indexes>
</table> </table>
<table name="act_hi_detail"> <table name="act_hi_detail">

View File

@@ -163,6 +163,12 @@
<columnname>start_time_</columnname> <columnname>start_time_</columnname>
</columnnames> </columnnames>
</index> </index>
<index name="act_idx_hi_act_inst_procinst" unique="false">
<columnnames>
<columnname>proc_inst_id_</columnname>
<columnname>act_id_</columnname>
</columnnames>
</index>
</indexes> </indexes>
</table> </table>
<table name="act_hi_attachment"> <table name="act_hi_attachment">

View File

@@ -0,0 +1,23 @@
--
-- Title: Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)
-- Database: Generic
-- Since: V4.2 Schema 6022
-- Author: Frederik Heremans
--
-- Please contact support@alfresco.com if you need assistance with the upgrade.
--
-- Add index to historic activity table
create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); --(optional)
--
-- Record script finish
--
DELETE FROM alf_applied_patch WHERE id = 'patch.db-V4.2-add-activti-index-historic-activity';
INSERT INTO alf_applied_patch
(id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report)
VALUES
(
'patch.db-V4.2-add-activti-index-historic-activity', 'Additional index created on ACT_HI_ACTINST',
0, 6021, -1, 6022, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed'
);

View File

@@ -488,4 +488,5 @@ patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to incr
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.renameConstraintActiviti.description=ALF-15828 : DB2: Upgrade script to rename ACT_HI_PROCINST.PROC_INST_ID_ index patch.renameConstraintActiviti.description=ALF-15828 : DB2: Upgrade script to rename ACT_HI_PROCINST.PROC_INST_ID_ index
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -487,4 +487,5 @@ patch.show.audit.success=show_audit.ftl was updated successfully
patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti patch.increaseColumnSizeActiviti.description=ALF-14983 : Upgrade scripts to increase column sizes for Activiti
patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_ patch.removeColumnActiviti.description=ALF-16038 : DB2: Upgrade script to remove ALFUSER.ACT_HI_ACTINST.OWNER_
patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version patch.upgradeToActiviti5-10.description=Upgraded Activiti tables to 5.10 version
patch.addActivtiIndexHistoricActivity.description=Additional index for activiti on historic activity (PROC_INST_ID_ and ACTIVITY_ID_)

View File

@@ -3423,4 +3423,15 @@
</property> </property>
</bean> </bean>
<bean id="patch.db-V4.2-add-activti-index-historic-activity" class="org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch" parent="basePatch">
<property name="id" value="patch.db-V4.2-add-activti-index-historic-activity" />
<property name="description" value="patch.addActivtiIndexHistoricActivity.description" />
<property name="fixesFromSchema" value="0" />
<property name="fixesToSchema" value="6021" />
<property name="targetSchema" value="6022" />
<property name="scriptUrl">
<value>classpath:alfresco/dbscripts/upgrade/4.2/${db.script.dialect}/add-activti-index-historic-activity.sql</value>
</property>
</bean>
</beans> </beans>

View File

@@ -19,4 +19,4 @@ version.build=@build-number@
# Schema number # Schema number
version.schema=6021 version.schema=6022

View File

@@ -54,7 +54,7 @@ import org.junit.Test;
*/ */
public abstract class AbstractMultitenantWorkflowTest extends BaseSpringTest 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"; public static final String DEFAULT_ADMIN_PW = "admin";
private final static QName ADHOC_TASK = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "adhocTask"); 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 TenantAdminService tenantAdminService;
private TenantService tenantService; protected TenantService tenantService;
private ServiceRegistry serviceRegistry; protected ServiceRegistry serviceRegistry;
private WorkflowService workflowService; protected WorkflowService workflowService;
private PersonService personService; protected PersonService personService;
private String user1; protected String user1;
private String user2; protected String user2;
private WorkflowTestHelper wfTestHelper; private WorkflowTestHelper wfTestHelper;
@@ -250,7 +250,7 @@ public abstract class AbstractMultitenantWorkflowTest extends BaseSpringTest
return definition; return definition;
} }
private InputStream getInputStream(String resource) protected InputStream getInputStream(String resource)
{ {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
return classLoader.getResourceAsStream(resource); return classLoader.getResourceAsStream(resource);

View File

@@ -19,7 +19,14 @@
package org.alfresco.repo.workflow.activiti; 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.repo.workflow.AbstractMultitenantWorkflowTest;
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
import org.alfresco.service.cmr.workflow.WorkflowDeployment;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
/** /**
@@ -29,6 +36,10 @@ import org.alfresco.service.namespace.QName;
*/ */
public class ActivitiMultitenantWorkflowTest extends AbstractMultitenantWorkflowTest 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 @Override
protected String getEngine() protected String getEngine()
{ {
@@ -52,5 +63,31 @@ public class ActivitiMultitenantWorkflowTest extends AbstractMultitenantWorkflow
{ {
return "activiti$activitiAdhoc"; 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());
}
}
} }

View File

@@ -22,6 +22,7 @@ import java.util.List;
import org.activiti.engine.delegate.ExecutionListener; import org.activiti.engine.delegate.ExecutionListener;
import org.activiti.engine.delegate.TaskListener; 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.behavior.UserTaskActivityBehavior;
import org.activiti.engine.impl.bpmn.parser.BpmnParseListener; import org.activiti.engine.impl.bpmn.parser.BpmnParseListener;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
@@ -139,7 +140,17 @@ public class AlfrescoBpmnParseListener implements BpmnParseListener
@Override @Override
public void parseCallActivity(Element callActivityElement, ScopeImpl scope, ActivityImpl activity) 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 @Override

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" ?>
<definitions id="test-callactivity-definitions" typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://activiti.org/bpmn20"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti="http://activiti.org/bpmn">
<process id="callactivityMain" name="Test Task Process">
<startEvent id="start2" activiti:formKey="bpm_foo" />
<sequenceFlow id='flow1' sourceRef='start2'
targetRef='callactivity' />
<callActivity id="callactivity" calledElement="callactivitySub" />
<sequenceFlow id='flow2' sourceRef='callactivity'
targetRef='task' />
<userTask id="task" name="Task"
activiti:candidateGroups="GROUP_testGroup"
activiti:candidateUsers="testUser"
activiti:formKey="bpm_foo_task">
</userTask>
<sequenceFlow id='flow3' sourceRef='task'
targetRef='end2' />
<endEvent id="end2" />
</process>
</definitions>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<definitions id="test-callactivity-definitions" typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://activiti.org/bpmn20"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti="http://activiti.org/bpmn">
<!-- Simple sub-process that just does nothing -->
<process id="callactivitySub" name="Test Sub Process">
<startEvent id="start2" activiti:formKey="bpm_foo" />
<sequenceFlow id='flow1' sourceRef='start2'
targetRef='end2' />
<endEvent id="end2" />
</process>
</definitions>