package com.vci.server.workflow.server.event; import org.jbpm.api.model.OpenExecution; import org.jbpm.api.task.Assignable; import org.jbpm.api.task.AssignmentHandler; import com.vci.common.log.ServerWithLog4j; import com.vci.common.resource.CommonProperties; import com.vci.server.workflow.common.resouce.WorkflowProperties; import com.vci.server.workflow.server.interfaces.IWorkflowUserService; public class AssginTaskForExpression implements AssignmentHandler { private static final long serialVersionUID = 1L; String assignee; /* 根据表达式解析用户列表 * @see org.jbpm.api.task.AssignmentHandler#assign(org.jbpm.api.task.Assignable, org.jbpm.api.model.OpenExecution) */ public void assign(Assignable assignable, OpenExecution execution) throws Exception { String[] assignees = assignee.split(","); String userName = (String)execution.getVariable("userName"); String[] currentSelectuserName = (String[])execution.getVariable("currentSelectuserName"); String userServiceImplClass = WorkflowProperties.getStringProperty("workflow.userService"); if(userServiceImplClass!=null&&!"".equals(userServiceImplClass)){ IWorkflowUserService puService = (IWorkflowUserService) ( Class.forName( userServiceImplClass ).newInstance()); if ( (currentSelectuserName != null ) && (currentSelectuserName.length > 0 ) ) { String[] users = currentSelectuserName;//puService.getAllUsers2Task(currentSelectuserName, userName); if(users!=null){ for(String user : users){ assignable.addCandidateUser(user); ServerWithLog4j.logger.debug("users = "+ user); } } } else { String[] users = puService.getAllUsers2Task(assignees, userName); if(users!=null){ for(String user : users){ assignable.addCandidateUser(user); ServerWithLog4j.logger.debug("users = "+ user); } } } } } }