Package com.groiss.wf

Interface WfEngine

All Superinterfaces:
Remote, RemoteWfEngine

public interface WfEngine extends RemoteWfEngine
This interface encapsulates the functionality of the @enterprise workflow engine. An object implementing this interface can be created on the server or the client.

Most methods have an implicit user parameter. This is initialized as the ThreadPrincipal from the ThreadContext when the WfEngine object is created.

  • Field Details

    • INVISIBLE

      static final short INVISIBLE
      Constant for form-field-mode (XForms equivalent: relevant=false)
      See Also:
    • READ_ONLY

      static final short READ_ONLY
      Constant for form-field-mode read-only
      See Also:
    • READ_WRITE

      static final short READ_WRITE
      Constant for form-field-mode read-write, this is the default.
      See Also:
    • TEXT

      static final short TEXT
      Constant for form-field-mode text, field is shown as text output.
      See Also:
    • MUST

      static final short MUST
      Constant for form-field-mode mandatory (XForms equivalent: required)
      See Also:
    • NO_ADDDEL

      static final short NO_ADDDEL
      Constant for form-field-mode, if true subforms cannot be added or deleted
      See Also:
  • Method Details

    • getInstance

      static WfEngine getInstance()
      Get the WfEngine to perform action with the workflow engine.
      Returns:
      a WfEngine object
    • getStore

      Store getStore()
      Return the underlying store.
      Specified by:
      getStore in interface RemoteWfEngine
      Returns:
      a store object
    • getProcessDefinition

      ProcessDefinition getProcessDefinition(String id)
      Find a process definition with the given id and status=active, if more than one is found, the process definition with the highest version number is returned.
      Specified by:
      getProcessDefinition in interface RemoteWfEngine
      Parameters:
      id - the id of the process
      Returns:
      a process definition
    • getProcessDefinition

      ProcessDefinition getProcessDefinition(String id, int version)
      Find a process definition with the given id and version.
      Specified by:
      getProcessDefinition in interface RemoteWfEngine
      Parameters:
      id - the id of the process
      version - the version of the process
      Returns:
      a process definition
    • listProcessDefinitions

      List<ProcessDefinition> listProcessDefinitions(Application appl)
      List the process definitions of the given application
      Specified by:
      listProcessDefinitions in interface RemoteWfEngine
      Parameters:
      appl - the application
      Returns:
      a list of ProcessDefinition objects
    • getStartableProcesses

      @Deprecated(since="9.0", forRemoval=true) List<Pair<ProcessDefinition,List<OrgUnit>>> getStartableProcesses(Application appl)
      Deprecated, for removal: This API element is subject to removal in a future version.
      List the process definitions of the given application, which are startable for the user. A process is startable, if it is active and the agent of the first step is either the user or a role the user has.
      Specified by:
      getStartableProcesses in interface RemoteWfEngine
      Returns:
      the list of pairs of processes and lists of OrgUnits
    • getStartableProcDefs

      List<Pair<ProcessDefinition,List<Pair<String,List<OrgUnit>>>>> getStartableProcDefs(Application appl)
      List the process definitions of the given application, which are startable for the user. A process is startable, if it is active and the agent of a start task is either the user or a role the user has. A start task is a task where between the task and the begin node is no interactive task.
      Specified by:
      getStartableProcDefs in interface RemoteWfEngine
      Parameters:
      appl - optional application restriction
      Returns:
      a list of pairs of processes and lists of pairs of step-labels and lists of org-units
    • getStartInfo

      Description copied from interface: RemoteWfEngine
      Returns the start info for the given process for the current thread user. If this user cannot start the process, the result is empty.
      Specified by:
      getStartInfo in interface RemoteWfEngine
      Parameters:
      pd - a process definition
      Returns:
      the list of pairs of step-labels and lists of OrgUnits
    • getTask

      Task getTask(String id)
      Find a task with the given id and status=active, if more than one is found, the task with the highest version number is returned.
      Specified by:
      getTask in interface RemoteWfEngine
      Parameters:
      id - the id of the task
      Returns:
      a task, null if no task has the given id
    • getTask

      Task getTask(String id, int version)
      Find a task with the given id and version.
      Specified by:
      getTask in interface RemoteWfEngine
      Parameters:
      id - the id of the task
      version - the version of the task
      Returns:
      a task
    • startProcess

      ProcessInstance startProcess(ProcessDefinition p, User u, OrgUnit d, Date duedate, String id)
      Start a process. ProcessDefinition and OrgUnit must not be null.
      Specified by:
      startProcess in interface RemoteWfEngine
      Parameters:
      p - the process definition
      u - the user
      d - the org. unit
      duedate - the duedate
      id - the id of the process instance
      Returns:
      the process instance
    • startProcess

      ProcessInstance startProcess(ProcessDefinition p, User u, OrgUnit d, Date duedate, String id, DMSForm f)
      Start a process. ProcessDefinition and OrgUnit must not be null. The form must be already in the database.
      Specified by:
      startProcess in interface RemoteWfEngine
      Parameters:
      p - the process definition
      u - the user
      d - the org. unit
      duedate - the duedate
      id - the id of the process instance
      f - a form
      Returns:
      the process instance
    • createProcessInstance

      ProcessInstance createProcessInstance(ProcessDefinition p, User u, OrgUnit d, Date duedate, String id)
      Create a process instance. ProcessDefinition and OrgUnit must not be null. The process instance waits at the begin step until this activityinstance will be finished explicitely, or until start(pi) is called.
      Specified by:
      createProcessInstance in interface RemoteWfEngine
      Parameters:
      p - the process definition
      u - the user
      d - the org. unit
      duedate - the duedate
      id - the id of the process instance
      Returns:
      the process instance
    • createProcessInstance

      ProcessInstance createProcessInstance(ProcessDefinition p, User u, OrgUnit d, Date duedate, String id, DMSForm f)
      Create a process instance. ProcessDefinition and OrgUnit must not be null. The process instance waits at the begin step until this activityinstance will be finished explicitely, or until start(pi) is called.
      Specified by:
      createProcessInstance in interface RemoteWfEngine
      Parameters:
      p - the process definition
      u - the user
      d - the org. unit
      duedate - the duedate
      id - the id of the process instance
      f - a form
      Returns:
      the process instance
    • start

      void start(ProcessInstance pi)
      Start a process instance, which was previously created, but not started.
      Specified by:
      start in interface RemoteWfEngine
      Parameters:
      pi - the process instance to start
    • getWorklist

      List<ActivityInstance> getWorklist(Application a, boolean withRepr)
      Get the worklist of the current user.
      Specified by:
      getWorklist in interface RemoteWfEngine
      Parameters:
      a - the application, if null return work items for all applications
      withRepr - if true add the work items assigned to persons the user substitutes.
      Returns:
      a list of activity instances
    • getWorklist

      List<ActivityInstance> getWorklist(WorklistKind wlKind, Application a)
      Get a worklist of the desired kind for the current user.
      Specified by:
      getWorklist in interface RemoteWfEngine
      Parameters:
      wlKind - the kind of worklist to be returned
      a - the application, if null return work items for all applications
      Returns:
      a list of activity instances
    • getWorklist

      List<ActivityInstance> getWorklist(Set<WorklistKind> wlKinds, Application a)
      Get a combined worklist of the combination (union) of the desired kinds for the current user.
      Specified by:
      getWorklist in interface RemoteWfEngine
      Parameters:
      wlKinds - the kinds of worklists to be returned
      a - the application, if null return work items for all applications
      Returns:
      a list of activity instances
    • getWaitingList

      List<ActivityInstance> getWaitingList(Application a)
      Get the list of waiting activities of the current user.
      Specified by:
      getWaitingList in interface RemoteWfEngine
      Parameters:
      a - the application, if null return waiting items for all applications
      Returns:
      a list of activity instances
    • getRoleWorklist

      List<ActivityInstance> getRoleWorklist(Application a)
      Get the role worklist of the current user.
      Specified by:
      getRoleWorklist in interface RemoteWfEngine
      Parameters:
      a - the application, if null return work items for all applications
      Returns:
      a list of activity instances
    • getSuspensionList

      List<ActivityInstance> getSuspensionList(Application a)
      Get the personal suspension list of the current user.
      Specified by:
      getSuspensionList in interface RemoteWfEngine
      Parameters:
      a - the application, if null return work items for all applications
      Returns:
      a list of activity instances
    • getRoleSuspensionList

      List<ActivityInstance> getRoleSuspensionList(Application a)
      Get the role suspension list of the current user.
      Specified by:
      getRoleSuspensionList in interface RemoteWfEngine
      Parameters:
      a - the application, if null return work items for all applications
      Returns:
      a list of activity instances
    • isVisible

      boolean isVisible(ActivityInstance ai)
      Determines whether an ActivityInstance is visible for the current user. It is visible when one of the worklists of the current user contains the ai.
      Specified by:
      isVisible in interface RemoteWfEngine
      Returns:
      true, if the passed ActivityInstance is in one of the worklists of the user (personal, role, suspension, rolesuspension, pending, or via representation)
    • getProcess

      ProcessInstance getProcess(String id)
      Find a process instance with the given id. If more than one process instances qualify, then ApplicationException(1125) will be thrown.
      Specified by:
      getProcess in interface RemoteWfEngine
      Parameters:
      id - the process instance id
      Returns:
      the process instance
    • getProcess

      ProcessInstance getProcess(long oid)
      Find a process instance from the given oid.
      Specified by:
      getProcess in interface RemoteWfEngine
      Parameters:
      oid - the process instance oid
      Returns:
      the process instance
    • getProcessFromForm

      ProcessInstance getProcessFromForm(long formoid)
      Find a process instance from the oid of a form.
      Specified by:
      getProcessFromForm in interface RemoteWfEngine
      Parameters:
      formoid - the oid of a process form
      Returns:
      the process instance
    • getActivityInstance

      ActivityInstance getActivityInstance(long oid)
      Find a activity instance from the given oid.
      Specified by:
      getActivityInstance in interface RemoteWfEngine
      Parameters:
      oid - the activity instance oid
      Returns:
      the process instance
    • getProcess

      ProcessInstance getProcess(DMSForm f)
      Find the process instance where the given form is attached. The method returns a process if and only if the form is a process form. It returns null for subforms. It always returns the "latest" process-instance (latest started, highest oid). This is important, if a form is attached to more than one process instance, for example a parfor in an iteration.
      Specified by:
      getProcess in interface RemoteWfEngine
      Parameters:
      f - the form
      Returns:
      the process instance
    • getProcesses

      List<ProcessInstance> getProcesses(String condition)
      Find the process instances with a given condition.
      Specified by:
      getProcesses in interface RemoteWfEngine
      Parameters:
      condition - a SQL where clause
      Returns:
      a list of process instances
    • getActivities

      List<ActivityInstance> getActivities(String condition)
      Find the activity instances with a given condition.
      Specified by:
      getActivities in interface RemoteWfEngine
      Parameters:
      condition - a SQL where clause
      Returns:
      a list of activity instances
    • getAllInteractiveTasks

      List<ActivityInstance> getAllInteractiveTasks(ProcessInstance process)
      Get the list of ALL active, interactive activities of a process instance. ATTENTION: this method returns all interactive (Type =ActivityInstance.TASK) ActivityInstances of the given ProcessInstance, even ALL children of ActivityInstance.PROCESS, ActivityInstance.PARFOR and ActivityInstance.SCOPE will be returned
      Specified by:
      getAllInteractiveTasks in interface RemoteWfEngine
      Parameters:
      process - the process instance
      Returns:
      a list of activity instances
    • getAllCurrentActivityInstances

      List<ActivityInstance> getAllCurrentActivityInstances(ProcessInstance process)
      Get the list of ALL active activities of a process instance. ATTENTION: this method returns all tasks with Type =ActivityInstance.TASK), as well as all longrunning activity instances [Type in (ActivityInstance.SYSTEM_WAIT, ActivityInstance.BATCH, ActivityInstance.WS_INVOKE, ActivityInstance.WS_RECEIVE, ActivityInstance.WAIT)] ActivityInstances of the given ProcessInstance, even ALL children of ActivityInstance.PROCESS, ActivityInstance.PARFOR and ActivityInstance.SCOPE will be returned
      Specified by:
      getAllCurrentActivityInstances in interface RemoteWfEngine
      Parameters:
      process - the process instance
      Returns:
      a list of activity instances
    • getActiveTasks

      List<ActivityInstance> getActiveTasks(ProcessInstance process)
      Get the list of active activities of a process instance. ATTENTION: this method returns all types of ActivityInstance, but doesn't return ALL ActivityInstances of the given ProcessInstance. children of ActivityInstance.PROCESS, ActivityInstance.PARFOR and ActivityInstance.SCOPE will not be returned
      Specified by:
      getActiveTasks in interface RemoteWfEngine
      Parameters:
      process - the process instance
      Returns:
      a list of activity instances
    • getActiveTasks

      List<ActivityInstance> getActiveTasks(ProcessInstance process, User u)
      Get the list of active, interactive activities of a process instance assigned to a user. ATTENTION: this method returns only interactive (Type =ActivityInstance.TASK) ActivityInstances of the given ProcessInstance, but doesn't return ALL interactive ActivityInstances of the given ProcessInstance. children of ActivityInstance.PROCESS, ActivityInstance.PARFOR and ActivityInstance.SCOPE will not be returned
      Specified by:
      getActiveTasks in interface RemoteWfEngine
      Parameters:
      process - the process instance
      u - the user
      Returns:
      a list of activity instances
    • getActivityInstances

      List<ActivityInstance> getActivityInstances(ProcessInstance process)
      Get the list of all direct activity instances of a process instance.

      ATTENTION: this method doesn't return ALL ActivityInstances of the given ProcessInstance. children of ActivityInstance.PROCESS, ActivityInstance.PARFOR and ActivityInstance.SCOPE will not be returned
      Specified by:
      getActivityInstances in interface RemoteWfEngine
      Parameters:
      process - the process instance
      Returns:
      a list of activity instances
    • getActivityInstances

      List<ActivityInstance> getActivityInstances(ProcessInstance process, String stepid)
      Get the list of direct activity instances of a particular step in a process.

      ATTENTION: this method doesn't return ALL ActivityInstances of the given ProcessInstance. children of ActivityInstance.PROCESS, ActivityInstance.PARFOR and ActivityInstance.SCOPE will not be returned
      Specified by:
      getActivityInstances in interface RemoteWfEngine
      Parameters:
      process - the process instance
      stepid - the id of the step
      Returns:
      a list of activity instances
    • getActivityInstances

      List<ActivityInstance> getActivityInstances(ProcessInstance process, boolean recursive, boolean active, int type, String stepid)
      Get a list of activity instances for a process instance
      Specified by:
      getActivityInstances in interface RemoteWfEngine
      Parameters:
      process - the process instance
      recursive - if true, also nested activity instances will be returned
      active - if true, only active activity instances will be returned
      type - of activity instances to return, if all types should be returned, use ActivityInstance.ALL
      stepid - restrict the results by id of the step, use null if no restriction intended
      Returns:
    • getDocuments

      List<DMSObject> getDocuments(ProcessInstance process)
      Get the list of DMS objects (e.g. documents, folders) attached to a process.
      Specified by:
      getDocuments in interface RemoteWfEngine
      Parameters:
      process - the process instance
      Returns:
      a list of DMSObject
    • getForm

      <P extends DMSForm> P getForm(ActivityInstance ai, String id)
      Get a form of a process.
      Specified by:
      getForm in interface RemoteWfEngine
      Parameters:
      ai - the process instance or an activity instance of the process
      id - the id of the form in the process
      Returns:
      the form
    • hasForm

      boolean hasForm(ActivityInstance ai, String id)
      Check if the process has a form with given id.
      Specified by:
      hasForm in interface RemoteWfEngine
      Parameters:
      ai - the process instance or an activity instance of the process
      id - the id of the form in the process
      Returns:
      true if the form exists
    • getForms

      List<DMSForm> getForms(ProcessInstance process)
      Get the forms of a process.
      Specified by:
      getForms in interface RemoteWfEngine
      Parameters:
      process - the process instance
      Returns:
      the forms (DMSForm objects)
    • getMainProcess

      ProcessInstance getMainProcess(ActivityInstance ai)
      Get the root of the activity instance tree
      Specified by:
      getMainProcess in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      Returns:
      the process instance of the main process of the given activity instance.
    • getParent

      Get the process instance of the given activity instance.
      Specified by:
      getParent in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      Returns:
      the process instance
    • getNotes

      List<DMSNote> getNotes(ProcessInstance process)
      Get the notes to a process instances
      Specified by:
      getNotes in interface RemoteWfEngine
      Parameters:
      process - a process instance
      Returns:
      a list of notes (DMSNote objects)
    • addSystemNote

      void addSystemNote(ActivityInstance ai, String subject, String text)
      Attach a note to an ActivityInstance.
      Specified by:
      addSystemNote in interface RemoteWfEngine
      Parameters:
      ai - the activity instance (or process instance) to which the note is attached
      subject - the system note subject
      text - the system note text
    • hasDocuments

      boolean hasDocuments(ProcessInstance process)
      Has the process documents attached?
      Specified by:
      hasDocuments in interface RemoteWfEngine
      Parameters:
      process - a process instance
      Returns:
      true if documents are present
    • hasNotes

      boolean hasNotes(ProcessInstance process)
      Has the process notes attached?
      Specified by:
      hasNotes in interface RemoteWfEngine
      Parameters:
      process - a process instance
      Returns:
      true if notes are present
    • getFieldModes

      Map<String,Short> getFieldModes(ActivityInstance ai, DMSForm f)
      Get field modes for form fields
      Specified by:
      getFieldModes in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      f - the form
      Returns:
      A map where the keys are the attribute names, the values are INVISIBLE, READ_ONLY, READ_WRITE, TEXT, MUST, NO_ADDDEL as short objects
    • getFieldModes

      Map<String,Short> getFieldModes(ActivityInstance ai, DMSForm form, DMSForm mainform, String id)
      Get field modes for form fields and subforms
      Specified by:
      getFieldModes in interface RemoteWfEngine
      Parameters:
      ai - activity instance
      form - form or sub form, may be null if mainform is set
      mainform - main form, may be null if form is already contain mainform
      id - subform relation id
      Returns:
      see RemoteWfEngine.getFieldModes(ActivityInstance, DMSForm)
    • getSuspensions

      List<Suspension> getSuspensions(ActivityInstance ai)
      Find out when and how the activity instance was in the suspension list.
      Specified by:
      getSuspensions in interface RemoteWfEngine
      Returns:
      a list of Suspensions
    • canTake

      void canTake(ActivityInstance ai)
      Check if the thread-user can take the activity.
      Specified by:
      canTake in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
    • take

      Take an activity: move it from the role-worklist to the worklist.
      Specified by:
      take in interface RemoteWfEngine
      Parameters:
      ai - an activity instance that is created after the take operation;
      ThreadContext.getAttribute("untakenActivity") returns the activity instance which has been created before the take operation
      Returns:
      the activity instance now active, this may be the same as the parameter but can also be another object
    • finish

      void finish(ActivityInstance ai)
      Finsh an activity, the engine starts the next step.
      Specified by:
      finish in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
    • getChoiceSteps

      Use this method to get the possible choice branches when the process execution reaches a choice. The method returns a list of lists, each inner list contains the choice branches belonging to one choice.
      Specified by:
      getChoiceSteps in interface RemoteWfEngine
      Returns:
      a list of lists of ActivityInstances
    • finishChoice

      void finishChoice(ActivityInstance ai)
      Finishs a choice branch, abort the other branches.
      Specified by:
      finishChoice in interface RemoteWfEngine
      Parameters:
      ai - the choice step on the branch you want to follows
    • closePredecessor

      void closePredecessor(ActivityInstance ai)
      If the predecessor of ai was not finished completely (is in status WAITING) and the necessary action is done now (for example setting the agent for ai) this method will complete it. If the predecessor is in another state it does nothing.
      Specified by:
      closePredecessor in interface RemoteWfEngine
    • listPreviousSteps

      List the previous steps of the process (possible go back targets).
      Specified by:
      listPreviousSteps in interface RemoteWfEngine
      Parameters:
      ai - current activity instance
      Returns:
      a list of Pairs. The first element of the pair is a previous activity instance, the second is a list of activities that must be aborted when going back to this step (for example siblings in a parallelism).
    • goBack

      Go back to a previous step. A clone of the given previous activity instance of this process instance is created, the comment is added to the new activity.
      Specified by:
      goBack in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      ai2 - a finished activity instance
      comment - a comment
      Returns:
      the activity instance now active
    • untake

      Put back an activity: move it from the worklist to the role-worklist.
      Specified by:
      untake in interface RemoteWfEngine
      Parameters:
      ai - an activity instance that is created before the untake operation;
      ThreadContext.getAttribute("untakenActivity") returns the activity instance which has been created after the take operation
      Returns:
      the activity instance now active
    • seeLater

      void seeLater(ActivityInstance ai, Date d)
      Move the activity instance from the worklist to the suspension list.
      Specified by:
      seeLater in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      d - the date, when the item should reappear in the worklist
    • seeLater

      void seeLater(ActivityInstance ai, Date d, String description)
      Move the activity instance from the worklist to the suspension list.
      Specified by:
      seeLater in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      d - the date, when the item should reappear in the worklist
      description - an optional comment
    • seeAgain

      void seeAgain(ActivityInstance ai)
      Move the activity instance from the suspension list to the worklist.
      Specified by:
      seeAgain in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
    • setAgent

      void setAgent(ActivityInstance ai, Agent a)
      Give the activity instance to another agent. Please note that this method does not set the step agent (which is needed e.g. for untake operation)!
      Specified by:
      setAgent in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      a - an agent (user or role)
    • changeAgent

      ActivityInstance changeAgent(ActivityInstance ai, Agent a, OrgUnit ou, String comment)
      Give the activity instance to another agent. Change is visible in process history
      Specified by:
      changeAgent in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      a - an agent (user or role)
      ou - an org-unit, may be null
      comment - optional comment to the next agent
    • setStepAgent

      void setStepAgent(ActivityInstance ai, Agent a)
      Set the step-agent of the activity instance to another agent. This is the agent where a untake of the activity instance
      Specified by:
      setStepAgent in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      a - an agent (user or role)
    • gotoTask

      @Deprecated(since="9.0", forRemoval=true) void gotoTask(ProcessInstance process, String taskid, Agent ag, String comment)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Goto another task. The process flow leaves the defined route and jumps to the given task. The id of the task, an agent and a comment is given.
      Specified by:
      gotoTask in interface RemoteWfEngine
      Parameters:
      process - an processinstance instance
      taskid - id of a task
      ag - an agent (user or role)
      comment - a comment string
    • gotoTask

      @Deprecated(since="10.0", forRemoval=true) void gotoTask(ActivityInstance ai, String stepname, Agent ag, OrgUnit ou, String comment)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Goto another task. The process flow leaves the defined route and jumps to the given task. Preprocessing is executed.
      Specified by:
      gotoTask in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      stepname - the name of a step to jump to, set the name in the process definition (editor or WDL).
      ag - an agent (user or role), may be null
      ou - the org.unit (may be null)
      comment - a comment string
    • gotoStep

      ActivityInstance gotoStep(ActivityInstance ai, String stepid, Agent ag, OrgUnit ou, String comment)
      Goto another step. The process flow leaves the defined route and jumps to the given step. Preprocessing is executed if step is a task.
      Specified by:
      gotoStep in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      stepid - the id of a step to jump to, set the id in the process definition (editor or WDL).
      ag - an agent (user or role), may be null. Will be ignored if the specified step is not a task
      ou - the org.unit (may be null). Will be ignored if the specified step is not a task
      comment - a comment string
      Returns:
      the ActivityInstance of the target step (defined by stepid)
    • copyTo

      Send a copy to another user.
      Specified by:
      copyTo in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      u - a user
      Returns:
      the copy activity instance
    • copyTo

      ActivityInstance copyTo(ActivityInstance ai, User u, String comment)
      Send a copy to another user.
      Specified by:
      copyTo in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      u - a user
      comment - a comment to this copy
      Returns:
      the copy activity instance
    • makeBranch

      @Deprecated(since="9.0", forRemoval=true) void makeBranch(ProcessInstance process, Task t, Agent a, OrgUnit d, List<String> forms)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Insert a new step - subprocess or task - to the running process. The step is added as a branch and can be completed independent of the process.
      Specified by:
      makeBranch in interface RemoteWfEngine
    • makeBranch

      ActivityInstance makeBranch(ProcessInstance process, Task t, Agent a, OrgUnit d)
      Insert a new step to the running process. The step is added as a branch and can be completed independent of the process.
      Specified by:
      makeBranch in interface RemoteWfEngine
      Parameters:
      process - instance of the process
      t - a task assigned to the process
      a - a user or role
      d - an optional department
    • startBranch

      void startBranch(ProcessInstance process, String branchid)
      Start a branch. In a process where a branch is defined, this call start the branch. This can be done independent of the normal process flow.
      Specified by:
      startBranch in interface RemoteWfEngine
      Parameters:
      process - process instance
      branchid - the step-id of the branch step.
    • addParforInstances

      int addParforInstances(String stepid, ActivityInstance previous)
      Start additional parfor branches for the given step. Branches are only started if there are already running branches.
      Specified by:
      addParforInstances in interface RemoteWfEngine
      Parameters:
      stepid - the id of the parfor step
      previous - an activity instance of the same process instance
    • setOrgUnit

      void setOrgUnit(ActivityInstance ai, OrgUnit d)
      Change the organizational unit of a process.
      Specified by:
      setOrgUnit in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      d - the OrgUnit
    • setDescription

      void setDescription(ActivityInstance ai, String descr)
      Set the description of an activity instance.
      Specified by:
      setDescription in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      descr - the new desription
    • setSubject

      void setSubject(ProcessInstance process)
      Set the subject of the process instance according to the definition in the process definition.
      Specified by:
      setSubject in interface RemoteWfEngine
      Parameters:
      process - the process instance
    • setSubjectToString

      void setSubjectToString(ProcessInstance process, String str)
      Set the subject of the process instance o the given string value.
      Specified by:
      setSubjectToString in interface RemoteWfEngine
      Parameters:
      process - the process instance
      str - the new subject
    • updateForm

      void updateForm(DMSForm f)
      Update the form (make the changes persistent).
      Specified by:
      updateForm in interface RemoteWfEngine
      Parameters:
      f - the form
    • setDuedate

      void setDuedate(ActivityInstance ai, Date d)
      Set the duedate of the activity instance.
      Specified by:
      setDuedate in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      d - the new due date
    • setId

      void setId(ProcessInstance pi, String s)
      Set the id of the process instance.
      Specified by:
      setId in interface RemoteWfEngine
      Parameters:
      pi - a process instance
      s - the new id
    • setPriority

      void setPriority(ProcessInstance pi, int priority)
      Set the priority of the process instance.
      Specified by:
      setPriority in interface RemoteWfEngine
      Parameters:
      pi - a process instance. The priority is set on the main process instance mpi of pi (and on subprocesses of mpi).
      priority - the new priority, two digit integer, starting with 0 (means lowest priority).
    • abort

      void abort(ProcessInstance process)
      Abort a process.
      Specified by:
      abort in interface RemoteWfEngine
      Parameters:
      process - the process instance. Should be a main Process, may be an ActivityInstance in a branch.
    • reactivate

      void reactivate(ProcessInstance process)
      Reactivate a process.
      Specified by:
      reactivate in interface RemoteWfEngine
      Parameters:
      process - the process instance. Should be a main process.
    • archive

      void archive(ProcessInstance process)
      Archive a process. Remove it from the database.
      Specified by:
      archive in interface RemoteWfEngine
      Parameters:
      process - the process instance
    • abort

      void abort(ProcessInstance process, String comment)
      Abort a process and add a DMSNote with a generated Subject and a given comment.
      Specified by:
      abort in interface RemoteWfEngine
      Parameters:
      process - the process instance. Should be a main Process, may be an ActivityInstance in a branch.
      comment - a comment, why the process is aborted
    • checkAbort

      void checkAbort(ProcessInstance process)
      Check if the thread user may abort the process. Either start agent and process in first step or edit process instance right.
      Specified by:
      checkAbort in interface RemoteWfEngine
    • reactivate

      void reactivate(ProcessInstance process, String comment)
      Reactivate a process.
      Specified by:
      reactivate in interface RemoteWfEngine
      Parameters:
      process - the process instance. Should be a main Process.
      comment - a comment, why the process is reactivated
    • reactivateAndTake

      void reactivateAndTake(ProcessInstance process, String comment)
      Reactivate a process and take the reactivated tasks.
      Specified by:
      reactivateAndTake in interface RemoteWfEngine
      Parameters:
      process - the process instance. Should be a main Process.
      comment - a comment, why the process is reactivated
    • getContext

      ActivityInstance getContext()
      Return the current activity instance. This method returns a non-null value when called from a postcondition, preprocessing, compensation method of a task of from a system step or a condition in a process definition.
      Specified by:
      getContext in interface RemoteWfEngine
      Returns:
      an activity instance
    • setContext

      void setContext(ActivityInstance ai)
      Specified by:
      setContext in interface RemoteWfEngine
    • getServerProperty

      String getServerProperty(String prop)
      Returns a property from the server
      Specified by:
      getServerProperty in interface RemoteWfEngine
      Returns:
      the property, null if the property is unknown.
    • listSuccessors

      List<ActivityInstance> listSuccessors(ActivityInstance ai)
      Return the list of successor steps of an activity instance.
      Specified by:
      listSuccessors in interface RemoteWfEngine
      Returns:
      a list of activity instances
    • listPredecessors

      List<ActivityInstance> listPredecessors(ActivityInstance ai)
      Return the list of predecessor steps of an activity instance.
      Specified by:
      listPredecessors in interface RemoteWfEngine
      Returns:
      a list of activity instances
    • addAgent

      void addAgent(ActivityInstance ai, Agent a, OrgUnit ou, DMSNote note)
      Add an agent which receives the process after the current agent
      Specified by:
      addAgent in interface RemoteWfEngine
      Parameters:
      ai - the activity instance
      a - a user or role
      ou - an organizational unit, if null the ou of the previous activity instance is used
      note - an (optional) note to the agent of the activity
    • getLastInteractive

      ActivityInstance getLastInteractive(ActivityInstance ai)
      Get the last interactive activityinstance (type=TASK).
      Specified by:
      getLastInteractive in interface RemoteWfEngine
      Parameters:
      ai - the activity instance to start from (backwards)
      Returns:
      the last TASK executed in the flow before ai, or null
    • goBackToLastInteractive

      void goBackToLastInteractive(ActivityInstance ai, String comment)
      Go back to the last interactive activity instance.
      Specified by:
      goBackToLastInteractive in interface RemoteWfEngine
      Parameters:
      ai - the activity instance to start from (backwards)
      comment - a comment to store in the process history (e.g. the reason for going back)
    • makeVersion

      ActivityInstance makeVersion(ActivityInstance ai, String desc, boolean withDocs)
      Versions the passed activity instance, the process forms and the documents (optional) and returns a new activity instance which is a copy of the passed one.
      Specified by:
      makeVersion in interface RemoteWfEngine
      Parameters:
      ai - the activity instance to version
      desc - a comment for this version
      withDocs - if true all the documents are also versioned
      Returns:
      the new activity instance
    • refreshWLCacheOrgData

      void refreshWLCacheOrgData()
      Refresh the organizational data in the worklist cache.
      Specified by:
      refreshWLCacheOrgData in interface RemoteWfEngine
    • refreshWLCache

      void refreshWLCache(User u)
      Refresh the organizational data in the WorklistCache for a particular user.
      Specified by:
      refreshWLCache in interface RemoteWfEngine
      Parameters:
      u - - the user
    • setFinished

      void setFinished(ActivityInstance ai)
      Set the status of the activity instance to FINISHED. This method should be used only in the expressions in an andjoin or end parfor node. In case of parfor set the state of the parent of the current activity instance. In both cases if you set the state to finished the engine will continue the process after the parallelism.
      Specified by:
      setFinished in interface RemoteWfEngine
      Parameters:
      ai - the activity instance to be finished
    • abortSiblings

      void abortSiblings(ActivityInstance join)
      Abort the siblings of the par branch. The activity instance must be an instance of the andjoin node. Note that you must assure that the process continues after the andjoin, you can do this by calling wfEngine.setFinished(join) - otherwise the process will hang in the andjoin
      Specified by:
      abortSiblings in interface RemoteWfEngine
    • abortParforSiblings

      void abortParforSiblings(ActivityInstance parfor)
      Abort the running siblings of the current parfor instances. Note that you must assure that the process continues after the parfor, you can do this by calling wfEngine.setFinished(parfor) - otherwise the process will hang in the end parfor node
      Specified by:
      abortParforSiblings in interface RemoteWfEngine
      Parameters:
      parfor - an instance of the parfor step (a parent of an activityinstance inside the parfor)
    • setSeen

      void setSeen(ActivityInstance ai, boolean seen)
      Set the given ActivityInstance to seen/unseen for the current user.
      Specified by:
      setSeen in interface RemoteWfEngine
    • removeSeens

      void removeSeens(ActivityInstance ai, boolean meToo)
      Description copied from interface: RemoteWfEngine
      Delete the seen information for the given ai.
      Specified by:
      removeSeens in interface RemoteWfEngine
      Parameters:
      ai - an activity instance
      meToo - if true the seen information for the current user is also deleted.
    • hasSeen

      boolean hasSeen(ActivityInstance ai)
      Returns true if the ActivityInstance has been seen by the current user.
      Specified by:
      hasSeen in interface RemoteWfEngine
    • getFormVersion

      PersistentVersion getFormVersion(DMSForm form, ActivityInstance ai)
      Returns the version of the passed form in the context of the passed activity instance.
      Specified by:
      getFormVersion in interface RemoteWfEngine
      Parameters:
      form - the form which version is wanted
      ai - the activity instance determining the context of the version
      Returns:
      the requested version or null if there is no such version
    • listFormVersions

      List<PersistentVersion> listFormVersions(ActivityInstance ai)
      Returns a list of form versions (at most one for each process form) which were made in the context of the passed activity instance.
      Specified by:
      listFormVersions in interface RemoteWfEngine
      Parameters:
      ai - the activity instance determining the context of the versions
      Returns:
      the requested versions or an empty list if there are no such versions
    • propagateChange

      void propagateChange(ActivityInstance ai)
      Inform the system that a change to an ActivityInstance has been made. Notifications will be sent to the clients.

      This is only needed in special cases, when there were changes in some data that would lead to a different presentation of the ActivityInstance in a client and which where out of the scope of the automatic worklist change detection (e.g. redisplay a worklist item after some form update).

      Specified by:
      propagateChange in interface RemoteWfEngine
      Parameters:
      ai - the activity instance which has changed
    • propagateProcessChange

      void propagateProcessChange(ProcessInstance pi)
      Inform the system that a process instance has been changed. Notifications for all active tasks directly below this process instance will be sent to the clients.

      This is only needed in special cases, when there were changes in some data that would lead to different presentations in the worklists and which where out of the scope of the automatic worklist change detection (e.g. changes in displayed additional data).

      Specified by:
      propagateProcessChange in interface RemoteWfEngine
      Parameters:
      pi - the process instance which has changed
    • propagateProcessChangeRecursive

      void propagateProcessChangeRecursive(ProcessInstance pi)
      Inform the system that a process instance has been changed. Notifications for all active tasks below this process instance will be sent to the clients. Recurses into parfor substructures but not into subprocesses.

      This is only needed in special cases, when there were changes in some data that would lead to different presentations in the worklists and which where out of the scope of the automatic worklist change detection (e.g. changes in displayed additional data).

      Specified by:
      propagateProcessChangeRecursive in interface RemoteWfEngine
      Parameters:
      pi - the process instance which has changed
    • filterByFolder

      void filterByFolder(UserFolder uf, List<ActivityInstance> ais)
      Filter a list of ActivityInstances. Keep those that are in the specified UserFolder. If the UserFolder is null, then all those ActivityInstances are kept in the list, that are in no UserFolder at all.
      Specified by:
      filterByFolder in interface RemoteWfEngine
      Parameters:
      uf - the UserFolder to filter upon.
      ais - the list of ActivityInstances to be filtered
    • getUserFolders

      List<UserFolder> getUserFolders()
      Get the list of UserFolders of the current user.
      Specified by:
      getUserFolders in interface RemoteWfEngine
      Returns:
      the list of UserFolders of the current user.
    • mapToUserFolders

      Map a list of ActivityInstances to their corresponding UserFolders. If an ActivityInstance is in no UserFolder at all, it is not contained in the map.
      Specified by:
      mapToUserFolders in interface RemoteWfEngine
      Parameters:
      ais - the list of activityInstances to be filtered
      Returns:
      the map of ActivityInstances to UserFolders
    • hasMark

      boolean hasMark(ProcessInstance pi)
      Returns true if the ProcessInstance has been marked by the current user.
      Specified by:
      hasMark in interface RemoteWfEngine
    • setMark

      void setMark(ProcessInstance pi, boolean mark)
      Set the given ProcessInstance to marked/unmarked for the current user.
      Specified by:
      setMark in interface RemoteWfEngine