Interface IncrementalWorklistUpdate

All Superinterfaces:
AutoCloseable, Closeable, Serializable, de.aristaflow.adept2.model.communication.ServerSideProxy, UserAttributeContainer, WorklistUpdate
All Known Implementing Classes:
CachingIncWorklistUpdate

public interface IncrementalWorklistUpdate extends WorklistUpdate, de.aristaflow.adept2.model.communication.ServerSideProxy
This class extends the normal worklist update by the means to retrieve the update information incrementally which allows for smaller data transfers. However since this occupies resources on the server-side, it is crucial to close this worklist update after use to release the resources.
Note that the iteration can only take place in forward direction and no item updates can be skipped.

After an incremental worklist update has been closed, all data retrieving methods including the one from the super-interface will throw an IllegalArgumentException on server side and a all methods will throw a ServiceConnectionException on client side.

See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from interface de.aristaflow.adept2.model.communication.ServerSideProxy

    de.aristaflow.adept2.model.communication.ServerSideProxy.LegacySspCloser, de.aristaflow.adept2.model.communication.ServerSideProxy.ServerSideProxyRemover
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final long
    Generated ID for serialisation.

    Fields inherited from interface de.aristaflow.adept2.model.communication.ServerSideProxy

    DEFAULT_ALIVE_TIME
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Explicitly closes this worklist update which allows to release occupied memory and resources.
    default void
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use and implement close() instead.
    Returns all updates, i.e.
    int
    Returns the highest priority of this update, that is the highest priority of all items of this update.
    getNext(int count)
    Gets the next specified amount of worklist item updates of this incremental worklist update.
    Gets the source revision, i.e.
    long
    Returns the target revision, i.e.
    The ID of the worklist for which this update is intended.

    Methods inherited from interface de.aristaflow.adept2.model.communication.ServerSideProxy

    getRemainingAliveTime, keepAlive

    Methods inherited from interface de.aristaflow.adept2.model.common.UserAttributeContainer

    getUserAttributes, getUserAttributeValue, removeUserAttributeValue, setUserAttributeValue
  • Field Details

    • serialVersionUID

      static final long serialVersionUID
      Generated ID for serialisation.
      See Also:
  • Method Details

    • getWorklistID

      UUID getWorklistID()
      The ID of the worklist for which this update is intended. Additionally marked as Immutable.
      Specified by:
      getWorklistID in interface WorklistUpdate
      Returns:
      The ID of the worklist for which this update is intended.
    • getSourceRevision

      WorklistRevision getSourceRevision()
      Gets the source revision, i.e. the worklist revision (initialisation date and update count) to which this update can be applied. An exception is the initial revision can always be applied (by clearing the list before applying the update). The update contains all changes that have been made to the worklist since the update count of the source revision up to (and including) the target revision (update count). Additionally marked as Immutable.
      Specified by:
      getSourceRevision in interface WorklistUpdate
      Returns:
      The source revision, i.e. the revision of the worklist (initialisation date and update count) to which this update can be applied.
    • getTargetRevision

      long getTargetRevision()
      Returns the target revision, i.e. the new revision (update count) the client worklist will have after applying this update.

      The update contains all changes that have been made to the worklist since the source revision (update count) up to (and including) the target revision.

      Like the source revision the target revision refers to the initialisation date of the worklist. Additionally marked as Immutable.

      Specified by:
      getTargetRevision in interface WorklistUpdate
      Returns:
      The target revision, i.e. the new revision the client worklist will have after applying this update.
    • getMaxPriority

      int getMaxPriority()
      Returns the highest priority of this update, that is the highest priority of all items of this update. This also includes removed items! In case of an empty complete update (source revision 0), the priority will be WorklistConstants.Priority.NORMAL. Additionally marked as Immutable.
      Specified by:
      getMaxPriority in interface WorklistUpdate
      Returns:
      The highest priority of all items of this update.
    • getAll

      Returns all updates, i.e. the differences from the source revision up to (and including) the target revision. The map contains all worklist items including the ones which are deleted since the source revision.

      The returned collection is unmodifiable.

      When compiling the individual recorded updates into a worklist update, the case when there are multiple recorded updates for the same worklist item (i.e. same ID, not necessarily same state) needs special attention. In this case the recorded updates need to be compressed, since a worklist update may only contain one update per worklist item. It is assumed, that every revision only contains one added, removed or changed worklist item. To compress these individual updates, only the first (since the source revision) and the last recorded update of a certain worklist item need to be considered: The state of the client worklist item (which is the key of the map), is the state at the time of its last update.
      The WorklistConstants.WorklistItemUpdateType (which is the value in the map) is determined by looking at the type of the first and the last recorded update for that item. The following shows the relevant combinations and their results.

      How different worklist item update types aggregate.
      type of first recorded update type of last recorded update resulting update type
      ADDEDCHANGEDADDED
      ADDEDREMOVEDomit (NOTHING)
      ADDEDADDED_OR_CHANGEDADDED
      ADDEDREMOVED_OR_NOTHINGomit (NOTHING)
      CHANGEDCHANGEDCHANGED
      CHANGEDREMOVEDREMOVED
      CHANGEDADDED_OR_CHANGEDCHANGED
      CHANGEDREMOVED_OR_NOTHINGREMOVED
      REMOVEDADDEDCHANGED
      REMOVEDADDED_OR_CHANGEDCHANGED
      REMOVEDREMOVED_OR_NOTHINGREMOVED
      ADDED_OR_CHANGEDCHANGEDADDED_OR_CHANGED
      ADDED_OR_CHANGEDREMOVEDREMOVED_OR_NOTHING
      ADDED_OR_CHANGEDADDED_OR_CHANGEDADDED_OR_CHANGED
      ADDED_OR_CHANGEDREMOVED_OR_NOTHINGREMOVED_OR_NOTHING
      REMOVED_OR_NOTHINGADDEDADDED_OR_CHANGED
      REMOVED_OR_NOTHINGADDED_OR_CHANGEDADDED_OR_CHANGED
      REMOVED_OR_NOTHINGREMOVED_OR_NOTHINGREMOVED_OR_NOTHING
      Other combinations don't make any sense and therefore shouldn't occur. If there's only one recorded update for an item use that update's type. After calling this method once, this incremental worklist update will be closed. You will not be able to use it again, that is, every method will throw an IllegalStateException.
      Specified by:
      getAll in interface WorklistUpdate
      Returns:
      The updates / differences between source and target revision.
      Throws:
      de.aristaflow.adept2.model.communication.ServiceConnectionException - If this incremental worklist update has been closed (explicitly or implicitly), a ServiceConnectionException will be thrown on client side.
    • getNext

      Gets the next specified amount of worklist item updates of this incremental worklist update.
      Be sure to call this method afterwards to release occupied memory and resources.
      Parameters:
      count - The amount of worklist item updates to retrieve. This has to be > 0.
      Returns:
      The next n worklist item updates of this incremental worklist update, where n is the specified count. In case of an insufficient amount of next elements remaining only the available elements will be returned. If there are no more next elements, null will be returned.
      Throws:
      IllegalArgumentException - If count is non-positive (<= 0), an IllegalArgumentException will be thrown.
      IllegalStateException - If this worklist update has been closed (explicitly or implicitly), an IllegalStateException will be thrown.
      de.aristaflow.adept2.model.communication.ServiceConnectionException - If this incremental worklist update has been closed (explicitly or implicitly), a ServiceConnectionException will be thrown on client side.
    • close

      void close()
      Explicitly closes this worklist update which allows to release occupied memory and resources. Closing will be done implicitly after the worklist update has been retrieved completely by calling getAll() once. When retrieving incrementally, be sure to call this method afterwards to release occupied memory and resources.
      This method may be called several times. Implementors have to take care of this.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface de.aristaflow.adept2.model.communication.ServerSideProxy
      Throws:
      de.aristaflow.adept2.model.communication.ServiceConnectionException - If this incremental worklist update has been closed (explicitly or implicitly), a ServiceConnectionException will be thrown on client side.
    • drop

      @Deprecated(since="15.0.0", forRemoval=true) default void drop()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use and implement close() instead.