提交 3b2b1e50 编写于 作者: T tijsrademakers

Fix for history form key storage

上级 eb9acf7b
......@@ -13,6 +13,7 @@
package org.activiti.engine.impl.form;
import org.activiti.engine.delegate.Expression;
import org.activiti.engine.form.TaskFormData;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
......@@ -23,4 +24,6 @@ import org.activiti.engine.impl.persistence.entity.TaskEntity;
public interface TaskFormHandler extends FormHandler {
TaskFormData createTaskForm(TaskEntity task);
Expression getFormKey();
}
......@@ -17,7 +17,6 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import org.activiti.engine.form.TaskFormData;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.impl.HistoricActivityInstanceQueryImpl;
import org.activiti.engine.impl.cfg.IdGenerator;
......@@ -41,7 +40,6 @@ import org.activiti.engine.impl.pvm.runtime.InterpretableExecution;
import org.activiti.engine.impl.util.ClockUtil;
import org.activiti.engine.task.Event;
import org.activiti.engine.task.IdentityLink;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -466,15 +464,17 @@ public class HistoryManager extends AbstractManager {
public void recordTaskDefinitionKeyChange(TaskEntity task, String taskDefinitionKey) {
if (isHistoryLevelAtLeast(HistoryLevel.AUDIT)) {
HistoricTaskInstanceEntity historicTaskInstance = getDbSqlSession().selectById(HistoricTaskInstanceEntity.class, task.getId());
if (historicTaskInstance!=null) {
if (historicTaskInstance != null) {
historicTaskInstance.setTaskDefinitionKey(taskDefinitionKey);
if (taskDefinitionKey != null) {
TaskFormHandler taskFormHandler = task.getTaskDefinition().getTaskFormHandler();
if (taskFormHandler != null) {
TaskFormData formData = taskFormHandler.createTaskForm(task);
if (StringUtils.isNotEmpty(formData.getFormKey())) {
historicTaskInstance.setFormKey(formData.getFormKey());
if (taskFormHandler.getFormKey() != null) {
Object formValue = taskFormHandler.getFormKey().getValue(task.getExecution());
if (formValue != null) {
historicTaskInstance.setFormKey(formValue.toString());
}
}
}
}
......
drop index if exists ACT_IDX_EXEC_BUSKEY;
drop index if exists ACT_IDX_TASK_CREATE;
drop index if exists ACT_IDX_IDENT_LNK_USER;
drop index if exists ACT_IDX_IDENT_LNK_GROUP;
drop index if exists ACT_IDX_VARIABLE_TASK_ID;
drop index if exists ACT_IDX_EVENT_SUBSCR_CONFIG_;
drop index if exists ACT_IDX_ATHRZ_PROCEDEF;
drop table if exists ACT_GE_PROPERTY cascade constraints;
drop table if exists ACT_GE_BYTEARRAY cascade constraints;
drop table if exists ACT_RE_DEPLOYMENT cascade constraints;
......@@ -17,3 +9,11 @@ drop table if exists ACT_RU_TASK cascade constraints;
drop table if exists ACT_RU_IDENTITYLINK cascade constraints;
drop table if exists ACT_RU_VARIABLE cascade constraints;
drop table if exists ACT_RU_EVENT_SUBSCR cascade constraints;
drop index if exists ACT_IDX_EXEC_BUSKEY;
drop index if exists ACT_IDX_TASK_CREATE;
drop index if exists ACT_IDX_IDENT_LNK_USER;
drop index if exists ACT_IDX_IDENT_LNK_GROUP;
drop index if exists ACT_IDX_VARIABLE_TASK_ID;
drop index if exists ACT_IDX_EVENT_SUBSCR_CONFIG_;
drop index if exists ACT_IDX_ATHRZ_PROCEDEF;
\ No newline at end of file
drop table if exists ACT_HI_PROCINST cascade constraints;
drop table if exists ACT_HI_ACTINST cascade constraints;
drop table if exists ACT_HI_VARINST cascade constraints;
drop table if exists ACT_HI_TASKINST cascade constraints;
drop table if exists ACT_HI_DETAIL cascade constraints;
drop table if exists ACT_HI_COMMENT cascade constraints;
drop table if exists ACT_HI_ATTACHMENT cascade constraints;
drop index if exists ACT_IDX_HI_PRO_INST_END;
drop index if exists ACT_IDX_HI_PRO_I_BUSKEY;
drop index if exists ACT_IDX_HI_ACT_INST_START;
......@@ -10,11 +18,3 @@ drop index if exists ACT_IDX_HI_DETAIL_TASK_ID;
drop index if exists ACT_IDX_HI_PROCVAR_PROC_INST;
drop index if exists ACT_IDX_HI_PROCVAR_NAME_TYPE;
drop index if exists ACT_IDX_HI_ACT_INST_PROCINST;
drop table if exists ACT_HI_PROCINST cascade constraints;
drop table if exists ACT_HI_ACTINST cascade constraints;
drop table if exists ACT_HI_VARINST cascade constraints;
drop table if exists ACT_HI_TASKINST cascade constraints;
drop table if exists ACT_HI_DETAIL cascade constraints;
drop table if exists ACT_HI_COMMENT cascade constraints;
drop table if exists ACT_HI_ATTACHMENT cascade constraints;
......@@ -184,6 +184,8 @@ public class FormServiceTest extends PluggableActivitiTestCase {
Address address = new Address();
address.setStreet("broadway");
runtimeService.setVariable(processInstanceId, "address", address);
runtimeService.signal(runtimeService.createExecutionQuery().processInstanceId(processInstanceId).singleResult().getId());
String taskId = taskService.createTaskQuery().singleResult().getId();
TaskFormData taskFormData = formService.getTaskFormData(taskId);
......
......@@ -168,7 +168,7 @@ public class HistoricTaskInstanceTest extends PluggableActivitiTestCase {
// Form key
HistoricTaskInstance historicTask = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(finishedInstance.getId()).singleResult();
assertEquals("formKeyTest", historicTask.getFormKey());
assertEquals("testFormKey", historicTask.getFormKey());
// Assignee
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssignee("kermit").count());
......
......@@ -15,7 +15,11 @@
</extensionElements>
</startEvent>
<sequenceFlow id="flow1" sourceRef="start" targetRef="task" />
<sequenceFlow id="flow1" sourceRef="start" targetRef="wait" />
<receiveTask id="wait" />
<sequenceFlow id="flow2" sourceRef="wait" targetRef="task" />
<userTask id="task"
activiti:assignee="kermit">
......@@ -28,9 +32,9 @@
</extensionElements>
</userTask>
<sequenceFlow id="flow2" sourceRef="task" targetRef="wait" />
<sequenceFlow id="flow3" sourceRef="task" targetRef="wait2" />
<receiveTask id="wait" />
<receiveTask id="wait2" />
</process>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册