package com.mossle.humantask.listener; import java.util.List; import javax.annotation.Resource; import com.mossle.api.humantask.HumanTaskConstants; import com.mossle.humantask.persistence.domain.TaskInfo; import com.mossle.humantask.persistence.domain.TaskParticipant; import com.mossle.humantask.persistence.manager.TaskParticipantManager; import com.mossle.spi.humantask.TaskDefinitionConnector; import com.mossle.spi.humantask.TaskUserDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TaskDefUserHumanTaskListener implements HumanTaskListener { private static Logger logger = LoggerFactory .getLogger(TaskDefUserHumanTaskListener.class); private TaskDefinitionConnector taskDefinitionConnector; private TaskParticipantManager taskParticipantManager; @Override public void onCreate(TaskInfo taskInfo) throws Exception { if (HumanTaskConstants.CATALOG_COPY.equals(taskInfo.getCatalog())) { return; } String taskDefinitionKey = taskInfo.getCode(); String processDefinitionId = taskInfo.getProcessDefinitionId(); List<TaskUserDTO> taskUsers = taskDefinitionConnector.findTaskUsers( taskDefinitionKey, processDefinitionId); for (TaskUserDTO taskUser : taskUsers) { String catalog = taskUser.getCatalog(); String type = taskUser.getType(); String value = taskUser.getValue(); if ("assignee".equals(catalog)) { taskInfo.setAssignee(value); } else if ("candidate".equals(catalog)) { TaskParticipant taskParticipant = new TaskParticipant(); taskParticipant.setCategory(catalog); taskParticipant.setRef(value); taskParticipant.setType(type); taskParticipant.setTaskInfo(taskInfo); taskParticipantManager.save(taskParticipant); } } } @Override public void onComplete(TaskInfo taskInfo) throws Exception { } @Resource public void setTaskDefinitionConnector( TaskDefinitionConnector taskDefinitionConnector) { this.taskDefinitionConnector = taskDefinitionConnector; } @Resource public void setTaskParticipantManager( TaskParticipantManager taskParticipantManager) { this.taskParticipantManager = taskParticipantManager; } }