Исходный код вики Машина состояний

Версия 4.1 от Alexandr Fokin на 2024/06/12 15:26

Скрыть последних авторов
Alexandr Fokin 3.3 1
Alexandr Fokin 2.1 2
Alexandr Fokin 3.6 3 |(% style="width:183px" %) |(% style="width:1302px" %)Конечный набор состояний переходов между ними.
Alexandr Fokin 4.1 4 |(% style="width:183px" %)Отличие от понятия [[Процессы>>doc:Архитектура и модели.Модели.Процес.WebHome]]|(% style="width:1302px" %)Сама по себе модель машины состояний не затрагивает следующие темы.(((
Alexandr Fokin 3.6 5 * Постоянное (persistance) сохранение контекста и статуса экземпляра.
6 * Движок обработки процессов (хранение, выполнение, распределение нагрузки).
7 )))
8 |(% style="width:183px" %) |(% style="width:1302px" %)
9 |(% style="width:183px" %) |(% style="width:1302px" %)Система обработки бизнес процессов на основе машины состояний.
10 |(% style="width:183px" %)Основные понятия:|(% style="width:1302px" %)(((
Alexandr Fokin 3.3 11 |**Ключ процесса**
12 Уникальной идентификатор экземпляра процесса.
Alexandr Fokin 2.1 13 Обычно служит для чтения/записи persist данных контекста.
Alexandr Fokin 3.3 14 |**Инициатор**
Alexandr Fokin 3.1 15 Событие, служащее источником запуска одной сессии обработки.
Alexandr Fokin 2.1 16 Обычно ему соответсвует набор параметров, которые необходимо для запуска сессии обработки (как минимум это ключ процесса для работы с контекстом).
Alexandr Fokin 3.3 17 Примеры инициаторов: нажатие кнопки на UI, обращение к web api, получение сообщения из брокера.
18 |**Сессия обработки**
Alexandr Fokin 2.1 19 Понятие, обозначающее один запуск машины состояния с контретным набором параметров.
20 При этом в рамках одной сессии могут быть пройдены не все шаги обработки,
21 в следствии длительности и многоэтапности процесса, или же в следсвии возникновения ошибки на одном из шагов.
Alexandr Fokin 3.3 22 |(((
Alexandr Fokin 2.1 23 **Контекст**
24 Класс содержащий данные о текущем экземпляре процесса, в том числе содержит информацию о статусе обработки (инфомация о шаге).
25 Можно выделить 2 компонента: persist и runtime.
26
27 Persist - группа данных, хранящихся в постоянном хранилище, с использованием ключа процесса.
Alexandr Fokin 3.1 28 Эти данные сохраняются между сессиями обработки. Также их можно просматривать и изменять(не во время сессии обработки) напрямую в хранилище.
Alexandr Fokin 2.1 29 Обычно при старте сессии обработки они загружаеются из хранилища, а при ее окончании сохраняются.
30
Alexandr Fokin 3.1 31 Runtime - данные, которые вычисляюся либо при старте сессии обработки, либо в рамках шагов обработки.
Alexandr Fokin 2.1 32 Эти данные не сохраняются между сессиями обработки.
Alexandr Fokin 3.1 33 Для каждого шага должно гарантироваться, что необходимые для его работы Runtime данные были предварительно загружены или вычислены.
Alexandr Fokin 3.3 34 )))
35 |**Шаг (состояние)**
Alexandr Fokin 2.1 36 На вход принимает контекст.
37 В зависимости от состояния контекста может произвести некоторое действие, может менять контекст.
Alexandr Fokin 3.1 38 Принимает решение о том, в какое следующее состояние необходимо перейти (какой шаг будет следующим).
Alexandr Fokin 3.3 39 |
40 )))
Alexandr Fokin 4.1 41 |(% style="width:183px" %) |(% style="width:1302px" %)TODO: подумать над пересмотром структуры материалов темы в связи с вынесением темы процесса в отдельный раздел ([[Процессы>>doc:Архитектура и модели.Модели.Процес.WebHome]]).
Alexandr Fokin 2.1 42
Alexandr Fokin 3.3 43 ----
Alexandr Fokin 2.1 44
Alexandr Fokin 3.3 45 ==== Внутренние ссылки: ====
Alexandr Fokin 2.1 46
Alexandr Fokin 3.3 47 ====== Дочерние страницы: ======
Alexandr Fokin 2.1 48
Alexandr Fokin 3.3 49 {{children/}}
Alexandr Fokin 2.1 50
Alexandr Fokin 3.3 51 ====== Обратные ссылки: ======
52
53 {{velocity}}
54 #set ($links = $doc.getBacklinks())
55 #if ($links.size() > 0)
56 #foreach ($docname in $links)
57 #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument())
58 * [[$escapetool.xml($rdoc.fullName)]]
59 #end
60 #else
61 No back links for this page!
62 #end
63 {{/velocity}}
64
65 ----
66
67