package com.base.pf.m150workflow.f010deployment.controller;
import java.util.List;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.impl.el.FixedValue;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.context.ContextLoader;
import com.base.pf.common.util.PropertiesRead;
import com.base.pf.m130security.service.PersonSecurityService;
/**
* 获取配置的角色,查找任务代办人
*
* @author ZHEN.L
*
*/
public class RoleTaskListener implements TaskListener {
private final Logger log = Logger.getLogger(RoleTaskListener.class);
private static final long serialVersionUID = 478113514195354529L;
private FixedValue roleCodeName; // 同流程图中fieldName
private PersonSecurityService personSecurityService;
public void notify(DelegateTask task) {
try {
Object value = roleCodeName.getValue(task); // 获取fieldName的值
String roleCode = PropertiesRead.getInstance().read(
String.valueOf(value));
ApplicationContext context = ContextLoader
.getCurrentWebApplicationContext();
personSecurityService = (PersonSecurityService) context
.getBean("personSecurityService");
List<String> users = personSecurityService
.findIdByRoleCode(roleCode);
task.addCandidateUsers(users);
} catch (Exception e) {
e.printStackTrace();
log.error("指定任务代办人失败:" + e.getMessage());
}
}
public FixedValue getRoleCodeName() {
return roleCodeName;
}
public void setRoleCodeName(FixedValue roleCodeName) {
this.roleCodeName = roleCodeName;
}
}