1.1. Data Model

Below is the classes diagram of the main Workflow subsystem elements.

Figure 1.2. Chart of Workflow Classes

Chart of Workflow Classes

  • Design - the object that stores the process design.

  • Proc - the executable process. Process attributes:

    • design - link to the design that was used to create the process.

    • name - the meaningful process name. The name is specified at the design stage. However, it can be set in the process editor screen as well.

    • jbpmProcessKey - the process key in the jBPM execution engine. It is generated automatically when deploying the process design.

    • code - the process code that can be referenced by software tools. Defaults to jbpmProcessKey, but can be changed in the process editor screen.

    • messagesPack - the name of the messages pack that contains localized names of states and transitions, various descriptions and process messages. This package is generated automatically at the process design deployment stage and is stored along with other process files in the appropriate subdirectory of the application configuration directory.

    • roles - list of ProcRole type objects that define the roles of process participants.

  • ProcRole - a process role. Objects of this type are created automatically when the process design is deployed, if it contains Assignment states, which assign tasks to users and halt the execution of the process until the user takes required actions. Initially, ProcRole objects are not connected to any system users. However, you can assign a default holder for each role in the process editor screen.

  • DefaultProcActor - list of holders of a certain role; this list is defined at the process level.

  • Card - the process card. Generally, a particular domain entity is inherited from the Card class to acquire the ability to move through the process. Card attributes:

    • description - an optional text description of a given card instance that allows the user to distinguish between cards without loading attributes of a particular type that extends the Card. For example, if the card represents a document, then it may be useful to enter the type, number, and date of this document in the description field.

    • proc - the link to a process.

    • roles - the list of CardRole type objects that define the process role holders for a given card.

    • jbpmProcessId - the identifier of the process instance in the jBPM execution engine.

    • state - the name of the current process state.

    • assignments - the list of Assignment objects created in this process instance.

    • attachments - the list of CardAttachment type objects that enable associating the files downloaded during process execution with the card.

  • CardRole - the entity that defines the process role holders for a given card. CardRole attributes:

    • card - the card, for which the role holder is defined.

    • procRole - the process role.

    • user - the role holder of the User type (a system user).

  • CardAttachment - an attachment that enables associating downloaded files with the card. Attributes (together with the Attachment superclass):

    • card - the card.

    • assignment - if the file is uploaded during the assignment stage, this attribute contains a link to the corresponding Assignment object.

    • file - the uploaded file of the FileDescriptor type.

    • name - the attachment name.

    • comment - the comment on the attachment.

  • Assignment - the assignment. Object of this type are created in the system when the process transitions to the Assignment state. In this state, the process pauses and waits for a command from the user or the system. When a finish command is received, the finished, finishedByUser and outcome attributes are set for the assignment, and the process transitions to its next state. For one card and user, only one pending assignment can exist. Assignment attributes include:

    • card - the card.

    • user - the system user the assignment has been issued for.

    • proc - the same process as the one set for the card at the moment of assignment creation.

    • name - the assignment name.

    • description - the assignment description.

    • jbpmProcessId - the identifier of a jBPM process instance corresponding to the card executed at the time of assignment creation.

    • dueDate - the assignment completion deadline.

    • finished - the actual time when the assignment has been completed. Is null until the assignment is completed.

    • finishedByUser - the user who has actually completed the assignment. Is null until the assignment is completed.

    • outcome - the name of the assignment state outcome that the user has selected. For example, the business process schema may contain an assignment node that asks the user to check whether a particular bug has been addressed, and to select one of the two options to continue the process: "OK" or "Not OK". If the user chooses "OK", then this string is written to the outcome field of the assignment, and vice versa.

    • attachments - the list of CardAttchment objects that were created for this assignment.