diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml
index e2b3b4bd95..8cedc495d4 100644
--- a/config/alfresco/bootstrap-context.xml
+++ b/config/alfresco/bootstrap-context.xml
@@ -175,6 +175,7 @@
+
diff --git a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/activiti-upgrade-5-11.sql b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/activiti-upgrade-5-11.sql
new file mode 100644
index 0000000000..2ea74c1a46
--- /dev/null
+++ b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/activiti-upgrade-5-11.sql
@@ -0,0 +1,122 @@
+--
+-- Title: Upgraded Activiti tables to 5.11 version
+-- Database: MySQL
+-- Since: V4.1 Schema 6023
+-- Author: Frederik Heremans
+--
+-- Please contact support@alfresco.com if you need assistance with the upgrade.
+--
+-- Upgraded Activiti tables to 5.11 version
+
+alter table ACT_RE_PROCDEF
+ MODIFY KEY_ varchar(255) not null;
+
+alter table ACT_RE_PROCDEF
+ MODIFY VERSION_ integer not null;
+
+-- http://jira.codehaus.org/browse/ACT-1424
+alter table ACT_RU_JOB
+ MODIFY LOCK_EXP_TIME_ timestamp null;
+
+alter table ACT_RE_DEPLOYMENT
+ add CATEGORY_ varchar(255);
+
+alter table ACT_RE_PROCDEF
+ add DESCRIPTION_ varchar(4000);
+
+alter table ACT_RU_TASK
+ add SUSPENSION_STATE_ integer;
+
+update ACT_RU_TASK set SUSPENSION_STATE_ = 1;
+
+alter table ACT_RU_EXECUTION
+ add constraint ACT_FK_EXE_PROCDEF
+ foreign key (PROC_DEF_ID_)
+ references ACT_RE_PROCDEF (ID_);
+
+create table ACT_RE_MODEL (
+ ID_ varchar(64) not null,
+ REV_ integer,
+ NAME_ varchar(255),
+ KEY_ varchar(255),
+ CATEGORY_ varchar(255),
+ CREATE_TIME_ timestamp null,
+ LAST_UPDATE_TIME_ timestamp null,
+ VERSION_ integer,
+ META_INFO_ varchar(4000),
+ DEPLOYMENT_ID_ varchar(64),
+ EDITOR_SOURCE_VALUE_ID_ varchar(64),
+ EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+ primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+alter table ACT_RE_MODEL
+ add constraint ACT_FK_MODEL_SOURCE
+ foreign key (EDITOR_SOURCE_VALUE_ID_)
+ references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RE_MODEL
+ add constraint ACT_FK_MODEL_SOURCE_EXTRA
+ foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_)
+ references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RE_MODEL
+ add constraint ACT_FK_MODEL_DEPLOYMENT
+ foreign key (DEPLOYMENT_ID_)
+ references ACT_RE_DEPLOYMENT (ID_);
+
+delete from ACT_GE_PROPERTY where NAME_ = 'historyLevel';
+
+alter table ACT_RU_JOB
+ add PROC_DEF_ID_ varchar(64);
+
+update ACT_GE_PROPERTY set VALUE_ = '5.11' where NAME_ = 'schema.version';
+
+create table ACT_HI_VARINST (
+ ID_ varchar(64) not null,
+ PROC_INST_ID_ varchar(64),
+ EXECUTION_ID_ varchar(64),
+ TASK_ID_ varchar(64),
+ NAME_ varchar(255) not null,
+ VAR_TYPE_ varchar(100),
+ REV_ integer,
+ BYTEARRAY_ID_ varchar(64),
+ DOUBLE_ double,
+ LONG_ bigint,
+ TEXT_ varchar(4000),
+ TEXT2_ varchar(4000),
+ primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_);
+create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_);
+
+alter table ACT_HI_ACTINST
+ add TASK_ID_ varchar(64);
+
+alter table ACT_HI_ACTINST
+ add CALL_PROC_INST_ID_ varchar(64);
+
+alter table ACT_HI_DETAIL
+ MODIFY PROC_INST_ID_ varchar(64) null;
+
+alter table ACT_HI_DETAIL
+ MODIFY EXECUTION_ID_ varchar(64) null;
+
+--
+-- Update engine properties table
+--
+UPDATE ACT_GE_PROPERTY SET VALUE_ = '5.11' WHERE NAME_ = 'schema.version';
+UPDATE ACT_GE_PROPERTY SET VALUE_ = CONCAT(VALUE_,' upgrade(5.11)') WHERE NAME_ = 'schema.history';
+
+--
+-- Record script finish
+--
+DELETE FROM alf_applied_patch WHERE id = 'patch.db-V4.2-upgrade-to-activiti-5.11';
+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-upgrade-to-activiti-5.11', 'Manually executed script upgrade V4.2: Upgraded Activiti tables to 5.11 version',
+ 0, 5111, -1, 5112, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed'
+ );
\ No newline at end of file
diff --git a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/activiti-upgrade-5-11.sql b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/activiti-upgrade-5-11.sql
new file mode 100644
index 0000000000..62d62340f0
--- /dev/null
+++ b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/activiti-upgrade-5-11.sql
@@ -0,0 +1,119 @@
+--
+-- Title: Upgraded Activiti tables to 5.11 version
+-- Database: Postgres
+-- Since: V4.1 Schema 6023
+-- Author: Frederik Heremans
+--
+-- Please contact support@alfresco.com if you need assistance with the upgrade.
+--
+-- Upgraded Activiti tables to 5.11 version
+
+alter table ACT_RE_PROCDEF
+ alter column KEY_ set not null;
+
+alter table ACT_RE_PROCDEF
+ alter column VERSION_ set not null;
+
+alter table ACT_RE_DEPLOYMENT
+add CATEGORY_ varchar(255);
+
+alter table ACT_RE_PROCDEF
+ add DESCRIPTION_ varchar(4000);
+
+alter table ACT_RU_EXECUTION
+ add constraint ACT_FK_EXE_PROCDEF
+ foreign key (PROC_DEF_ID_)
+ references ACT_RE_PROCDEF (ID_);
+
+alter table ACT_RU_TASK
+ add SUSPENSION_STATE_ integer;
+
+update ACT_RU_TASK set SUSPENSION_STATE_ = 1;
+
+create table ACT_RE_MODEL (
+ ID_ varchar(64) not null,
+ REV_ integer,
+ NAME_ varchar(255),
+ KEY_ varchar(255),
+ CATEGORY_ varchar(255),
+ CREATE_TIME_ timestamp,
+ LAST_UPDATE_TIME_ timestamp,
+ VERSION_ integer,
+ META_INFO_ varchar(4000),
+ DEPLOYMENT_ID_ varchar(64),
+ EDITOR_SOURCE_VALUE_ID_ varchar(64),
+ EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+ primary key (ID_)
+);
+
+create index ACT_IDX_MODEL_SOURCE on ACT_RE_MODEL(EDITOR_SOURCE_VALUE_ID_);
+alter table ACT_RE_MODEL
+ add constraint ACT_FK_MODEL_SOURCE
+ foreign key (EDITOR_SOURCE_VALUE_ID_)
+ references ACT_GE_BYTEARRAY (ID_);
+
+create index ACT_IDX_MODEL_SOURCE_EXTRA on ACT_RE_MODEL(EDITOR_SOURCE_EXTRA_VALUE_ID_);
+alter table ACT_RE_MODEL
+ add constraint ACT_FK_MODEL_SOURCE_EXTRA
+ foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_)
+ references ACT_GE_BYTEARRAY (ID_);
+
+create index ACT_IDX_MODEL_DEPLOYMENT on ACT_RE_MODEL(DEPLOYMENT_ID_);
+alter table ACT_RE_MODEL
+ add constraint ACT_FK_MODEL_DEPLOYMENT
+ foreign key (DEPLOYMENT_ID_)
+ references ACT_RE_DEPLOYMENT (ID_);
+
+delete from ACT_GE_PROPERTY where NAME_ = 'historyLevel';
+
+alter table ACT_RU_JOB
+ add PROC_DEF_ID_ varchar(64);
+
+create table ACT_HI_VARINST (
+ ID_ varchar(64) not null,
+ PROC_INST_ID_ varchar(64),
+ EXECUTION_ID_ varchar(64),
+ TASK_ID_ varchar(64),
+ NAME_ varchar(255) not null,
+ VAR_TYPE_ varchar(100),
+ REV_ integer,
+ BYTEARRAY_ID_ varchar(64),
+ DOUBLE_ double precision,
+ LONG_ bigint,
+ TEXT_ varchar(4000),
+ TEXT2_ varchar(4000),
+ primary key (ID_)
+);
+
+create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_);
+create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_);
+
+alter table ACT_HI_ACTINST
+ add column TASK_ID_ varchar(64);
+
+alter table ACT_HI_ACTINST
+ add column CALL_PROC_INST_ID_ varchar(64);
+
+alter table ACT_HI_DETAIL
+ alter column PROC_INST_ID_ drop not null;
+
+alter table ACT_HI_DETAIL
+ alter column EXECUTION_ID_ drop not null;
+
+--
+-- Update engine properties table
+--
+UPDATE ACT_GE_PROPERTY SET VALUE_ = '5.11' WHERE NAME_ = 'schema.version';
+UPDATE ACT_GE_PROPERTY SET VALUE_ = CONCAT(VALUE_,' upgrade(5.11)') WHERE NAME_ = 'schema.history';
+
+--
+-- Record script finish
+--
+DELETE FROM alf_applied_patch WHERE id = 'patch.db-V4.2-upgrade-to-activiti-5.11';
+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-upgrade-to-activiti-5.11', 'Manually executed script upgrade V4.2: Upgraded Activiti tables to 5.11 version',
+ 0, 5111, -1, 5112, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed'
+ );
\ No newline at end of file
diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml
index cb01bdddc5..4eb911aa38 100644
--- a/config/alfresco/patch/patch-services-context.xml
+++ b/config/alfresco/patch/patch-services-context.xml
@@ -3441,4 +3441,15 @@
+
+ patch.db-V4.2-upgrade-to-activiti-5.11
+ patch.upgradeToActiviti5-11.description
+ 0
+ 6022
+ 6023
+
+ classpath:alfresco/dbscripts/upgrade/4.2/${db.script.dialect}/activiti-upgrade-5-11.sql
+
+
+
diff --git a/config/alfresco/version.properties b/config/alfresco/version.properties
index 4a0e7c46fe..e573d3c17a 100644
--- a/config/alfresco/version.properties
+++ b/config/alfresco/version.properties
@@ -23,4 +23,4 @@ version.build=r@scm-revision@-b@build-number@
# Schema number
-version.schema=6022
+version.schema=6023
diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java
index 16b3365632..4bdcf90bef 100644
--- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java
+++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java
@@ -664,10 +664,12 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
private String getFormKey(TaskDefinition taskDefinition)
{
TaskFormHandler handler = taskDefinition.getTaskFormHandler();
+ // We cast to DefaultTaskFormHandler since we do not configure our own
if(handler != null && handler instanceof DefaultTaskFormHandler)
{
- // We cast to DefaultTaskFormHandler since we do not configure our own
- return ((DefaultTaskFormHandler)handler).getFormKey();
+ // As of Activiti 5.11, form-key is an expression. For alfresco-usecases, we're the expression-text
+ // as is, as this will ALWAYS be a literal string, containing pointer to task-type.
+ return ((DefaultTaskFormHandler)handler).getFormKey().getExpressionText();
}
return null;
}
@@ -1399,6 +1401,9 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
taskService.setAssignee(localTaskId, currentUserName);
// Also update pojo used to set the outcome, this will read assignee as wel
task.setAssignee(currentUserName);
+
+ // Re-fetch the task-entity since it's revision has been updated by the setAssignee() call
+ task = taskService.createTaskQuery().taskId(localTaskId).singleResult();
}
setOutcome(task, transition);
diff --git a/source/java/org/alfresco/repo/workflow/activiti/AlfrescoBpmnParseListener.java b/source/java/org/alfresco/repo/workflow/activiti/AlfrescoBpmnParseListener.java
index 8014459ecc..5a26faa1b9 100644
--- a/source/java/org/alfresco/repo/workflow/activiti/AlfrescoBpmnParseListener.java
+++ b/source/java/org/alfresco/repo/workflow/activiti/AlfrescoBpmnParseListener.java
@@ -301,4 +301,10 @@ public class AlfrescoBpmnParseListener implements BpmnParseListener
ScopeImpl scopeElement, ActivityImpl nestedActivity) {
// Nothing to do here
}
+
+ @Override
+ public void parseBoundaryMessageEventDefinition(Element element, boolean interrupting,
+ ActivityImpl messageActivity)
+ {
+ }
}
diff --git a/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedAsyncJobHandler.java b/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedAsyncJobHandler.java
index 6c92485dfc..5658afefb2 100644
--- a/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedAsyncJobHandler.java
+++ b/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedAsyncJobHandler.java
@@ -22,6 +22,7 @@ package org.alfresco.repo.workflow.activiti;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.jobexecutor.JobHandler;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.impl.persistence.entity.JobEntity;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
@@ -50,7 +51,7 @@ public class AuthenticatedAsyncJobHandler implements JobHandler
}
@Override
- public void execute(final String configuration, final ExecutionEntity execution,
+ public void execute(final JobEntity job, final String configuration, final ExecutionEntity execution,
final CommandContext commandContext)
{
// Get initiator
@@ -80,7 +81,7 @@ public class AuthenticatedAsyncJobHandler implements JobHandler
@SuppressWarnings("synthetic-access")
public Void doWork() throws Exception
{
- wrappedHandler.execute(configuration, execution, commandContext);
+ wrappedHandler.execute(job, configuration, execution, commandContext);
return null;
}
}, userName);
diff --git a/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedTimerJobHandler.java b/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedTimerJobHandler.java
index 09938c48ef..319d2b4013 100644
--- a/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedTimerJobHandler.java
+++ b/source/java/org/alfresco/repo/workflow/activiti/AuthenticatedTimerJobHandler.java
@@ -23,6 +23,7 @@ import org.activiti.engine.impl.TaskQueryImpl;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.jobexecutor.JobHandler;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+import org.activiti.engine.impl.persistence.entity.JobEntity;
import org.activiti.engine.impl.pvm.PvmActivity;
import org.activiti.engine.task.Task;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
@@ -53,7 +54,7 @@ public class AuthenticatedTimerJobHandler implements JobHandler
}
@Override
- public void execute(final String configuration, final ExecutionEntity execution,
+ public void execute(final JobEntity job, final String configuration, final ExecutionEntity execution,
final CommandContext commandContext)
{
String userName = null;
@@ -88,7 +89,7 @@ public class AuthenticatedTimerJobHandler implements JobHandler
@SuppressWarnings("synthetic-access")
public Void doWork() throws Exception
{
- wrappedHandler.execute(configuration, execution, commandContext);
+ wrappedHandler.execute(job, configuration, execution, commandContext);
return null;
}
}, userName);