1.1. Модель данных

Рассмотрим диаграмму классов основных элементов подсистемы Workflow.

Рисунок 1.2. Диаграмма классов Workflow

Диаграмма классов Workflow

  • Design - объект, хранящий дизайн процесса.

  • Proc - исполняемый процесс. Атрибуты процесса:

    • design - ссылка на дизайн, по которому был создан данный процесс.

    • name - имя процесса, понятное пользователям. Имя задается на этапе дизайна, однако может быть задано и в экране редактирования процесса.

    • jbpmProcessKey - ключ процесса в исполняющем механизме jBPM. Формируется автоматически при развертывании дизайна процесса.

    • code - код процесса для обращения к нему программными средствами. По умолчанию равен jbpmProcessKey, однако может быть изменен в экране редактирования процесса.

    • messagesPack - имя пакета сообщений, в котором содержатся локализованные названия состояний, переходов, различных описаний и сообщений процесса. Данный пакет сообщений формируется автоматически на этапе развертывания дизайна процесса и хранится вместе с другими файлами процесса в соответствующем подкаталоге конфигурационного каталога приложения.

    • roles - список объектов типа ProcRole, определяющих роли участников процесса.

  • ProcRole - роль в процессе. Объекты данного типа создаются автоматически при развертывании дизайна процесса если он содержит состояния вида Назначение, то есть те, которые выдают задачи пользователям и останавливают выполнение процесса до принятия пользователем необходимых действий. Изначально объекты ProcRole не связываются ни с какими пользователями системы, однако в экране редактирования процесса для каждой роли можно назначить исполнителя по умолчанию.

  • DefaultProcActor - список исполнителей некоторой роли, задаваемый на уровне процесса.

  • Card - карточка процесса. Как правило, от класса Card наследуется некоторая сущность предметной области, которая тем самым приобретает возможность двигаться по процессу. Атрибуты карточки:

    • description - опциональное текстовое описание данного экземпляра карточки, позволяющее пользователю различать карточки без загрузки атрибутов конкретного типа, расширяющего Card. Например, если карточка отражает документ, то в поле description имеет смысл записать тип, номер и дату этого документа.

    • proc - ссылка на процесс.

    • roles - список объектов типа CardRole, определяющих исполнителей ролей процесса для данной карточки.

    • jbpmProcessId - идентификатор экземпляра процесса в механизме исполнения jBPM.

    • state - название текущего состояния процесса.

    • assignments - список объектов типа Assignment, созданных в данном экземпляре процесса.

    • attachments - список объектов типа CardAttachment, позволяющих привязывать к карточке загружаемые во время выполнения процесса файлы.

  • CardRole - сущность, определяющая исполнителей ролей процесса для данной карточки. Атрибуты CardRole:

    • card - карточка, для которой определяется исполнитель роли.

    • procRole - роль в процессе.

    • user - исполнитель роли (типа User - пользователь системы).

  • CardAttachment - вложение, предоставляет возможность ассоциировать с карточкой загружаемые файлы. Атрибуты (вместе с суперклассом Attachment):

    • card - карточка.

    • assignment - если файл загружен на этапе выполнения назначения, то этот атрибут содержит ссылку на соответствующий объект Assignment.

    • file - загруженный файл типа FileDescriptor.

    • name - название вложения.

    • comment - комментарий к вложению.

  • Assignment - назначение. Объекты данного типа создаются в системе при переходе процесса в состояние "назначение". В этом состоянии процесс останавливает выполнение и ожидает команды от пользователя или от автоматического механизма. При получении команды о завершении в назначении заполняются атрибуты finished, finishedByUser и outcome, и процесс переходит в следующее состояние. Для одной карточки и пользователя может существовать не более одного незавершенного назначения. Атрибуты назначения:

    • card - карточка.

    • user - пользователь системы, для которого выдано назначение.

    • proc (процесс) - тот же процесс, который в момент создания назначения установлен для карточки.

    • name - наименование назначения.

    • description - описание назначения.

    • jbpmProcessId - идентификатор экземпляра процесса jBPM, исполняемого по карточке в момент создания назначения.

    • dueDate - момент времени, до которого назначение должно быть выполнено.

    • finished - фактический момент времени завершения назначения. Равен null, пока назначение не завершено.

    • finishedByUser - пользователь, фактически завершивший назначение. Равен null, пока назначение не завершено.

    • outcome - наименование выхода из состояния назначения, которое выбрал пользователь. Например, в схеме бизнес-процесса может быть узел-назначение, который предписывает пользователю проверить факт исправления некоторого дефекта и выбрать один из двух путей дальнейшего следования процесса: "OK" или "Not OK". Тогда, если пользователь выбрал "OK", то в поле outcome назначения запишется эта строка, и наоборот.

    • attachments - список объектов типа CardAttchment, которые были созданы для этого назначения.