Пока счета выставляет один процесс, большой разницы между схемами с событием-сообщением и событием-условием нет.
Схема с событием-сообщением даже выглядит предпочтительнее, поскольку более наглядно показывает механизм взаимодействия между процессами.
Ситуация меняется, если принять реалистичное допущение, что у компании несколько процессов продажи: товаров, услуг, розничная, партнерская и т.п.
В этом случае логика процесса обработки выписки банка сильно усложнится:
в него придется добавить развилку, которая будет отправлять сообщение в тот процесс, из которого пришел данный конкретный счет.
При добавлении нового процесса продажи в процесс обработки выписки придется вносить изменения.
Событие-условие позволяет избавиться от этой зависимости.
Здесь процессам не требуется ничего не знать о внутреннем устройстве друг друга, достаточно интерфейса, роль которого играет хранилище данных:
процесс-клиент (От заказа до оплаты) добавляет запись в таблицу базу данных (Выставленные счета) и ждет, пока значение поля “статус” этой записи изменится на требуемый (оплачен)
процесс-сервер (Обработка выписки банка), обрабатывая очередную строку, ищет среди выставленных счетов тот, на который ссылается платеж, и меняет статус найденного счета на “оплачен”
процесс-клиент выходит из ожидания и продолжает работу
Процессов-клиентов и процессов-серверов при этом может быть сколько угодно.
В случае исполняемой модели процесса событие-сообщение должно автоматически обрабатываться движком.
Если процессный движок не поддерживает событие-условие, его легко заменить комбинацией развилки “или-или” и таймера:
Cjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjxkZWZpbml0aW9ucyB4bWxucz0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9NT0RFTCIgeG1sbnM6YnBtbmRpPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L0RJIiB4bWxuczpvbWdkYz0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREMiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOmRpPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9ERC8yMDEwMDUyNC9ESSIgaWQ9InNpZC0zODQyMmZhZS1lMDNlLTQzYTMtYmVmNC1iZDMzYjMyMDQxYjIiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2JwbW4uaW8vYnBtbiIgZXhwb3J0ZXI9Imh0dHA6Ly9icG1uLmlvIiBleHBvcnRlclZlcnNpb249IjAuMTAuMSI+CiAgPHByb2Nlc3MgaWQ9IlByb2Nlc3NfMSIgaXNFeGVjdXRhYmxlPSJmYWxzZSI+CiAgICA8ZXhjbHVzaXZlR2F0ZXdheSBpZD0iR2F0ZXdheV8wNGFrem83IiBuYW1lPSLQodGC0LDRgtGD0YEg0YHRh9C10YLQsCAmIzM5O9C+0L/Qu9Cw0YfQtdC9JiMzOTs/Ij4KICAgICAgPGluY29taW5nPkZsb3dfMTU4bWFmMDwvaW5jb21pbmc+CiAgICAgIDxvdXRnb2luZz5GbG93XzBreWx0aGU8L291dGdvaW5nPgogICAgICA8b3V0Z29pbmc+Rmxvd18xNHUyN3o5PC9vdXRnb2luZz4KICAgIDwvZXhjbHVzaXZlR2F0ZXdheT4KICAgIDx0YXNrIGlkPSJBY3Rpdml0eV8wM2U5MmdxIiBuYW1lPSIuLi4iPgogICAgICA8aW5jb21pbmc+Rmxvd18wa3lsdGhlPC9pbmNvbWluZz4KICAgIDwvdGFzaz4KICAgIDxzZXF1ZW5jZUZsb3cgaWQ9IkZsb3dfMGt5bHRoZSIgbmFtZT0i0LTQsCIgc291cmNlUmVmPSJHYXRld2F5XzA0YWt6bzciIHRhcmdldFJlZj0iQWN0aXZpdHlfMDNlOTJncSIgLz4KICAgIDx0YXNrIGlkPSJBY3Rpdml0eV8wdDE4amRxIiBuYW1lPSIuLi4iPgogICAgICA8b3V0Z29pbmc+Rmxvd18xYWZ4MGxoPC9vdXRnb2luZz4KICAgIDwvdGFzaz4KICAgIDxpbnRlcm1lZGlhdGVDYXRjaEV2ZW50IGlkPSJFdmVudF8xZHNqYTZjIj4KICAgICAgPGluY29taW5nPkZsb3dfMTR1Mjd6OTwvaW5jb21pbmc+CiAgICAgIDxpbmNvbWluZz5GbG93XzFhZngwbGg8L2luY29taW5nPgogICAgICA8b3V0Z29pbmc+Rmxvd18xNThtYWYwPC9vdXRnb2luZz4KICAgICAgPHRpbWVyRXZlbnREZWZpbml0aW9uIGlkPSJUaW1lckV2ZW50RGVmaW5pdGlvbl8wczZpdW1zIiAvPgogICAgPC9pbnRlcm1lZGlhdGVDYXRjaEV2ZW50PgogICAgPHNlcXVlbmNlRmxvdyBpZD0iRmxvd18xNHUyN3o5IiBuYW1lPSLQvdC10YIiIHNvdXJjZVJlZj0iR2F0ZXdheV8wNGFrem83IiB0YXJnZXRSZWY9IkV2ZW50XzFkc2phNmMiIC8+CiAgICA8c2VxdWVuY2VGbG93IGlkPSJGbG93XzE1OG1hZjAiIHNvdXJjZVJlZj0iRXZlbnRfMWRzamE2YyIgdGFyZ2V0UmVmPSJHYXRld2F5XzA0YWt6bzciIC8+CiAgICA8c2VxdWVuY2VGbG93IGlkPSJGbG93XzFhZngwbGgiIHNvdXJjZVJlZj0iQWN0aXZpdHlfMHQxOGpkcSIgdGFyZ2V0UmVmPSJFdmVudF8xZHNqYTZjIiAvPgogIDwvcHJvY2Vzcz4KICA8YnBtbmRpOkJQTU5EaWFncmFtIGlkPSJCUE1ORGlhZ3JhbV8xIj4KICAgIDxicG1uZGk6QlBNTlBsYW5lIGlkPSJCUE1OUGxhbmVfMSIgYnBtbkVsZW1lbnQ9IlByb2Nlc3NfMSI+CiAgICAgIDxicG1uZGk6QlBNTlNoYXBlIGlkPSJHYXRld2F5XzA0YWt6bzdfZGkiIGJwbW5FbGVtZW50PSJHYXRld2F5XzA0YWt6bzciIGlzTWFya2VyVmlzaWJsZT0idHJ1ZSI+CiAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIyNTUiIHk9IjEwNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiAvPgogICAgICAgIDxicG1uZGk6QlBNTkxhYmVsPgogICAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIyNDEiIHk9IjE2MiIgd2lkdGg9Ijc5IiBoZWlnaHQ9IjI3IiAvPgogICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4KICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPgogICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iQWN0aXZpdHlfMDNlOTJncV9kaSIgYnBtbkVsZW1lbnQ9IkFjdGl2aXR5XzAzZTkyZ3EiPgogICAgICAgIDxvbWdkYzpCb3VuZHMgeD0iMzYwIiB5PSI5MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIgLz4KICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbCAvPgogICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+CiAgICAgIDxicG1uZGk6QlBNTlNoYXBlIGlkPSJBY3Rpdml0eV8wdDE4amRxX2RpIiBicG1uRWxlbWVudD0iQWN0aXZpdHlfMHQxOGpkcSI+CiAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIzMCIgeT0iOTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iODAiIC8+CiAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWwgLz4KICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPgogICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iRXZlbnRfMXFkaWx6aV9kaSIgYnBtbkVsZW1lbnQ9IkV2ZW50XzFkc2phNmMiPgogICAgICAgIDxvbWdkYzpCb3VuZHMgeD0iMTgyIiB5PSIxMTIiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgLz4KICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPgogICAgICA8YnBtbmRpOkJQTU5FZGdlIGlkPSJGbG93XzBreWx0aGVfZGkiIGJwbW5FbGVtZW50PSJGbG93XzBreWx0aGUiPgogICAgICAgIDxkaTp3YXlwb2ludCB4PSIzMDUiIHk9IjEzMCIgLz4KICAgICAgICA8ZGk6d2F5cG9pbnQgeD0iMzYwIiB5PSIxMzAiIC8+CiAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+CiAgICAgICAgICA8b21nZGM6Qm91bmRzIHg9IjMyNCIgeT0iMTEyIiB3aWR0aD0iMTciIGhlaWdodD0iMTQiIC8+CiAgICAgICAgPC9icG1uZGk6QlBNTkxhYmVsPgogICAgICA8L2JwbW5kaTpCUE1ORWRnZT4KICAgICAgPGJwbW5kaTpCUE1ORWRnZSBpZD0iRmxvd18xNHUyN3o5X2RpIiBicG1uRWxlbWVudD0iRmxvd18xNHUyN3o5Ij4KICAgICAgICA8ZGk6d2F5cG9pbnQgeD0iMjgwIiB5PSIxMDUiIC8+CiAgICAgICAgPGRpOndheXBvaW50IHg9IjI4MCIgeT0iNzAiIC8+CiAgICAgICAgPGRpOndheXBvaW50IHg9IjIwMCIgeT0iNzAiIC8+CiAgICAgICAgPGRpOndheXBvaW50IHg9IjIwMCIgeT0iMTEyIiAvPgogICAgICAgIDxicG1uZGk6QlBNTkxhYmVsPgogICAgICAgICAgPG9tZ2RjOkJvdW5kcyB4PSIyOTMiIHk9IjczIiB3aWR0aD0iMTMiIGhlaWdodD0iMTQiIC8+CiAgICAgICAgPC9icG1uZGk6QlBNTkxhYmVsPgogICAgICA8L2JwbW5kaTpCUE1ORWRnZT4KICAgICAgPGJwbW5kaTpCUE1ORWRnZSBpZD0iRmxvd18xNThtYWYwX2RpIiBicG1uRWxlbWVudD0iRmxvd18xNThtYWYwIj4KICAgICAgICA8ZGk6d2F5cG9pbnQgeD0iMjE4IiB5PSIxMzAiIC8+CiAgICAgICAgPGRpOndheXBvaW50IHg9IjI1NSIgeT0iMTMwIiAvPgogICAgICA8L2JwbW5kaTpCUE1ORWRnZT4KICAgICAgPGJwbW5kaTpCUE1ORWRnZSBpZD0iRmxvd18xYWZ4MGxoX2RpIiBicG1uRWxlbWVudD0iRmxvd18xYWZ4MGxoIj4KICAgICAgICA8ZGk6d2F5cG9pbnQgeD0iMTMwIiB5PSIxMzAiIC8+CiAgICAgICAgPGRpOndheXBvaW50IHg9IjE4MiIgeT0iMTMwIiAvPgogICAgICA8L2JwbW5kaTpCUE1ORWRnZT4KICAgIDwvYnBtbmRpOkJQTU5QbGFuZT4KICA8L2JwbW5kaTpCUE1ORGlhZ3JhbT4KPC9kZWZpbml0aW9ucz4K
В случае неисполняемой модели событие-условие моделирует действия сотрудника, который периодически нажимает клавишу F5 на странице информационной системы,
отображающей перечень выставленных счетов с их статусом.