четверг, 18 февраля 2010 г.
Чтоб не забыть формулировку
(завтра раскрою:)
От теории к практике (пример реальной разработки)
- пользователь выбирает доступный узел графа, т.е. операцию, которую можно выполнить в данный момент;
- пользователь задаёт параметры выбранной операции;
- пользаватель инициирует исполнение операции;
Приведённая форма прорисовывается автоматически, на основании данных, внесённых в следующую достаточно простую физическую структуру:
Причём, обратите внимание, что в таблице OPERATION_GRAPH, присутствуют поля BEGIN_DATE и END_DATE, что позволяет менять набор операций системы с течением времени без перепрограммирования, а также возможность проводить операции для прошедших периодов.
среда, 17 февраля 2010 г.
Определения и модели
Операция (в данном контексте подразумевается "Тип операции") - любое законченное преобразование данных, предоставляющее "бизнес-полезный" результат, и вызываемое некоторым внешним событием (вызов из интерфейса, получение сообщения и т.д.).
Операции имеют иерархическую структуру и разделяются на две категории - листовая операция и контейнерная операция.
Листовая операция (ЛО) - операция, не включающая в себя других операций и порождающая набор данных, идентифицируемый уникальным номером (версии);
Контейнерная операция - операция, включающая в себя одну, или более подчинённых операций и не порождающая никаких версий данных, кроме как версий, порождённых подчинёнными ей операциями.
Версия (данных) - уникальный идентификатор (в рамках программной системы), идентифицирующий набор данных, порождённый в при проведении листовой операции.
Интервал версии - диапазон дат, для которого сформирован набор данных, порождённый соответствующей листовой операцией.
Набор объектов версии - набор объектов, относительно которых проводилась соответствующая листовая операция (например, это может быть набор договоров, относительно которых проводилась операция и т.п.)
Операционный граф - граф зависимостей типов листовых операций:
– узел графа соответствует уникальному типу листовой операции;
– направленная связь из одного узла в другой - означает связь по данным между листовыми операциями.
Фактический операционный граф - граф зависимостей между фактически проведёнными операциями, или, что эквивалентно, между версиями данных; строится на основе операционного графа и функции определения зависимости между листовыми операциями.
Функция определения зависимости между фактически проведёнными ЛО - в качестве входных параметров принимает номера двух ЛО и на основании:
- типов соответствующих листовых операций;
- операционного графа;
- интервалов версий данных, сформированных ЛО;
- наборов объектов версий;
- определяет наличие, или отсутствие связи между двумя заданными операциями.
ER-модель операций:
Сценарий проведения операции: