Interface ICase

All Superinterfaces:
INoteable
All Known Subinterfaces:
IBusinessCase

public interface ICase extends INoteable
A workflow case is an instance of a process. It consists of multiple tasks.

The system relevant fields of a case have certain functions within the system. Modifying them means to modify the behavior the case.

The business fields of a case can be used by the process designer to stored business information within a case. He is free in what kind of information he stores in the business fields. We suggest to use the business fields appropriate to their names. The information within the business fields can be referenced within name and description.

The custom fields of a case can be used by the process designer to stored custom information within a case. He is free in what kind of information he stores in the custom fields. The information within the custom fields can be referenced within name and description

Since:
17.05.2006
API:
This is a public API.
  • Method Details

    • getApplication

      IApplication getApplication()
      Gets the application the case belongs to
      Returns:
      application
      API:
      This public API is available in Java.
    • getWorkflowContext

      IWorkflowContext getWorkflowContext()
      Gets the workflow context this case belongs to
      Returns:
      workflow context
      API:
      This public API is available in Java.
    • getProcessModel

      IProcessModel getProcessModel()
      Gets the process model the case belongs to
      Returns:
      process model
      API:
      This public API is available in Java.
    • getProcessModelVersion

      IWorkflowProcessModelVersion getProcessModelVersion()
      Gets the process model version the case was started in
      Returns:
      process model version
      API:
      This public API is available in Java.
    • getBusinessCase

      IBusinessCase getBusinessCase()

      Gets the business case this case belongs to.

      If this case is a

      Returns:
      business case this case belongs to. Never null.
      Since:
      6.5
      See Also:
      API:
      This public API is available in Java.
    • isBusinessCase

      boolean isBusinessCase()
      Returns true if this case is a business case and false if it is a sub case.
      Returns:
      true if this case is a business case
      Since:
      6.5
      See Also:
      API:
      This public API is available in Java.
    • attachToBusinessCase

      void attachToBusinessCase(long businessCaseId)

      Attaches this case to a business case with the given id. If this case is already attached to a business case or already have sub cases then an IllegalStateException is thrown. If the given id does not belong to a business case or belongs to a case of another application then an IllegalArgumentException is thrown.

      Parameters:
      businessCaseId -
      Throws:
      IllegalStateException - if the case is already attached to a business case or has sub cases
      IllegalArgumentException - if the given businessCaseId is not valid
      Since:
      6.5
      See Also:
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseAttachToBusinessCase PERMISSION OR OWNS CaseAttachToBusinessCase@SYSTEM PERMISSION
    • getId

      long getId()
      Returns the case identifier. You should always prefer using uuid().
      Returns:
      case identifier
      See Also:
      API:
      This public API is available in Java.
    • uuid

      String uuid()
      A globally unique identifier for this case. In principle, the UUID should always be preferred over the ID.
      Returns:
      globally unique identifier of this case
      API:
      This public API is available in Java.
    • tasks

      ITasks tasks()
      Provides access to the tasks of this case.
      Returns:
      task provider
      API:
      This public API is available in Java.
    • getTasks

      @Deprecated(since="9.2", forRemoval=true) List<ITask> getTasks()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use tasks().all() Returns all child tasks.
      Returns:
      all tasks
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS TaskReadOwnCaseTasks PERMISSION OR OWNS TaskRead PERMISSION OR OWNS TaskRead@SYSTEM PERMISSION
    • getActiveTasks

      @Deprecated(since="9.2", forRemoval=true) List<ITask> getActiveTasks()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use tasks().allActive() Returns all active child tasks.
      Returns:
      all active tasks
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS TaskReadOwnCaseTasks PERMISSION OR OWNS TaskRead PERMISSION OR OWNS TaskRead@SYSTEM PERMISSION
    • getFirstTask

      ITask getFirstTask()
      Gets the first task of the case. The task that is started at the start process element.
      Returns:
      first task
      API:
      This public API is available in Java.
    • getCreatorUser

      IUser getCreatorUser()
      Gets the user who created this case. Maybe null if user is not known e.g. the case was created by an unknown user or the user was deleted since this case was started. In this case (user was deleted) the name of the user who created the case and was deleted in the meanwhile can be evaluated with the method getCreatorUserName(). This method will return the name of the user who created this case even if the user was deleted.
      Returns:
      creator user or null
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadCreatorUser PERMISSION OR OWNS CaseReadCreatorUser@SYSTEM PERMISSION
    • getCreatorUserName

      String getCreatorUserName()
      Gets the name of the user who created this case. Maybe null if user is not known e.g. the case was created by an unknown user. Note that this method will provide the name of the user even if the user does not exists anymore.
      Returns:
      name of the user who created this case
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadCreatorUserName PERMISSION OR OWNS CaseReadCreatorUserName@SYSTEM PERMISSION
    • setCreatorUser

      void setCreatorUser(IUser creatorUser)
      Sets the given user as case creator.
      Parameters:
      creatorUser - the user to set as case creator. null indicates the user is unknown (e.g. an anonymous user)
      Since:
      6.7
      API:
      This public API is available in Java.
    • getCreatorTask

      ITask getCreatorTask()
      Gets the task that created this case with a trigger element, maybe null if case was not started through a trigger element.
      Returns:
      creator task
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS TaskRead PERMISSION OR OWNS TaskRead@SYSTEM PERMISSION
    • getProcessStart

      IProcessStart getProcessStart()
      Get the process start the case was started on
      Returns:
      process start
      API:
      This public API is available in Java.
    • getWorkflowEvents

      List<IWorkflowEvent> getWorkflowEvents()
      Gets the workflow events of this case
      Returns:
      list of workflow events
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS WorkflowEventReadAll PERMISSION OR OWNS WorkflowEventReadAll@SYSTEM PERMISSION
    • getStartTimestamp

      Date getStartTimestamp()
      Gets the start timestamp of the case
      Returns:
      start timestamp
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadStartTimestamp PERMISSION OR OWNS CaseReadStartTimestamp@SYSTEM PERMISSION
    • getEndTimestamp

      Date getEndTimestamp()
      Gets the end timestamp of the case. Maybe null if case is not yet finished
      Returns:
      end timestamp. Maybe null
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadEndTimestamp PERMISSION OR OWNS CaseReadEndTimestamp@SYSTEM PERMISSION
    • getModifiedTimestamp

      Date getModifiedTimestamp()
      Get the last timestamp a case has been modified.
      Returns:
      modified timestamp
      API:
      This public API is available in Java.
    • getBusinessRuntime

      BusinessDuration getBusinessRuntime()

      Gets the BusinessDuration between the creation (see getStartTimestamp()) and the completion (see getEndTimestamp()) of this case.

      The business runtime is calculated only when a case ends (state changes to CaseState.DONE).

      To calculate the BusinessDuration the IDefaultBusinessCalendar of the case is used.

      Returns:
      BusinessDuration between creation and completion. Returns null if the case is not yet completed or the case has been completed before the business runtime feature was introduced.
      Since:
      Pilatus
      See Also:
      API:
      This public API is available in Java.
    • getWorkingTime

      Duration getWorkingTime()
      Gets the Duration during that any user has been working on this case.
      The working time is the sum of the working times from all tasks of this case. Whenever a task working time changes, the corresponding case working time is recalculated.
      Returns:
      Working time as Duration.
      Returns null for the following situations:
      • no task has been parked or completed
      • the case has been completed before the working time feature was introduced.
      Since:
      Pilatus
      See Also:
      API:
      This public API is available in Java.
    • owners

      CaseOwners owners()
      Returns the owners of the case.

      The intend of the owner is only for descriptive purpose and has no influence on the behavior of the Workflow Engine. This may can be used for example in Workflow UIs to search and filter in case lists.
      Returns:
      owners
      Since:
      12.0.0
      API:
      This public API is available in Java.
    • notes

      Notes notes()

      Returns the notes of the case.

      Examples:

      Get all notes of the current case:
      List<Note> notes = ivy.case.notes().all()

      Add a new note to the current case:
      ivy.case.notes().add().content("My first note").execute()

      Returns:
      notes
      Since:
      12.0.0
      API:
      This public API is available in Java.
    • setOwner

      @Deprecated(since="12.0.0", forRemoval=true) void setOwner(ISecurityMember owner)
      Deprecated, for removal: This API element is subject to removal in a future version.
      use owners(). A case can have multiple owners. To not break existing applications, this will first remove all owners attached to this case and adds the new owner. By passing null it only will remove all owners. Sets the owner of the case.
      Parameters:
      owner - or null
      See Also:
      API:
      This public API is available in Java.
    • getOwner

      @Deprecated(since="12.0.0", forRemoval=true) ISecurityMember getOwner()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use owners(). A case can have multiple owners. This will return only one owner. Returns the owner of the case. Maybe null if no owner was set with setOwner(ISecurityMember).

      The intend of the owner is only for descriptive purpose and has no influence on the behavior of the Workflow Engine. This may can be used for example in Workflow UIs to search and filter in case lists.
      Returns:
      owner or null
      API:
      This public API is available in Java.
    • getOwnerName

      @Deprecated(since="12.0.0", forRemoval=true) String getOwnerName()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use owners(). A case can have multiple owners. This will return only the name of one owner. Returns the name of the owner. Maybe null if no owner was set with setOwner(ISecurityMember). Does not return null if the ISecurityMember was deleted.
      Returns:
      name of the owner or null
      See Also:
      API:
      This public API is available in Java.
    • setCategoryPath

      void setCategoryPath(String categoryPath)
      Sets the given String as category path of this ICase. Use "/" as path separator.

      null or an empty string could be used to reset the path.

      Parameters:
      categoryPath - the category path of this ICase.
      See Also:
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseWriteCategory PERMISSION OR OWNS CaseWriteCategory@SYSTEM PERMISSION
    • getCategoryPath

      String getCategoryPath()
      Returns the category path of this ICase.

      The method getCategory() returns the corresponding Category to the current category path.

      Returns:
      the current category path, never null
      See Also:
      API:
      This public API is available in Java.
    • getCategory

      Category getCategory()
      Returns the Category of this ICase. The Category provides locale specific information like the name of a category path, as defined in the CMS. See Category for more information.

      The method setCategoryPath(String) allows to set the category of a case.

      Returns:
      the current Category, corresponding to the current category path, never null
      See Also:
      API:
      This public API is available in Java.
    • getState

      CaseState getState()
      Get state of the case
      Returns:
      state of the case
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadState PERMISSION OR OWNS CaseReadState@SYSTEM PERMISSION
    • getBusinessState

      CaseBusinessState getBusinessState()
      Gets the business state of the case
      Returns:
      business state
      Since:
      11.1.0
      API:
      This public API is available in Java.
    • getPriority

      WorkflowPriority getPriority()
      Gets the priority of the case
      Returns:
      priority of the case
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadPriority PERMISSION OR OWNS CaseReadPriority@SYSTEM PERMISSION
    • setPriority

      void setPriority(WorkflowPriority priority)
      Sets the priority of the case
      Parameters:
      priority - the new priority
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseWritePriority PERMISSION OR OWNS CaseWritePriority@SYSTEM PERMISSION
    • isPersistent

      boolean isPersistent()
      Checks if the case is persistent. A case that is persistent will also be available after a system restart. A case is normally created non persistent with the following exception:
      • The case is created with a trigger element
      The first task of a case is also created non persistent. As soon as the first task gets persistent the case will be persistent too.
      Returns:
      true if case is persistent, otherwise false
      See Also:
      API:
      This public API is available in Java.
    • getName

      String getName()
      Get name of the case for the current session's content locale.
      Returns:
      name of the case
      See Also:
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadName PERMISSION OR OWNS CaseReadName@SYSTEM PERMISSION
    • setName

      void setName(String nameTemplate)

      Expands the macros in the given case name template and then sets the expanded case name for each locale.

      Note: Only <%=ivy.cms.co(...)%> macros are supported. If you want to include process data then use string concatenation instead of <%=in. ...%> macros.

      If the given case name template do not contain any macros the same case name (the name template) is set for all locales.

      Example:

      
       ivy.case.setName("<%=ivy.cms.co(\"/case/name\")%> " + in.person.name);
       
      Parameters:
      nameTemplate - the template with macros to expand
      Throws:
      IllegalArgumentException - if the given macro is null
      See Also:
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseWriteName PERMISSION OR OWNS CaseWriteName@SYSTEM PERMISSION
    • names

      Get the localized names of the case.

      Example:

      String caseName = ivy.wfCase.names().current();
      Returns:
      localized names
      Since:
      9.4
      See Also:
      API:
      This public API is available in Java.
    • getDescription

      String getDescription()
      Get description of the case for the current session's content locale.
      Returns:
      description of the case
      See Also:
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseReadDescription PERMISSION OR OWNS CaseReadDescription@SYSTEM PERMISSION
    • setDescription

      void setDescription(String descriptionTemplate)

      Expands the macros in the given case description template and then sets the expanded case description for each locale.

      Note: Only <%=ivy.cms.co(...)%> macros are supported. If you want to include process data then use string concatenation instead of <%=in. ...%> macros.

      If the given case description template do not contain any macros the same case description (the name template) is set for all locales.

      Example:

      
       ivy.case.setDescription("<%=ivy.cms.co(\"/case/description\")%> " + in.person.name);
       
      Parameters:
      descriptionTemplate - the template with macros to expand
      Throws:
      IllegalArgumentException - if the given macro is null
      See Also:
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseWriteDescription PERMISSION OR OWNS CaseWriteDescription@SYSTEM PERMISSION
    • descriptions

      ILocalizedStrings descriptions()

      Get the localized descriptions of the task.

      Example:

      String caseDescription = ivy.wfCase.descriptions().current();
      Returns:
      localized descriptions
      Since:
      9.4
      See Also:
      API:
      This public API is available in Java.
    • customFields

      ICustomFields customFields()

      You can use custom fields to store additional, customer specific information on a case. You can use custom fields to search for or filter cases.

      Examples:

      Setting a custom field:

      ivy.case.customFields().stringField("branchOffice").set("Zug");

      Getting a custom field:

      String branchOffice = ivy.case.customFields().stringField("branchOffice").getOrDefault("Luzern")

      Getting all custom fields:

      import ch.ivyteam.ivy.workflow.custom.field.ICustomField;
       List<ICustomField> customFields = ivy.case.customFields().all();
      Returns:
      custom fields
      Since:
      7.3
      See Also:
      API:
      This public API is available in Java.
    • destroy

      void destroy()
      Destroys this case and all tasks that belongs to the case
      API:
      This public API is available in Java.
      Security:
      SESSION OWNS CaseDestroy PERMISSION OR OWNS CaseDestroy@SYSTEM PERMISSION
    • getBusinessCalendar

      IDefaultBusinessCalendar getBusinessCalendar()
      The IBusinessCalendar used for this case. Never null
      Returns:
      never null
      API:
      This public API is available in Java.
    • setBusinessCalendar

      void setBusinessCalendar(IBusinessCalendar calendar)
      Defines the IBusinessCalendar for this ICase. This influences the IDefaultBusinessCalendar determination when calling ivy.cal.
      Parameters:
      calendar - may be null.
      API:
      This public API is available in Java.
    • documents

      IDocumentService documents()
      Returns a service for managing documents that are attached to the case.

      Examples:

      Add a document to a case:
      IDocument document = ivy.case.documents().add(new Path("images/myImage.png")).write().withContentFrom(in.file);

      Get all documents attached to a case:
      List<IDocument> documents = ivy.case.documents().getAll();

      Returns:
      case document service
      API:
      This public API is available in Java.
    • current

      static ICase current()

      Gets the current case.

      Will return null if called out of scope. E.g. if no case is available in the current context

      Returns:
      current case or null if out of scope
      Since:
      9.1
      API:
      This public API is available in Java.
    • getDetailLink

      WebLink getDetailLink()
      Gets the detail link of this case.
      Returns:
      WebLink
      API:
      This public API is available in Java.