package com.mossle.bpm.web;
import javax.annotation.Resource;
import com.mossle.bpm.persistence.domain.BpmConfAssign;
import com.mossle.bpm.persistence.manager.BpmConfAssignManager;
import com.mossle.bpm.persistence.manager.BpmConfNodeManager;
import com.mossle.bpm.persistence.manager.BpmConfUserManager;
import com.mossle.bpm.persistence.manager.BpmProcessManager;
import com.mossle.core.mapper.BeanMapper;
import com.mossle.spi.humantask.TaskDefinitionConnector;
import org.activiti.engine.ProcessEngine;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("bpm")
public class BpmConfAssignController {
private BpmConfNodeManager bpmConfNodeManager;
private BpmConfUserManager bpmConfUserManager;
private BeanMapper beanMapper = new BeanMapper();
private ProcessEngine processEngine;
private BpmProcessManager bpmProcessManager;
private BpmConfAssignManager bpmConfAssignManager;
private TaskDefinitionConnector taskDefinitionConnector;
@RequestMapping("bpm-conf-assign-save")
public String save(@ModelAttribute BpmConfAssign bpmConfAssign,
@RequestParam("bpmConfNodeId") Long bpmConfNodeId) {
Long id = bpmConfAssign.getId();
BpmConfAssign dest = null;
if (id != null) {
dest = bpmConfAssignManager.get(bpmConfAssign.getId());
} else {
dest = new BpmConfAssign();
dest.setBpmConfNode(bpmConfNodeManager.get(bpmConfNodeId));
}
beanMapper.copy(bpmConfAssign, dest);
bpmConfAssignManager.save(dest);
String taskDefinitionKey = dest.getBpmConfNode().getCode();
String processDefinitionId = dest.getBpmConfNode().getBpmConfBase()
.getProcessDefinitionId();
String assignStrategy = dest.getName();
taskDefinitionConnector.saveAssignStrategy(taskDefinitionKey,
processDefinitionId, assignStrategy);
return "redirect:/bpm/bpm-conf-user-list.do?bpmConfNodeId="
+ bpmConfNodeId;
}
// ~ ======================================================================
@Resource
public void setBpmConfNodeManager(BpmConfNodeManager bpmConfNodeManager) {
this.bpmConfNodeManager = bpmConfNodeManager;
}
@Resource
public void setBpmConfUserManager(BpmConfUserManager bpmConfUserManager) {
this.bpmConfUserManager = bpmConfUserManager;
}
@Resource
public void setBpmProcessManager(BpmProcessManager bpmProcessManager) {
this.bpmProcessManager = bpmProcessManager;
}
@Resource
public void setProcessEngine(ProcessEngine processEngine) {
this.processEngine = processEngine;
}
@Resource
public void setBpmConfAssignManager(
BpmConfAssignManager bpmConfAssignManager) {
this.bpmConfAssignManager = bpmConfAssignManager;
}
@Resource
public void setTaskDefinitionConnector(
TaskDefinitionConnector taskDefinitionConnector) {
this.taskDefinitionConnector = taskDefinitionConnector;
}
}