package com.mossle.bpm.support;
import java.util.Date;
import com.mossle.api.humantask.HumanTaskConstants;
import com.mossle.api.humantask.HumanTaskDTO;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.impl.identity.Authentication;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
public class HumanTaskBuilder {
private HumanTaskDTO humanTaskDto = new HumanTaskDTO();
public HumanTaskBuilder setDelegateTask(DelegateTask delegateTask) {
humanTaskDto.setBusinessKey(delegateTask.getExecution()
.getProcessBusinessKey());
humanTaskDto.setName(delegateTask.getName());
humanTaskDto.setDescription(delegateTask.getDescription());
humanTaskDto.setCode(delegateTask.getTaskDefinitionKey());
humanTaskDto.setAssignee(delegateTask.getAssignee());
humanTaskDto.setOwner(delegateTask.getOwner());
humanTaskDto.setDelegateStatus("none");
humanTaskDto.setPriority(delegateTask.getPriority());
humanTaskDto.setCreateTime(new Date());
humanTaskDto.setDuration(delegateTask.getDueDate() + "");
humanTaskDto.setSuspendStatus("none");
humanTaskDto.setCategory(delegateTask.getCategory());
humanTaskDto.setForm(delegateTask.getFormKey());
humanTaskDto.setTaskId(delegateTask.getId());
humanTaskDto.setExecutionId(delegateTask.getExecutionId());
humanTaskDto.setProcessInstanceId(delegateTask.getProcessInstanceId());
humanTaskDto.setProcessDefinitionId(delegateTask
.getProcessDefinitionId());
humanTaskDto.setTenantId(delegateTask.getTenantId());
humanTaskDto.setStatus("active");
humanTaskDto.setCatalog(HumanTaskConstants.CATALOG_NORMAL);
ExecutionEntity executionEntity = (ExecutionEntity) delegateTask
.getExecution();
ExecutionEntity processInstance = executionEntity.getProcessInstance();
humanTaskDto.setPresentationSubject(processInstance.getName());
String userId = Authentication.getAuthenticatedUserId();
humanTaskDto.setProcessStarter(userId);
return this;
}
public HumanTaskBuilder setVote(boolean isVote) {
if (isVote) {
humanTaskDto.setCatalog(HumanTaskConstants.CATALOG_VOTE);
}
return this;
}
public HumanTaskDTO build() {
return humanTaskDto;
}
}