/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.engine.impl.persistence.entity;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.impl.db.PersistentObject;
import org.activiti.engine.impl.util.ClockUtil;
/**
* @author Tom Baeyens
*/
public class HistoricTaskInstanceEntity extends HistoricScopeInstanceEntity implements HistoricTaskInstance, PersistentObject {
private static final long serialVersionUID = 1L;
protected String executionId;
protected String name;
protected String parentTaskId;
protected String description;
protected String assignee;
protected String taskDefinitionKey;
protected String formKey;
protected int priority;
protected Date dueDate;
/**
* 超时是否已经发送
*/
protected int OVERTIMESEND;
/**
* '任务持续时间限制
*/
protected long DURATION_NODE;
/**
* 预警是否已发送
*/
protected int ADVANCESEND;
/**
* 提前预警时间
*/
protected Timestamp ALERTTIME;
/**
* 超时告警时间
*/
protected Timestamp OVERTIME;
/**
* 预警时间率
*/
protected int NOTICERATE;
/**
* 节假日策略
* '节假日策略,0-考虑节假日,不考虑作息时间,1-不考虑节假日,不考虑作息时间,2-考虑节假日,考虑作息时间,默认值为1';
*/
protected int IS_CONTAIN_HOLIDAY;
public HistoricTaskInstanceEntity() {
}
public HistoricTaskInstanceEntity(TaskEntity task, ExecutionEntity execution) {
this.id = task.getId();
if (execution != null) {
this.processDefinitionId = execution.getProcessDefinitionId();
this.processInstanceId = execution.getProcessInstanceId();
this.executionId = execution.getId();
}
this.name = task.getName();
this.parentTaskId = task.getParentTaskId();
this.description = task.getDescription();
this.owner = task.getOwner();
this.assignee = task.getAssignee();
this.startTime = ClockUtil.getCurrentTime();
this.startTimeLong = this.startTime.getTime();
this.taskDefinitionKey = task.getTaskDefinitionKey();
this.setPriority(task.getPriority());
this.setDueDate(task.getDueDate());
task.setHistoricTaskInstanceEntity(this);
}
// persistence //////////////////////////////////////////////////////////////
public Object getPersistentState() {
Map<String, Object> persistentState = new HashMap<String, Object>();
persistentState.put("name", name);
persistentState.put("owner", owner);
persistentState.put("assignee", assignee);
persistentState.put("endTime", endTime);
persistentState.put("endTimeLong", endTimeLong);
persistentState.put("durationInMillis", durationInMillis);
persistentState.put("description", description);
persistentState.put("deleteReason", deleteReason);
persistentState.put("taskDefinitionKey", taskDefinitionKey);
persistentState.put("formKey", formKey);
persistentState.put("priority", priority);
if(parentTaskId != null) {
persistentState.put("parentTaskId", parentTaskId);
}
if(dueDate != null) {
persistentState.put("dueDate", dueDate);
}
if (claimTime != null) {
persistentState.put("claimTime", claimTime);
}
if(this.bussinessOperation != null)
persistentState.put("bussinessOperation", bussinessOperation);
if(this.bussinessRemark != null)
{
persistentState.put("bussinessRemark", bussinessRemark);
}
return persistentState;
}
// getters and setters //////////////////////////////////////////////////////
public String getExecutionId() {
return executionId;
}
public void setExecutionId(String executionId) {
this.executionId = executionId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAssignee() {
return assignee;
}
public void setAssignee(String assignee) {
this.assignee = assignee;
}
public String getTaskDefinitionKey() {
return taskDefinitionKey;
}
public void setTaskDefinitionKey(String taskDefinitionKey) {
this.taskDefinitionKey = taskDefinitionKey;
}
public String getFormKey() {
return formKey;
}
public void setFormKey(String formKey) {
this.formKey = formKey;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public Date getDueDate() {
return dueDate;
}
public void setDueDate(Date dueDate) {
this.dueDate = dueDate;
}
public String getParentTaskId() {
return parentTaskId;
}
public void setParentTaskId(String parentTaskId) {
this.parentTaskId = parentTaskId;
}
public Long getWorkTimeInMillis() {
if (endTime == null || claimTime == null) {
return null;
}
return endTime.getTime() - claimTime.getTime();
}
public int getOVERTIMESEND() {
return OVERTIMESEND;
}
public void setOVERTIMESEND(int oVERTIMESEND) {
OVERTIMESEND = oVERTIMESEND;
}
public long getDURATION_NODE() {
return DURATION_NODE;
}
public void setDURATION_NODE(long dURATION_NODE) {
DURATION_NODE = dURATION_NODE;
}
public int getADVANCESEND() {
return ADVANCESEND;
}
public void setADVANCESEND(int aDVANCESEND) {
ADVANCESEND = aDVANCESEND;
}
public Timestamp getALERTTIME() {
return ALERTTIME;
}
public void setALERTTIME(Timestamp aLERTTIME) {
ALERTTIME = aLERTTIME;
}
public Timestamp getOVERTIME() {
return OVERTIME;
}
public void setOVERTIME(Timestamp oVERTIME) {
OVERTIME = oVERTIME;
}
public int getNOTICERATE() {
return NOTICERATE;
}
public void setNOTICERATE(int nOTICERATE) {
NOTICERATE = nOTICERATE;
}
public int getIS_CONTAIN_HOLIDAY() {
return IS_CONTAIN_HOLIDAY;
}
public void setIS_CONTAIN_HOLIDAY(int iS_CONTAIN_HOLIDAY) {
IS_CONTAIN_HOLIDAY = iS_CONTAIN_HOLIDAY;
}
}