Помощь в учёбе, очень быстро...
Работаем вместе до победы

Решение задачи на ЭВМ

РефератПомощь в написанииУзнать стоимостьмоей работы

TtrsStateStopRule — класс, определяющий интерпретатор метаязыка, который подробно описан в главе 5.5 этой дипломной работы. TtrsStateStopRule позволяет описывать правила для состояния, при выполнении условий которых будет происходить остановка запроса в этом состоянии при маршрутизации. Правило остановки в состоянии состоит из одного или нескольких правил для конкретного справочника… Читать ещё >

Решение задачи на ЭВМ (реферат, курсовая, диплом, контрольная)

Структура классов модуля

Разработанный модуль настройки схем маршрутизации запросов состоит из трех отдельных элементов: ядро, интерпретатор метаязыка и графический интерфейс пользователя. Ядро делится на две части:

Программный интерфейс настройки схемы маршрутизации Маршрутизация запросов пользователям, обработка и отклонение запроса Интерпретатор метаязыка служит для реализации правил остановки в состояниях схемы маршрутизации. Эта часть отвечает за создание правил, их корректной записи в базу данных, а также проверку их выполнения для конкретного запроса.

Графический интерфейс пользователя является связующим звеном между администратором системы и программным интерфейсом настройки схемы маршрутизации. Именно с помощью пользовательского интерфейса производится настройка схемы и описания правил остановки в том числе.

Рассмотрим функции основных классов модуля подробнее.

TtrsAdmin — программный интерфейс настройки схемы маршрутизации. Одной из самых важных функций класса является загрузка всех сущностей схемы маршрутизации, а также вспомогательных сущностей в собственное хранилище данных. Вся информация загружается из базы данных и работа с ними происходит локально на компьютере пользователя. Такой подход был применён для оптимизации скорости работы с данными. Поиск конкретного объекта в локальном кэше занимает меньше времени, чем запрос к базе данных, так как с базой данных одновременно может работать большое количество пользователей. Загружать MySQL-сервер дополнительными запросами каждый раз при обновлении формы не имеет смысла. Функция загрузки сущностей выполняется всего единожды — при инициализации, в дальнейшем все операции по изменению сущностей дублируются: сначала происходит попытка записи в базу данных и, в случае успеха, в кэше также происходит обновление.

В этом классе содержатся все необходимые функции для получения и изменения данных всех основных и вспомогательных сущностей схемы маршрутизации запросов, а именно:

Физических таблиц Справочников Типов ролей Схем маршрутизации Бизнес-процессов Наборов полей Ролей Связей роли-пользователи Связей роли-наборы полей Состояний Переходов Для каждой из сущностей доступны 3 основные функции: создание, удаление, изменение имени, а также набор дополнительных функций для изменения собственных атрибутов сущности. Например, у роли кроме основных функций существует только операция смены её типа, а у состояния таких дополнительных функций намного больше: изменение роли состояния, изменение правила остановки, изменение перехода по истечению времени и установка лимита этого времени. Это зависит от сложности структуры конкретной сущности.

При совершении любой операции ядро проверяет возможность её выполнения. Модуль проверяет входные данные, и, в случае если выполнение операции приведёт к дублированию данных или потери связей между объектами, ядро выдаёт ошибку с поясняющим сообщением.

TtrsTicket — класс, описывающий структуру запроса. Этот класс содержит все атрибуты запроса и предоставляет функции маршрутизации и изменения запроса. Под маршрутизацией запроса подразумеваются следующие функции:

Переход запроса из одного состояния в другое в соответствии с настроенной схемой маршрутизации запроса Проверка выполнения правила остановки в состоянии Откат последнего совершённого перехода Назначение запроса пользователю Обработка запроса и запись изменений в базу данных Отклонение запроса Изменение запроса включает в себя следующие функции:

Создание запроса Удаление запроса Сохранение изменений в данных Отмена последних изменений в данных Добавить/удалить объект в запрос Добавить/удалить вложение в запрос При совершении любой операции ядро выполняет ряд проверок для того, чтобы в базе данных не образовалось утечки или противоречия данных.

В отличие от структуры TtrsAdmin в классе TtrsTicket нет локального кэша для хранения нескольких объектов и работа в конкретный момент времени ведётся исключительно с одним объектом — запросом, который загружается из базы данных. Все необходимые вспомогательные объекты, такие как: переходы, состояния, пользователи подгружаются по мере необходимости.

При совершении операции перехода запроса из одного состояния в другое ядро проверяет условие выполнения правила остановки запроса в этом состоянии. Для этого происходит создание объекта класса TtrsStateStopRule по экземпляру текста правила, который хранится в базе данных как атрибут состояния. Ядро заполняет структуру правила остановки значениями атрибутов объектов запроса. Затем интерпретатор, описанный в TtrsStateStopRule, выполняет логические операции правила и выдаёт однозначный результат необходимости остановки в данном состоянии — true или false. Далее речь пойдёт о структуре TtrsStateStopRule.

TtrsStateStopRule — класс, определяющий интерпретатор метаязыка, который подробно описан в главе 5.5 этой дипломной работы. TtrsStateStopRule позволяет описывать правила для состояния, при выполнении условий которых будет происходить остановка запроса в этом состоянии при маршрутизации. Правило остановки в состоянии состоит из одного или нескольких правил для конкретного справочника и бизнес-процесса. Такое правило состоит из условий, соединенных логическими операторами. Условие представляет собой операнд и наименование атрибута объекта со сравниваемым значением, если это предполагает операнд. Порядок расчёта действий при вычислении значения логического выражения определяется с помощью скобок и приоритета логических операторов.

Интерпретатор анализирует введённый текст правила и создаёт собственные структуры классов для каждого отдельного правила, в состав которого входит контейнер со всеми условиями, каждое из которых также является отдельным объектом. Значения параметров условия заполняются ядром, так как зависят от данных запроса. В том случае, если в запросе нет данных об атрибуте объекта, указанном в правиле, значение атрибута этого объекта загружается из базы данных и операция вычисляется с этим значением. Если правило выполняется, хотя бы для одного объекта запроса, в данном состоянии произойдёт остановка.

В классе содержится функция сохранения структуры правил в текстовое поле базы данных, а также воссоздание этой структуры по загруженному тексту. При создании нового правила остановки пользователь может некорректно составить текст правила. Каждой уникальной ошибке присвоен свой номер и поставлено в соответствие информирующее сообщение, для того чтобы пользователь знал, в чём именно он допустил ошибку.

Описание правил остановки в состояниях, как и вся остальная настройка схемы маршрутизации, выполняется посредством графического интерфейса пользователя. Детальное описание интерфейса приведено в следующем разделе.

Показать весь текст
Заполнить форму текущей работой