-
Notifications
You must be signed in to change notification settings - Fork 1
Документооборот
Документооборот - это последовательность совершаемых над объектом действий, приводящих к возникновению события (каскада событий), способных повлиять на состояние объекта.
- Последовательность переходов из одного состояния объекта в другое называется «жизненным циклом».
Напоминаем, что согласно архитектуре единицей хранения данных в системе является не запись в таблице, а объект. Понятие таблица заменено на сущность.
- Характеризует физический или логический смысл объекта.
Сущность задаётся разработчиком системы и в отличие от других характеристик объекта не может быть изменена пользователем системы.
В платформе определены следующие сущности:
-
object
Объект; -
document
Документ; -
reference
Справочник; -
address
Адрес; -
client
Клиент; -
device
Устройство; -
job
Задание; -
message
Сообщение; -
agent
Агент; -
calendar
Календарь; -
category
Категория; -
currency
Валюта; -
measure
Мера; -
model
Модель; -
program
Программа; -
project
Проект; -
property
Свойство; -
scheduler
Планировщик; -
vendor
Производитель; -
version
Версия;
-
Это условное разделение объекта по тем или иным признакам в рамках заданной сущности.
-
Класс объекта характеризует сам объект и в отличие от сущности может быть создан пользователем системы самостоятельно.
-
Классы объекта создаются в виде дерева, т.е. имеют иерархическую структуру. Для каждого класса объекта настраиваются своя собственная схема документооборота, т.е. формируется список, в каких именно состояниях может находиться объект. Для каждого состояния создается список доступных действий, для каждого действия создается список событий и настраивается таблица переходов из одного состояния в другое т.е. «жизненный цикл».
-
Класс объекта может быть абстрактным. Создать объект с абстрактным классом невозможно.
-
object
Объект (абстрактный);-
document
Документ (абстрактный);-
address
Адрес; -
client
Клиент; -
device
Устройство; -
job
Задание; -
message
Сообщение (абстрактный);-
inbox
Входящее; -
outbox
Исходящее;
-
-
-
reference
Справочник (абстрактный);-
agent
Агент; -
calendar
Календарь; -
category
Категория; -
currency
Валюта; -
measure
Мера; -
model
Модель; -
program
Программа; -
project
Проект; -
property
Свойство; -
scheduler
Планировщик; -
vendor
Производитель; -
version
Версия;
-
-
-
Каждый объект в системе находиться в том или ином состоянии.
-
Состояние объекта привязывается к классу объекта.
Список состояний для каждого класса объектов индивидуален и может быть настроен пользователем по своему собственному усмотрению.
В системе есть четыре типа состояния объекта:
-
created
Создан; -
enabled
Включен; -
disabled
Отключен; -
deleted
Удалён.
- Это промежуточное звено в цепи документооборота системы.
Каждому из типов состояния должно соответствовать как минимум одно состояние объекта из чего следует, что каждый объект может находиться как минимум в четырех состояниях. Типы состояний объекта недоступны для изменения пользователю системы, но на базе этих типов пользователь может создать сколько угодно собственных состояний объекта. Первоначальное состояние любого нового объекта в системе это – «Создан». Для каждого состояния объекта задается определенный список действий. Переход из одного состояния объекта в другое происходить только при совершении над ним определенного действия.
- Действие, совершаемое над объектом также, как и состояния объекта задается для каждого класса объекта и формируется из заданного разработчиком системы списка.
На основе заданных действий, путем добавления новых или переопределения уже имеющихся, для каждого класса, пользователь системы может сформировать свой собственный список методов и событий.
- Это визуальная часть в цепи документооборота системы.
Метод создается и вызывается как с учётом состояния так и без учёта состояния объекта. Так как возможность вызова метода меняется в зависимости от состояния объекта метод приобретает динамический характер. Более подробно на странице Динамический метод.
- Это реакция на совершаемое над объектом действие вызванное при помощи метода.
К каждому событию объекта привязывается написанные на языке PL/pgSQL функции. При возникновении события ядро системы начинает поочередно выполнять код в привязанных к событию функциях (вызывается каскад событий). Выполняемый код может быть абсолютно любым, и иметь разную смысловую нагрузку будь то проверка объекта на переход из одного состояния в другое или информирование пользователя о неправильно заполненных полях.
Событие - это ключевой элемент так как именно в функциях привязанных к событиям находится код отвечающий за бизнес логику проекта построенного на базе системы Апостол.