Разработка:storages/orders

Материал из DOF
Перейти к: навигация, поиск

Приказы - единоличные, законченные, единовременные распоряжения пользователей системы, на выполнение значимых действий с данными в системе. Реализуют протоколирование и исполнение как обычных приказов (приказ о зачислении, приказ о переводе), так и подразумеваемые приказы (выставление оценки, изменение статуса объекты). Не обязательно все действия в системе должны выполняться через приказы, однако нужно стремится реализовать как приказы все действия, которые необходимо протоколировать и для работы с которыми в будущем предполагается использовать цифровую подпись. При последующей реализации цифровой подписи, ею можно будет заверять только действия, оформленные в качестве приказов.

С программной точки зрения работа с приказами построена следующим образом:

  • Плагин, "желающий" реализовать собственный приказ наследует родительский класс приказа, объявленный в справочнике "приказ" (это НЕ init). Класс содержит методы для наполнения приказа данными, исполнения приказа, получение из БД данных о ранее исполненном приказе.
  • Этот плагин должен реализовать метод order($code,$id=null), который возвращает объект нового или существующего приказа.
  • В момент исполнения приказа, объект приказа должен запротоколировать все данные приказа любым способом (стандартный, но не обязательный, способ - запись сериализованного объекта вместе с остальной информацией о приказе) и выполнить действия, предполагаемые приказом.
  • Справочник "приказы" содержит метод, для получения записанного в БД приказа, при этом на основании информации из БД инициализируется соотествующий объект, который загружает собственные данные любым способом.


Данные приказа представляют собой сложно-структурированный объект, элементами которого могут быть другие объекты и массивы. После исполнения приказа эти данные могут протоколироваться как в сериализованном виде, так и в реляционном, в виде составных частей записей в БД. Следует стремится к тому, чтобы формат этого объекта соответствовал формату входных данных для шаблона, отображающего приказ в виде документа ODF.

Таблица в базе данных

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

Подробный формат полей в таблице:

  • plugintype - тип плагина, в котором реализован приказ
  • plugincode - код плагина, в котором реализован приказ
  • code - код типа приказа (уникален внутри одного плагина)
  • departmentid - id отдела, внутри которого издан приказ
  • ownerid - id персоны, "подписавшей" приказ
  • date - дата исполнения приказа
  • status - статус приказа
  • sdata - сериализованные данные приказа (если нужны)

Дополнительные методы:

  • Получить объект ранее запротоколированного приказа по id