Разработка:storages/orders
Приказы - единоличные, законченные, единовременные распоряжения пользователей системы, на выполнение значимых действий с данными в системе. Реализуют протоколирование и исполнение как обычных приказов (приказ о зачислении, приказ о переводе), так и подразумеваемые приказы (выставление оценки, изменение статуса объекты). Не обязательно все действия в системе должны выполняться через приказы, однако нужно стремится реализовать как приказы все действия, которые необходимо протоколировать и для работы с которыми в будущем предполагается использовать цифровую подпись. При последующей реализации цифровой подписи, ею можно будет заверять только действия, оформленные в качестве приказов.
С программной точки зрения работа с приказами построена следующим образом:
- Плагин, "желающий" реализовать собственный приказ наследует родительский класс приказа, объявленный в справочнике "приказ" (это НЕ init). Класс содержит методы для наполнения приказа данными, исполнения приказа, получение из БД данных о ранее исполненном приказе.
- Этот плагин должен реализовать метод order($code,$id=null), который возвращает объект нового или существующего приказа.
- В момент исполнения приказа, объект приказа должен запротоколировать все данные приказа любым способом (стандартный, но не обязательный, способ - запись сериализованного объекта вместе с остальной информацией о приказе) и выполнить действия, предполагаемые приказом.
- Справочник "приказы" содержит метод, для получения записанного в БД приказа, при этом на основании информации из БД инициализируется соотествующий объект, который загружает собственные данные любым способом.
Данные приказа представляют собой сложно-структурированный объект, элементами которого могут быть другие объекты и массивы. После исполнения приказа эти данные могут протоколироваться как в сериализованном виде, так и в реляционном, в виде составных частей записей в БД. Следует стремится к тому, чтобы формат этого объекта соответствовал формату входных данных для шаблона, отображающего приказ в виде документа ODF.
Таблица в базе данных
orders - список зарегистрированных и исполненных приказов, с информацией о плагине, реализующем объект приказа, исполнителе, дате исполнения, специальном поле для сериализованного объекта приказа.
Подробный формат полей в таблице:
- plugintype - тип плагина, в котором реализован приказ
- plugincode - код плагина, в котором реализован приказ
- code - код типа приказа (уникален внутри одного плагина)
- departmentid - id отдела, внутри которого издан приказ
- ownerid - id персоны, "подписавшей" приказ
- date - дата исполнения приказа
- status - статус приказа
- sdata - сериализованные данные приказа (если нужны)
Дополнительные методы:
- Получить объект ранее запротоколированного приказа по id