Дополнительная логика: нумерация, состояния, зависимости, конфликты, Диаграмма классов - Разработка модуля для хранения и управления документами в электронном виде
Дополнительная логика была реализована в базовом классе документа.
Для нумерации к модели документа было добавлено дополнительное поле number и создан статический метод numbering. При вызове его из конкретного класса происходит создание методов доступа к атрибуту number, а также определение функции generate_number, которая будет вызываться после сохранения документа. Функция работает следующим образом:
- 1) находит документ типа своего класса с максимальным номером; 2) инкрементирует это значение; 3) присваивает полученное значение атрибуту number, если он еще не инициализирован.
Нумерация дочерних элементов внутри одного родительского производится подобным образом, однако максимальный номер в данном случае ищется только среди номеров всех дочерних документов.
Для реализации механизма состояний в модель документа введен атрибут state и были определены его возможные значения ('DRAFT' -- черновик, 'ACTIVE' -- активный, 'DELETED' -- удаленный). При создании документа вызывается метод set_default_state, устанавливающий статус 'DRAFT'. Также реализованы методы для активации (activate!) и деактивации (deactivate!) документа. В них заложена логика переходов одного состояния документа в другое.
Конфликты и зависимости реализованы в виде опций depends_on и conflicts_with, определяемых в классах сущностей, содержащих документы. В опции передаются имена классов документов. В случае, если у объекта-хозяина присутствуют указанные типы документов, они добавляются в специальные списки -- атрибуты класса:
- 1) dependencies -- имена классов, от которых зависит текущий класс; 2) conflicts -- имена классов, которые конфликтуют с текущим классом.
У каждого документа есть метод savable?, определяющий, может ли он быть сохранен. Метод является ключевым в логике работы документа, в нем проверяются зависимости, конфликты, состояние документа. Документ может быть признан сохраняемым только после успешного прохождения всех проверок.
Описанную выше логику иллюстрирует UML-диаграмма активации документа, представленная на рисунке.
Диаграмма классов
Ниже представлена диаграмма классов в разработанном модуле.
Конкретные классы названы в диаграмме именами конкретных документов (паспорт, ИНН, трудовой договор).
Сущность, содержащая документы, названа Employee (Сотрудник).
Похожие статьи
-
Для реализации вложенных файлов было принято решение использовать сторонний гем paperclip (https://github. com/thoughtbot/paperclip). Он позволяет...
-
Сериализация полей - Разработка модуля для хранения и управления документами в электронном виде
Документ может содержать произвольное количество полей различных типов (номер, имя, фамилия, отчество и т. д.). Программист, реализующий наследников...
-
Среда Rails поддерживает работу с большинством современных баз данных, таких как MySQL, SQLite, PostgreSQL. Для этого используются различные адаптеры,...
-
Анализ требований к модулю электронных документов Сущность документа Разрабатываемый модуль должен вводить в приложение новую сущность -- документ,...
-
Документы должны иметь различные типы, которые определяют логику их поведения. Должна быть возможность создать новый тип документа и определить его...
-
Разработка модели модуля с учетом архитектурных решений Полиморфные связи Документ может относиться к объектам различного типа, поэтому разумно...
-
Модуль должен поддерживать механизм состояний документов. На стадии разработки технического задания были выделены следующие состояния: - Черновик...
-
В настоящее время существует множество систем управления информационными ресурсами предприятия (ECM - Enterprise content management ), предназначенных...
-
Вид - Разработка модуля для хранения и управления документами в электронном виде
Представления в Ruby on Rails реализованы в виде Erb-шаблонов -- html-файлов со вставками кода на языке Ruby. Дополнительная логика, внедряемая в шаблон,...
-
Введение - Разработка модуля для хранения и управления документами в электронном виде
Актуальность Во многих современных системах автоматизированного управления бизнес-процессами предприятий возникает необходимость в организации и...
-
Контроллер является связующим звеном между пользователем, представлением и моделью. Он получает запросы от пользователя, взаимодействует с моделью и...
-
Веб-фреймворк Ruby on Rails разработан на языке Ruby и является вторым по популярности по версии http://hotframeworks. com. Основными чертами фреймворка...
-
Обзор паттерна MVC Впервые описал схему Model-view-controller (Модель-вид-контроллер) Трюгве Реенскауг, норвежский ученый из университета в Осло,...
-
Flagship Docs представляет собой популярную систему управления документами, разработанную компанией RPI Web Tech Group. Данная система решает широкий...
-
Цель Работы - использовать принципы архитектуры "Документ-Представление" для выборки и сохранения данных в файлах, а также взаимодействия элементов меню,...
-
Сравнение Git и SVN - Разработка модуля для хранения и управления документами в электронном виде
Аргументы в пользу Subversion: 1) централизованность системы позволяет не хранить на компьютере весь репозиторий, а лишь срез репозитория -- конкретную...
-
Git - Разработка модуля для хранения и управления документами в электронном виде
Git -- распределенная система контроля версий, разработанная создателем ядра Linux Линусом Торвальдсом в 2005 году. Система быстро набрала популярность и...
-
Subversion - Разработка модуля для хранения и управления документами в электронном виде
Сайт: http://subversion. apache. org/ Subversion -- централизованная система контроля версий, распространяемая под свободной лицензией (Apache License)....
-
На рис. 4 представлена схема работы Rails-приложения. Рассмотрим ее подробнее: 1) клиент из браузера посылает запрос на сервер; 2) запрос обрабатывается...
-
Еще одна причина выбрать git в качестве системы контроля версий -- сильное и профессиональное сообщество, возникшее на сайте GitHub (https://github....
-
Тестирование - Разработка модуля для хранения и управления документами в электронном виде
С запуска нового проекта на Rails среда создает для него всю необходимую тестовую инфраструктуру. Фреймворк поддерживает следующие виды тестов: 1)...
-
Цель Работы - изучить одну из базовых концепций ООП, наследование классов в С++, заключающуюся в построении цепочек классов, связанных иерархически,...
-
Диаграмма классов, Разработка пользовательского интерфейса - Основы технологии программирования
На основе построенных диаграмм взаимодействия и переходов состояний можно построить диаграмму классов информационной системы. Рис. 5 Диаграмма классов...
-
База данных SQLite - Разработка мобильного приложения расчета и учета оплаты коммунальных услуг
Платформа Android предоставляет функции управления базой данных, которые позволяют сохранять сложные коллекции данных. Android также поставляется с...
-
Общие сведения о системах контроля версий При разработке программного обеспечения необходимо иметь подробную историю изменений в исходных кодах...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Стадии разработки ПО - Объектно-ориентированный подход и диаграммы классов в UML
В [4] так определяются этапы объектно-ориентированного подхода к разработке ПО: Объектно-ориентированный анализ (analysis) - способ анализа, изучающий...
-
Фактически это означает, что в СТИ множество возможных состояний объекта рассматривается не как совокупность несвязанных друг с другом состояний, как в...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
Основные понятия и определения Прежде чем приступить к обсуждению вопросов оптимизации, введем ряд определений и рассмотрим основные понятия. Оптимизация...
-
Диаграмма вариантов использования - Разработка модуля маршрутизации с использованием Graph Hopper
Перейдем к определению функций, которые должна выполнять разрабатываемая информационная система. Для документирования функциональных требований мы будем...
-
Цель Работы - изучить принципы работы элементов управления Progress и Slider. Получить навыки по самостоятельному созданию модальных диалоговых окон. -...
-
Блок модуля последовательного управления SCM (Sequential Control Module) представляет собой модуль-контейнер для последовательности блоков шагов STEP и...
-
Концепция построения программы Список всех классов приведен на рисунке 3.1. Рисунок 3.1 - Диаграмма классов программы В качестве главного класса...
-
Понятие Data Mining Средства Data Mining включают в себя очень широкий класс различных технологий и инструментов. Средства Data Mining на рынке...
-
Для того, чтобы строить диаграммы в соответствии с рисунком 2.7, необходимо реализовать алгоритм соединения двух объектов линией. Для отображения линии...
-
Реализация клиентской части приложения На языке JavaScript, в соответствии с диаграммой классов, представленной в приложении Б, были разработаны объекты...
-
Атрибут - Объектно-ориентированный подход и диаграммы классов в UML
Атрибут (attribute) - это инкапсулируемый элемент данных класса, т. е. элемент данных, который содержится в объекте, принадлежащем описываемому классу. У...
-
Каждая диаграмма состояний в UML описывает все возможные состояния одного экземпляра определенного класса и возможные последовательности его переходов из...
-
Проектирование визуальных конструкций Вторая глава описывает процесс трансформации текстового языка JAPE в визуальный язык, который позволит описывать...
Дополнительная логика: нумерация, состояния, зависимости, конфликты, Диаграмма классов - Разработка модуля для хранения и управления документами в электронном виде