Изменения документа Выполнение процесса

Редактировал(а) Alexandr Fokin 2024/06/12 15:27

От версии < 1.13 >
отредактировано Alexandr Fokin
на 2024/06/12 15:26
К версии 1.1 >
отредактировано Alexandr Fokin
на 2024/01/11 13:25
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,1 @@
1 -xwiki:Архитектура и модели.Модели.Процес.WebHome
1 лгоритмы.Процессы.WebHome
Содержимое
... ... @@ -1,4 +2,3 @@
1 -|(% style="width:131px" %) |(% style="width:1307px" %)[[Блокировки>>doc:Архитектура и модели.Блокировки.WebHome]]
2 2  |(% style="width:131px" %)Типы этапов|(% style="width:1307px" %)(((
3 3  |(% style="width:204px" %)Автоматическая обработка|(% style="width:1084px" %)
4 4  |(% style="width:204px" %)Ожидание события|(% style="width:1084px" %)Сообщение от внешней системы.
... ... @@ -8,17 +8,16 @@
8 8  )))
9 9  |(% style="width:131px" %)Консистентность|(% style="width:1307px" %)(((
10 10  | |При обработке процесса важно гарантировать, что один и тот-же экземпляр процесса в один момент времени обрабатывается одним обработчиком.
11 -| |Гарантировать, что обработчик при обработке содержит у себя актуальное состояние процесса, и никто другой не модифицирует его до окончания работы обработчика (если не предполагаем возможность оптимистичной блокировки с retry).
10 +| |Обработчик при обработке содержит у себя актуальное состояние процесса.
12 12  | |(((
13 -Гарантировать, что обработчик перед внесением изменений убедился, что процесс находится на нужном шаге.
12 +Обработчик перед внесением изменений убедился, что процесс находится на нужном шаге (если это может не соответствовать).
14 14  
15 15  Ситуация 1.
16 -Нам поступило сообщение от внешней системы, по которому мы должны продолжить некоторый экземпляр процесса. Мы берем это экземпляр и перед обработкой проверяем его статус. Если вдруг обнаружилось, что статус некорректный, то это обозначает что возникла ошибка.
17 -Например это может быть вызвано задвоением при отправки сообщений от внешней системы ([[Dual write problem>>doc:Архитектура и модели.Группа\. Распределенные системы.Распределенные системы\. Консистентность.Dual write problem.WebHome]]), если при взаимодействии мы не используем подход с уникальной идентификацией сообщений. Ранее приходил первый экземпляр этого сообщения и процесс уже продолжил свое выполнение далее, но вот поступил второй экземпляр того-же сообщения, и мы фиксируем что процесс не находится в нужном состоянии для его обработки. При этом у нас есть возможность реализовать это таким образом, что мы не повредим консистентность процесса.
18 -Момент с уникальной идентификацией заявок, также относиться и к инициализации процесса на основании события.
15 +Нам поступило сообщение от внешней системы, по которому мы должный продолжить некоторый экземпляр процесса. Мы берем это экземпляр и перед обработкой проверяем его статус. Если вдруг обнаружилось, что статус некорректный, то это обозначает что возникла ошибка.
16 +Например это может быть вызвано задвоением при отправки сообщений от внешней системы, если при взаимодействии мы не используем подход с уникальной идентификацией сообщений. Ранее приходило первый экземпляр этого сообщения и процесс уже продолжил свое выполнение далее, но вот поступил второй экземпляр того-же сообщения, и мы фиксируем что процесс не находится в нужном состоянии для его обработки. При у нас есть возможность реализовать это таким образом, что мы не повредим консистентность процесса.
19 19  
20 20  Ситуация 2.
21 -Два пользователя открыли форму ручного ввода данных для процесса. Первый пользователь указал данные и продолжил процесс. Второй пользователь пытается проделать то-же самое, но получает ошибку о том, что его форма устарела и кто-то другой внес изменений, на текущем этапе невозможно выполнить данный ручной ввод
22 -(может быть обнаружено либо по RowVersion, либо по статусу процесса).
19 +Два пользователя открыли форму ручного ввода данных для процесса. Первый пользователь указал данные и продолжил процесс. Второй пользователь пытается проделать то-же самое, но получает ошибку о том, что его форма устарела и кто-то другой внес изменений, на текущем этапе невозможно выполнить данный ручной ввод.
23 23  )))
24 24  )))
22 +|(% style="width:131px" %) |(% style="width:1307px" %)