/** * Copyright 2007-2010 非也 * All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation。 * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses. * */ package org.fireflow.engine.invocation.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.fireflow.client.WorkflowSession; import org.fireflow.engine.entity.runtime.ActivityInstance; import org.fireflow.engine.entity.runtime.ProcessInstance; import org.fireflow.engine.entity.runtime.WorkItemProperty; import org.fireflow.engine.invocation.AssignmentHandler; import org.fireflow.engine.modules.ousystem.User; import org.fireflow.model.binding.ResourceBinding; import org.fireflow.model.resourcedef.WorkItemAssignmentStrategy; import org.fireflow.server.support.UserListXmlAdapter; /** * * * @author 非也 * @version 2.0 */ @XmlRootElement(name="dynamicAssignmentHandler") @XmlType(name="dynamicAssignmentHandlerType") @XmlAccessorType(XmlAccessType.FIELD) public class DynamicAssignmentHandler extends AbsAssignmentHandler implements AssignmentHandler { /** * */ @XmlTransient private static final long serialVersionUID = 675889705207600732L; @XmlElement(name="potentialOwners") @XmlJavaTypeAdapter(UserListXmlAdapter.class) private List<User> potentialOwners = new ArrayList<User>(); @XmlElement(name="readers") @XmlJavaTypeAdapter(UserListXmlAdapter.class) private List<User> readers = new ArrayList<User>();; @XmlElement(name="assignmentStrategy") private WorkItemAssignmentStrategy assignmentStrategy = WorkItemAssignmentStrategy.ASSIGN_TO_ALL; /** * 获得潜在的工作参与者列表 * @return */ public List<User> resolvePotentialOwners(WorkflowSession session, ResourceBinding resourceBinding, Object theActivity,ProcessInstance processInstance,ActivityInstance activityInstance){ return this.potentialOwners; } public void setPotentialOwners(List<User> owners){ potentialOwners.clear(); this.potentialOwners.addAll(owners); } public List<User> getPotentialOwners(){ return this.potentialOwners; } /** * 获得抄送人列表 * @return */ public List<User> resolveReaders(WorkflowSession session, ResourceBinding resourceBinding, Object theActivity,ProcessInstance processInstance,ActivityInstance activityInstance){ return this.readers; } public void setReaders(List<User> users){ this.readers.clear(); this.readers.addAll(users); } public List<User> getReaders(){ return this.readers; } /** * @return the assignmentStrategy */ public WorkItemAssignmentStrategy resolveAssignmentStrategy(WorkflowSession session, ResourceBinding resourceBinding, Object theActivity) { return assignmentStrategy; } /** * @param assignmentStrategy the assignmentStrategy to set */ public void setAssignmentStrategy(WorkItemAssignmentStrategy assignmentStrategy) { this.assignmentStrategy = assignmentStrategy; } public WorkItemAssignmentStrategy getAssignmentStrategy(){ return this.assignmentStrategy; } @Override public List<User> resolveAdministrators(WorkflowSession session, ResourceBinding resourceBinding, Object theActivity,ProcessInstance processInstance,ActivityInstance activityInstance) { // TODO Auto-generated method stub return null; } public Map<WorkItemProperty,Object> resolveWorkItemPropertyValues(){ return new HashMap<WorkItemProperty,Object>(); } }