com.webmethods.caf.faces.data.task
Class BaseTaskWorkloadProvider

java.lang.Object
  extended by com.webmethods.caf.faces.bean.PageFlowScopeAdapter
      extended by com.webmethods.caf.faces.data.task.BaseTaskWorkloadProvider
All Implemented Interfaces:
IPageFlowScopeAdapter, IContentProvider, ITaskWorkloadProvider
Direct Known Subclasses:
TaskInboxQueueWorkloadProvider, TaskRoundRobinWorkloadProvider

public abstract class BaseTaskWorkloadProvider
extends PageFlowScopeAdapter
implements IContentProvider, ITaskWorkloadProvider

Base implementation class for ITaskWorkloadProvider


Field Summary
 
Fields inherited from class com.webmethods.caf.faces.bean.PageFlowScopeAdapter
fExpireWithPageFlow
 
Constructor Summary
BaseTaskWorkloadProvider()
           
 
Method Summary
protected abstract  Object calculateResult()
          This needs to be implemented by subclass implementing concrete workgroup assignment policy
protected  void checkAvailability()
          Implementation method which checks availability of users from BaseTaskWorkloadProvider.getWorkgroupMembers() list.
 int getNumberOfUsers()
          Returns number of users in the workgroup
 Object[] getPropertyKeys()
          Returns list of public properties supported by this provider.
 Object getResult()
          Returns result of the workload provider.
 String getTaskID()
          Returns taskID being assigned
 Class getType(Object propertyKey)
          Returns list of classes of public properties supported by this provider
 Object getValue(Object propertyKey)
          Returns value from the provider property
 String getWorkgroup()
          Returns internal ID of the workgroup which owns list of users BaseTaskWorkloadProvider.getWorkgroupMembers()
 Object[] getWorkgroupMembers()
          Returns list of users names in the workgroup
 boolean hasProperty(Object propertyKey)
          Checks if provider support given property
 void init(Map properties)
          Initializes instance of workload provider.
 boolean isCheckAvailability()
          Returns "true" if provider needs to check user availability for task assignment
 void setCheckAvailability(boolean checkAvailability)
          Sets flag to check user availability for task assignment
 void setNumberOfUsers(int numberOfUsers)
          Sets number of users in the workgroup
 void setTaskID(String taskID)
          Sets taskID being assigned
 void setWorkgroup(String workgroup)
          Sets internal workgroup name for this provider
 void setWorkgroupMembers(Object[] workgroupMembers)
          Sets workgroup members - list of user names
 
Methods inherited from class com.webmethods.caf.faces.bean.PageFlowScopeAdapter
getExpireWithPageFlow, setExpireWithPageFlow
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.webmethods.caf.faces.data.IContentProvider
toString
 

Constructor Detail

BaseTaskWorkloadProvider

public BaseTaskWorkloadProvider()
Method Detail

init

public void init(Map properties)
          throws Exception
Initializes instance of workload provider. Default implementation simply sets object properties from the passed map

Specified by:
init in interface ITaskWorkloadProvider
Throws:
Exception

getPropertyKeys

public Object[] getPropertyKeys()
Returns list of public properties supported by this provider. For workload provider there is only one property "result"

Specified by:
getPropertyKeys in interface IContentProvider
Returns:
array of property keys which is typically of type String or Integer

getType

public Class getType(Object propertyKey)
              throws PropertyNotFoundException
Returns list of classes of public properties supported by this provider

Specified by:
getType in interface IContentProvider
Parameters:
propertyKey - the property key of type String or Integer
Returns:
property java Class
Throws:
PropertyNotFoundException - if property is not supported

getValue

public Object getValue(Object propertyKey)
                throws EvaluationException,
                       PropertyNotFoundException
Returns value from the provider property

Specified by:
getValue in interface IContentProvider
Parameters:
propertyKey - the property key of type String or Integer
Returns:
value of the property, can be null
Throws:
EvaluationException - if error during property evaluation
PropertyNotFoundException - if property is not supported

hasProperty

public boolean hasProperty(Object propertyKey)
Checks if provider support given property

Specified by:
hasProperty in interface IContentProvider
Parameters:
propertyKey - property key of type String or Integer
Returns:
true if property is supported

getResult

public Object getResult()
                 throws ContentProviderException
Returns result of the workload provider. This is implementation dependent and should resolve to single or multiple principals for from assignment rule which uses this provider

Specified by:
getResult in interface ITaskWorkloadProvider
Returns:
user, group or role UID to assign task to
Throws:
ContentProviderException

checkAvailability

protected void checkAvailability()
                          throws ContentProviderException
Implementation method which checks availability of users from BaseTaskWorkloadProvider.getWorkgroupMembers() list. The algorithm for that is:
- obtain next working day when using just user corporate calendar
- obtain next working day when using both user corporate and personal calendar
- if two returned days are the same user is available on that day, otherwise is out of the office
If user is not available it should be removed from the BaseTaskWorkloadProvider.getWorkgroupMembers() list

Throws:
ContentProviderException

getWorkgroup

public String getWorkgroup()
Returns internal ID of the workgroup which owns list of users BaseTaskWorkloadProvider.getWorkgroupMembers()

Specified by:
getWorkgroup in interface ITaskWorkloadProvider

getWorkgroupMembers

public Object[] getWorkgroupMembers()
Returns list of users names in the workgroup

Specified by:
getWorkgroupMembers in interface ITaskWorkloadProvider

setWorkgroup

public void setWorkgroup(String workgroup)
Sets internal workgroup name for this provider

Specified by:
setWorkgroup in interface ITaskWorkloadProvider

setWorkgroupMembers

public void setWorkgroupMembers(Object[] workgroupMembers)
Sets workgroup members - list of user names

Specified by:
setWorkgroupMembers in interface ITaskWorkloadProvider

getTaskID

public String getTaskID()
Returns taskID being assigned

Specified by:
getTaskID in interface ITaskWorkloadProvider

setTaskID

public void setTaskID(String taskID)
Sets taskID being assigned

Specified by:
setTaskID in interface ITaskWorkloadProvider

isCheckAvailability

public boolean isCheckAvailability()
Returns "true" if provider needs to check user availability for task assignment


setCheckAvailability

public void setCheckAvailability(boolean checkAvailability)
Sets flag to check user availability for task assignment


getNumberOfUsers

public int getNumberOfUsers()
Returns number of users in the workgroup


setNumberOfUsers

public void setNumberOfUsers(int numberOfUsers)
Sets number of users in the workgroup

Parameters:
numberOfUsers -

calculateResult

protected abstract Object calculateResult()
                                   throws ContentProviderException
This needs to be implemented by subclass implementing concrete workgroup assignment policy

Throws:
ContentProviderException