Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
en:rule:conditional_event_collaboration [2024-08-28 19:19] – [Notes] Anatoly Belaychuk | en:rule:conditional_event_collaboration [2024-08-28 20:56] (current) – [See also] Anatoly Belaychuk | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== Use conditional event to model collaboration ====== |
{{tag> | {{tag> | ||
- | |||
- | {{en: | ||
The message event creates a tight connection between processes: the sender process must know the internals of the receiver. | The message event creates a tight connection between processes: the sender process must know the internals of the receiver. | ||
Line 681: | Line 679: | ||
===== Notes ===== | ===== Notes ===== | ||
- | ===== Примечания ===== | + | There is no significant difference between two models as long as excactly one process issues invoices. |
+ | The event-message scheme may look preferable since it more clearly shows the collaboration mechanism. | ||
- | Пока счета выставляет один процесс, большой разницы между схемами с событием-сообщением и событием-условием нет. | + | The situation changes if that the company has different sales processes for different product lines (goods, services) or channels (retail, partner, online). |
- | Схема с событием-сообщением даже выглядит предпочтительнее, поскольку более наглядно показывает механизм взаимодействия между процессами. | + | In this case, the logic of the bank statement processing process becomes too complicated: |
+ | it will need a gateway to send a message to the process from which this specific invoice has come. | ||
+ | If a new variation of sales process emerges, the statement processing process should be modified. | ||
- | Ситуация меняется, | + | The conditional event eliminates this dependency. |
- | В этом случае логика процесса обработки выписки банка сильно усложнится: | + | Now the processes don't need to know anything about each other' |
- | в него придется добавить развилку, | + | |
- | При добавлении нового процесса продажи в процесс обработки выписки придется вносить изменения. | + | |
- | Событие-условие позволяет избавиться от этой зависимости. | + | * the client process (Order to pay) adds a record to the database table (Invoices) and waits until the value of the " |
- | Здесь процессам не требуется ничего не знать о внутреннем устройстве друг друга, достаточно интерфейса, | + | * the server process (Bank statement processing) searches the database table for the record to which the payment refers, and changes the status to " |
+ | * the client process awakens and continues working | ||
- | * процесс-клиент (От заказа до оплаты) добавляет запись в таблицу базу данных (Выставленные счета) и ждет, пока значение поля " | + | There may be unlimited number of client and server processes. |
- | * процесс-сервер (Обработка выписки банка), | + | |
- | * процесс-клиент выходит из ожидания и продолжает работу | + | |
- | Процессов-клиентов и процессов-серверов при этом может быть сколько угодно. | + | In the case of an executable process model, the event message will be automatically processed by the engine. |
- | + | If the process engine does not support a conditional event, it can be easily replaced with a combination of an exclusive gateway and a timer: | |
- | В случае исполняемой модели процесса событие-сообщение должно автоматически обрабатываться движком. | + | |
- | Если процессный движок не поддерживает событие-условие, его легко заменить комбинацией развилки " | + | |
<bpmnio type=" | <bpmnio type=" | ||
Line 707: | Line 703: | ||
< | < | ||
<process id=" | <process id=" | ||
- | < | + | < |
- | < | + | < |
< | < | ||
< | < | ||
Line 715: | Line 711: | ||
< | < | ||
</ | </ | ||
- | < | + | < |
<task id=" | <task id=" | ||
- | < | + | < |
</ | </ | ||
- | < | ||
< | < | ||
< | < | ||
- | < | + | |
+ | | ||
< | < | ||
</ | </ | ||
- | <exclusiveGateway | + | <sequenceFlow |
- | < | + | < |
- | < | + | < |
- | < | + | |
- | </ | + | |
- | < | + | |
- | < | + | |
- | < | + | |
</ | </ | ||
< | < | ||
Line 742: | Line 733: | ||
</ | </ | ||
</ | </ | ||
- | < | + | < |
- | < | + | < |
+ | < | ||
</ | </ | ||
< | < | ||
Line 749: | Line 741: | ||
< | < | ||
</ | </ | ||
- | < | + | < |
- | < | + | < |
- | </ | + | |
- | < | + | |
- | < | + | |
- | < | + | |
</ | </ | ||
< | < | ||
Line 762: | Line 750: | ||
< | < | ||
</ | </ | ||
- | </ | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | < | ||
</ | </ | ||
< | < | ||
< | < | ||
- | < | + | < |
+ | < | ||
+ | < | ||
< | < | ||
- | < | + | < |
</ | </ | ||
</ | </ | ||
- | < | + | < |
- | < | + | < |
- | < | + | < |
- | < | + | </ |
+ | < | ||
+ | < | ||
+ | < | ||
</ | </ | ||
</ | </ | ||
Line 788: | Line 773: | ||
</ | </ | ||
- | В случае неисполняемой модели событие-условие моделирует действия сотрудника, который периодически нажимает клавишу | + | In the case of a non-executable model, the conditional event models an employee periodically pressing the F5 key |
- | отображающей перечень выставленных счетов с их статусом. | + | on the automated system page displaying a list of issued invoices together with status. |
===== Exceptions ===== | ===== Exceptions ===== | ||
- | * Exceptions, | + | Collaboration via event message is acceptable |
===== See also ===== | ===== See also ===== | ||
- | * References to similar rules (optional) | + | * [[external_event]] |
+ | * [[event_gateway_warning]] | ||
+ | * [[collapsed_subprocess]] | ||
+ | * [[single_process]] | ||
===== Author(s) ===== | ===== Author(s) ===== | ||
- | Signature | + | --- // |