Class BaseTaskWorkloadProvider

java.lang.Object
com.webmethods.caf.faces.bean.PageFlowScopeAdapter
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 Details

  • Constructor Details

    • BaseTaskWorkloadProvider

      public BaseTaskWorkloadProvider()
  • Method Details

    • init

      public void init(Map<String,?> 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 ELException, 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:
      PropertyNotFoundException - if property is not supported
      ELException
    • 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 getWorkgroupMembers() list. The algorithm for that is:
      Get next available work date start for each of the members of the group. If the beginning of the working day of everyone in this group is different, then only those who will start as soon as possible will be added to the workgroup.
      getWorkgroupMembers() list
      Throws:
      ContentProviderException
    • getWorkgroup

      public String getWorkgroup()
      Returns internal ID of the workgroup which owns list of users 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
    • getRule

      public com.webmethods.caf.rules.IRule getRule()
      Description copied from interface: ITaskWorkloadProvider
      Returns the rule instance used for this workload manager
      Specified by:
      getRule in interface ITaskWorkloadProvider
    • setRule

      public void setRule(com.webmethods.caf.rules.IRule rule)
      Description copied from interface: ITaskWorkloadProvider
      Sets rule instance to be used by workload manager
      Specified by:
      setRule 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