====== В качестве альтернативы прикрепленному обработчику можно использовать подпроцесс и контрольный поток управления ======
{{tag>подпроцесс событие прикрепленный_обработчик событие-останов}}
Для моделирования гибкой логики обработки событий используйте подпроцесс, содержащий основной и контрольный потоки управления.
===== ✔ Как надо =====
Предположим, вам необходимо смоделировать ожидание поступления платежа от клиента с одновременным контролем срока оплаты и, в случае просрочки, выяснением причин.
Для этого выполните следующие шаги:
- Поместите задачу "Получить оплату" в подпроцесс.
- Начните подпроцесс с параллельной развилки, из которой исходят две ветви, "рабочая" и "контрольная".
- Разместите задачу "Получить оплату" на рабочей ветви.
- Разместите таймер на контрольной ветви.
- Завершите обе ветви событием-остановом.
Flow_0c37d4z
Flow_0c37d4z
Flow_05uwose
Flow_1yoh8c2
Flow_05uwose
Flow_0xinlw8
Flow_0tjh6sh
Flow_0vj1spf
Flow_1yoh8c2
Flow_1fpmuu7
Flow_0tjh6sh
Flow_0xinlw8
Flow_0vj1spf
Flow_0v7giyt
Flow_0v7giyt
Flow_0xssdyb
Flow_1fpmuu7
Flow_0xssdyb
===== ✘ Как НЕ надо =====
Прерывающий прикрепленный обработчик не даст возможности выяснять у клиента причину задержки, продолжая при этом надеяться на поступление платежа:
Flow_1mqvexf
Flow_0b5yo8b
Flow_1mqvexf
Flow_0b5yo8b
Flow_0xmx632
Flow_0xmx632
Непрерывающий обработчик выглядит более подходящим, но он не даст возможности установить таймер на новый срок оплаты:
Flow_1mqvexf
Flow_0b5yo8b
Flow_1mqvexf
Flow_0b5yo8b
Flow_1fkn8r9
Flow_1fkn8r9
Flow_0gsynar
Flow_0gsynar
Flow_0jzxjdu
Flow_16a0qq5
Flow_0jzxjdu
Flow_16a0qq5
===== Примечания =====
- Прикрепленный обработчик разрывает логику подпроцесса: часть логики оказывается внутри подпроцесса, часть - снаружи. Рассматриваемая альтернативная техника лишена этого недостатка.
- Как правило, предпочтительно [[ru:rule:collapsed_subprocess | изображать подпроцесс в свернутом виде ]], чтобы абстрагироваться от его внутреннего устройства, но в данном случае есть смысл показать подпроцесс развернутым, чтобы прояснить логику процесса.
- Как правило, [[ru:rule:explicit_parallel_split| из действия или события не должно выходить несколько потоков управления ]], но в данном случае допустимо изобразить основную и контрольную ветви выходящими непосредственно из стартового события:
Flow_1qbujp7
Flow_1v8e8eg
Flow_1qbujp7
Flow_0xinlw8
Flow_0tjh6sh
Flow_0vj1spf
Flow_1fpmuu7
Flow_1v8e8eg
Flow_0tjh6sh
Flow_0xinlw8
Flow_0vj1spf
Flow_0v7giyt
Flow_0v7giyt
Flow_0xssdyb
Flow_1fpmuu7
Flow_0xssdyb
===== Смотри также =====
* [[ru:rule:event_gateway_warning]]
===== Автор(ы) =====
--- //[[user:bell|Anatoly Belaychuk]] 2024-01-08 18:53//