Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
ru:rule:conditional_event_collaboration [2024-08-28 18:03] – [0-TBD Используйте для моделирования межпроцессного взаимодействия событие-условие] Anatoly Belaychuk | ru:rule:conditional_event_collaboration [2024-08-28 20:56] (текущий) – [Смотри также] Anatoly Belaychuk |
---|
====== 0-TBD Используйте для моделирования межпроцессного взаимодействия событие-условие ====== | ====== Используйте для моделирования межпроцессного взаимодействия событие-условие ====== |
| |
{{tag>взаимодействие событие-сообщение событие-условие промежуточное_событие}} | {{tag>взаимодействие событие-сообщение событие-условие промежуточное_событие}} |
| |
{{:ru:v_razrabotke.png?nolink&200|}} | Событие-сообщение создает тесную связь между процессами: процесс-отправитель сообщения должен знать внутреннее устройство процесса-получателя. |
| Событие-условие позволяет реализовать более технологичную слабосвязную процессную архитектуру. |
Событие-сообщение создает тесную связь между процессами: процесс-отправитель должен знать внутреннее устройство процесса получателя. | |
Событие-условие позволяет реализовать более слабо-связную процессную архитектуру. | |
===== ✔ Как надо ===== | ===== ✔ Как надо ===== |
| |
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> | <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> |
<collaboration id="Collaboration_1b1ot1c"> | <collaboration id="Collaboration_1b1ot1c"> |
<participant id="Participant_0izktdm" name="Order to cash" processRef="Process_1" /> | <participant id="Participant_0izktdm" name="От заказа до оплаты" processRef="Process_1" /> |
<participant id="Participant_0pfnmlo" name="Bank statement processing" processRef="Process_1wlf5ng" /> | <participant id="Participant_0pfnmlo" name="Обработка выписки банка" processRef="Process_1wlf5ng" /> |
</collaboration> | </collaboration> |
<process id="Process_1" isExecutable="false"> | <process id="Process_1" isExecutable="false"> |
<outgoing>Flow_09aipy9</outgoing> | <outgoing>Flow_09aipy9</outgoing> |
</startEvent> | </startEvent> |
<task id="Activity_12gb2fh" name="Negotiate order"> | <task id="Activity_12gb2fh" name="Согласовать заказ"> |
<incoming>Flow_09aipy9</incoming> | <incoming>Flow_09aipy9</incoming> |
<outgoing>Flow_16kqfso</outgoing> | <outgoing>Flow_16kqfso</outgoing> |
<outgoing>Flow_008j1br</outgoing> | <outgoing>Flow_008j1br</outgoing> |
</exclusiveGateway> | </exclusiveGateway> |
<endEvent id="Event_0b3f4gw" name="Negotiations failed"> | <endEvent id="Event_0b3f4gw" name="Заказ не согласован"> |
<incoming>Flow_1s33fqb</incoming> | <incoming>Flow_1s33fqb</incoming> |
</endEvent> | </endEvent> |
<task id="Activity_10zgl85" name="Issue invoice"> | <task id="Activity_10zgl85" name="Выставить счет"> |
<incoming>Flow_1ins0qh</incoming> | <incoming>Flow_1ins0qh</incoming> |
<outgoing>Flow_1lsywu4</outgoing> | <outgoing>Flow_1lsywu4</outgoing> |
</dataOutputAssociation> | </dataOutputAssociation> |
</task> | </task> |
<task id="Activity_1eyrek7" name="Deliver goods"> | <task id="Activity_1eyrek7" name="Доставить товар"> |
<incoming>Flow_008j1br</incoming> | <incoming>Flow_008j1br</incoming> |
<outgoing>Flow_1ins0qh</outgoing> | <outgoing>Flow_1ins0qh</outgoing> |
<sequenceFlow id="Flow_1wyen10" sourceRef="Gateway_1gwnzbk" targetRef="Event_02xkuze" /> | <sequenceFlow id="Flow_1wyen10" sourceRef="Gateway_1gwnzbk" targetRef="Event_02xkuze" /> |
<sequenceFlow id="Flow_165lj3o" sourceRef="Event_02xkuze" targetRef="Event_1epbj0y" /> | <sequenceFlow id="Flow_165lj3o" sourceRef="Event_02xkuze" targetRef="Event_1epbj0y" /> |
<dataStoreReference id="DataStoreReference_1o133y4" name="Invoices issued" /> | <dataStoreReference id="DataStoreReference_1o133y4" name="Выставленные счета" /> |
<eventBasedGateway id="Gateway_1gwnzbk"> | <eventBasedGateway id="Gateway_1gwnzbk"> |
<incoming>Flow_1lsywu4</incoming> | <incoming>Flow_1lsywu4</incoming> |
<outgoing>Flow_1wyen10</outgoing> | <outgoing>Flow_1wyen10</outgoing> |
</eventBasedGateway> | </eventBasedGateway> |
<intermediateCatchEvent id="Event_02xkuze" name="Payment term"> | <intermediateCatchEvent id="Event_02xkuze" name="Срок оплаты"> |
<incoming>Flow_1wyen10</incoming> | <incoming>Flow_1wyen10</incoming> |
<outgoing>Flow_165lj3o</outgoing> | <outgoing>Flow_165lj3o</outgoing> |
<timerEventDefinition id="TimerEventDefinition_11t8z3p" /> | <timerEventDefinition id="TimerEventDefinition_11t8z3p" /> |
</intermediateCatchEvent> | </intermediateCatchEvent> |
<endEvent id="Event_0hit4gl" name="Order fulfilled"> | <endEvent id="Event_0hit4gl" name="Заказ выполнен"> |
<incoming>Flow_0ea0g86</incoming> | <incoming>Flow_0ea0g86</incoming> |
</endEvent> | </endEvent> |
<endEvent id="Event_1epbj0y" name="Unpaid invoice"> | <endEvent id="Event_1epbj0y" name="Заказ не оплачен"> |
<incoming>Flow_165lj3o</incoming> | <incoming>Flow_165lj3o</incoming> |
<signalEventDefinition id="SignalEventDefinition_0sujvcf" /> | <signalEventDefinition id="SignalEventDefinition_0sujvcf" /> |
</endEvent> | </endEvent> |
<intermediateCatchEvent id="Event_142pbws" name="Invoice status set to 'paid'"> | <intermediateCatchEvent id="Event_142pbws" name="Статус заказа изменился на 'оплачен'"> |
<incoming>Flow_0bg3trg</incoming> | <incoming>Flow_0bg3trg</incoming> |
<outgoing>Flow_0ea0g86</outgoing> | <outgoing>Flow_0ea0g86</outgoing> |
</process> | </process> |
<process id="Process_1wlf5ng"> | <process id="Process_1wlf5ng"> |
<task id="Activity_0s6xn85" name="Get bank statement"> | <task id="Activity_0s6xn85" name="Получить выписку банка"> |
<incoming>Flow_1xejeiu</incoming> | <incoming>Flow_1xejeiu</incoming> |
<outgoing>Flow_0uoc8i4</outgoing> | <outgoing>Flow_0uoc8i4</outgoing> |
</startEvent> | </startEvent> |
<sequenceFlow id="Flow_1j3yt6b" sourceRef="Event_0u09w02" targetRef="Activity_1qvaa6n" /> | <sequenceFlow id="Flow_1j3yt6b" sourceRef="Event_0u09w02" targetRef="Activity_1qvaa6n" /> |
<task id="Activity_1qvaa6n" name="Identify payment"> | <task id="Activity_1qvaa6n" name="Идентифицировать платеж"> |
<incoming>Flow_1j3yt6b</incoming> | <incoming>Flow_1j3yt6b</incoming> |
<outgoing>Flow_12i57do</outgoing> | <outgoing>Flow_12i57do</outgoing> |
</dataInputAssociation> | </dataInputAssociation> |
</task> | </task> |
<exclusiveGateway id="Gateway_0r19iqd" name="OK?"> | <exclusiveGateway id="Gateway_0r19iqd" name="Успешно?"> |
<incoming>Flow_12i57do</incoming> | <incoming>Flow_12i57do</incoming> |
<outgoing>Flow_0kxrz4w</outgoing> | <outgoing>Flow_0kxrz4w</outgoing> |
<sequenceFlow id="Flow_0kxrz4w" sourceRef="Gateway_0r19iqd" targetRef="Event_1af95w7" /> | <sequenceFlow id="Flow_0kxrz4w" sourceRef="Gateway_0r19iqd" targetRef="Event_1af95w7" /> |
<sequenceFlow id="Flow_081u6je" sourceRef="Gateway_0r19iqd" targetRef="Activity_1q8w3kj" /> | <sequenceFlow id="Flow_081u6je" sourceRef="Gateway_0r19iqd" targetRef="Activity_1q8w3kj" /> |
<endEvent id="Event_1af95w7" name="Unidentified payment"> | <endEvent id="Event_1af95w7" name="Неопознанный платеж"> |
<incoming>Flow_0kxrz4w</incoming> | <incoming>Flow_0kxrz4w</incoming> |
<signalEventDefinition id="SignalEventDefinition_0ffic21" /> | <signalEventDefinition id="SignalEventDefinition_0ffic21" /> |
</endEvent> | </endEvent> |
<task id="Activity_1q8w3kj" name="Set invoice status 'paid'"> | <task id="Activity_1q8w3kj" name="Изменить статус счета на 'оплачен'"> |
<incoming>Flow_081u6je</incoming> | <incoming>Flow_081u6je</incoming> |
<outgoing>Flow_0pavqii</outgoing> | <outgoing>Flow_0pavqii</outgoing> |
</task> | </task> |
<sequenceFlow id="Flow_0pavqii" sourceRef="Activity_1q8w3kj" targetRef="Event_10qt9l3" /> | <sequenceFlow id="Flow_0pavqii" sourceRef="Activity_1q8w3kj" targetRef="Event_10qt9l3" /> |
<endEvent id="Event_10qt9l3" name="Invoice paid"> | <endEvent id="Event_10qt9l3" name="Счет оплачен"> |
<incoming>Flow_0pavqii</incoming> | <incoming>Flow_0pavqii</incoming> |
</endEvent> | </endEvent> |
</endEvent> | </endEvent> |
<textAnnotation id="TextAnnotation_1l2chg1"> | <textAnnotation id="TextAnnotation_1l2chg1"> |
<text>for each item</text> | <text>для каждой строки</text> |
</textAnnotation> | </textAnnotation> |
<association id="Association_12k4a5n" sourceRef="Activity_0wt68c5" targetRef="TextAnnotation_1l2chg1" /> | <association id="Association_12k4a5n" sourceRef="Activity_0wt68c5" targetRef="TextAnnotation_1l2chg1" /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="TextAnnotation_1l2chg1_di" bpmnElement="TextAnnotation_1l2chg1"> | <bpmndi:BPMNShape id="TextAnnotation_1l2chg1_di" bpmnElement="TextAnnotation_1l2chg1"> |
<omgdc:Bounds x="1049" y="590" width="61" height="44" /> | <omgdc:Bounds x="1049" y="590" width="61" height="55" /> |
<bpmndi:BPMNLabel /> | <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> | <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> |
<collaboration id="Collaboration_1b1ot1c"> | <collaboration id="Collaboration_1b1ot1c"> |
<participant id="Participant_0izktdm" name="Order to cash" processRef="Process_1" /> | <participant id="Participant_0izktdm" name="От заказа до оплаты" processRef="Process_1" /> |
<participant id="Participant_0pfnmlo" name="Bank statement processing" processRef="Process_1wlf5ng" /> | <participant id="Participant_0pfnmlo" name="Обработка выписки банка" processRef="Process_1wlf5ng" /> |
<messageFlow id="Flow_00xbn5f" sourceRef="Event_10qt9l3" targetRef="Event_142pbws" /> | <messageFlow id="Flow_00xbn5f" sourceRef="Event_10qt9l3" targetRef="Event_142pbws" /> |
</collaboration> | </collaboration> |
<outgoing>Flow_09aipy9</outgoing> | <outgoing>Flow_09aipy9</outgoing> |
</startEvent> | </startEvent> |
<task id="Activity_12gb2fh" name="Negotiate order"> | <task id="Activity_12gb2fh" name="Согласовать заказ"> |
<incoming>Flow_09aipy9</incoming> | <incoming>Flow_09aipy9</incoming> |
<outgoing>Flow_16kqfso</outgoing> | <outgoing>Flow_16kqfso</outgoing> |
<outgoing>Flow_008j1br</outgoing> | <outgoing>Flow_008j1br</outgoing> |
</exclusiveGateway> | </exclusiveGateway> |
<endEvent id="Event_0b3f4gw" name="Negotiations failed"> | <endEvent id="Event_0b3f4gw" name="Заказ не согласован"> |
<incoming>Flow_1s33fqb</incoming> | <incoming>Flow_1s33fqb</incoming> |
</endEvent> | </endEvent> |
<task id="Activity_10zgl85" name="Issue invoice"> | <task id="Activity_10zgl85" name="Выставить счет"> |
<incoming>Flow_1ins0qh</incoming> | <incoming>Flow_1ins0qh</incoming> |
<outgoing>Flow_1lsywu4</outgoing> | <outgoing>Flow_1lsywu4</outgoing> |
</dataOutputAssociation> | </dataOutputAssociation> |
</task> | </task> |
<task id="Activity_1eyrek7" name="Deliver goods"> | <task id="Activity_1eyrek7" name="Доставить товар"> |
<incoming>Flow_008j1br</incoming> | <incoming>Flow_008j1br</incoming> |
<outgoing>Flow_1ins0qh</outgoing> | <outgoing>Flow_1ins0qh</outgoing> |
<sequenceFlow id="Flow_1wyen10" sourceRef="Gateway_1gwnzbk" targetRef="Event_02xkuze" /> | <sequenceFlow id="Flow_1wyen10" sourceRef="Gateway_1gwnzbk" targetRef="Event_02xkuze" /> |
<sequenceFlow id="Flow_165lj3o" sourceRef="Event_02xkuze" targetRef="Event_1epbj0y" /> | <sequenceFlow id="Flow_165lj3o" sourceRef="Event_02xkuze" targetRef="Event_1epbj0y" /> |
<dataStoreReference id="DataStoreReference_1o133y4" name="Invoices issued" /> | <dataStoreReference id="DataStoreReference_1o133y4" name="Выставленные счета" /> |
<eventBasedGateway id="Gateway_1gwnzbk"> | <eventBasedGateway id="Gateway_1gwnzbk"> |
<incoming>Flow_1lsywu4</incoming> | <incoming>Flow_1lsywu4</incoming> |
<outgoing>Flow_1wyen10</outgoing> | <outgoing>Flow_1wyen10</outgoing> |
</eventBasedGateway> | </eventBasedGateway> |
<intermediateCatchEvent id="Event_142pbws" name="Inoice paid"> | <intermediateCatchEvent id="Event_142pbws" name="Счет оплачен"> |
<incoming>Flow_0bg3trg</incoming> | <incoming>Flow_0bg3trg</incoming> |
<outgoing>Flow_0ea0g86</outgoing> | <outgoing>Flow_0ea0g86</outgoing> |
<messageEventDefinition id="MessageEventDefinition_0jyfuoq" /> | <messageEventDefinition id="MessageEventDefinition_0jyfuoq" /> |
</intermediateCatchEvent> | </intermediateCatchEvent> |
<intermediateCatchEvent id="Event_02xkuze" name="Payment term"> | <intermediateCatchEvent id="Event_02xkuze" name="Срок оплаты"> |
<incoming>Flow_1wyen10</incoming> | <incoming>Flow_1wyen10</incoming> |
<outgoing>Flow_165lj3o</outgoing> | <outgoing>Flow_165lj3o</outgoing> |
<incoming>Flow_0ea0g86</incoming> | <incoming>Flow_0ea0g86</incoming> |
</endEvent> | </endEvent> |
<endEvent id="Event_1epbj0y" name="Unpaid invoice"> | <endEvent id="Event_1epbj0y" name="Заказ не оплачен"> |
<incoming>Flow_165lj3o</incoming> | <incoming>Flow_165lj3o</incoming> |
<signalEventDefinition id="SignalEventDefinition_0sujvcf" /> | <signalEventDefinition id="SignalEventDefinition_0sujvcf" /> |
<incoming>Flow_1w0i707</incoming> | <incoming>Flow_1w0i707</incoming> |
</endEvent> | </endEvent> |
<task id="Activity_0s6xn85" name="Get bank statement"> | <task id="Activity_0s6xn85" name="Получить выписку банка"> |
<incoming>Flow_1xejeiu</incoming> | <incoming>Flow_1xejeiu</incoming> |
<outgoing>Flow_0uoc8i4</outgoing> | <outgoing>Flow_0uoc8i4</outgoing> |
</startEvent> | </startEvent> |
<sequenceFlow id="Flow_1j3yt6b" sourceRef="Event_0u09w02" targetRef="Activity_1qvaa6n" /> | <sequenceFlow id="Flow_1j3yt6b" sourceRef="Event_0u09w02" targetRef="Activity_1qvaa6n" /> |
<task id="Activity_1qvaa6n" name="Identify payment"> | <task id="Activity_1qvaa6n" name="Идентифицировать платеж"> |
<incoming>Flow_1j3yt6b</incoming> | <incoming>Flow_1j3yt6b</incoming> |
<outgoing>Flow_12i57do</outgoing> | <outgoing>Flow_12i57do</outgoing> |
</dataInputAssociation> | </dataInputAssociation> |
</task> | </task> |
<exclusiveGateway id="Gateway_0r19iqd" name="OK?"> | <exclusiveGateway id="Gateway_0r19iqd" name="Успешно?"> |
<incoming>Flow_12i57do</incoming> | <incoming>Flow_12i57do</incoming> |
<outgoing>Flow_0kxrz4w</outgoing> | <outgoing>Flow_0kxrz4w</outgoing> |
<sequenceFlow id="Flow_0kxrz4w" sourceRef="Gateway_0r19iqd" targetRef="Event_1af95w7" /> | <sequenceFlow id="Flow_0kxrz4w" sourceRef="Gateway_0r19iqd" targetRef="Event_1af95w7" /> |
<sequenceFlow id="Flow_081u6je" sourceRef="Gateway_0r19iqd" targetRef="Event_10qt9l3" /> | <sequenceFlow id="Flow_081u6je" sourceRef="Gateway_0r19iqd" targetRef="Event_10qt9l3" /> |
<endEvent id="Event_10qt9l3" name="Invoice paid"> | <endEvent id="Event_10qt9l3" name="Счет оплачен"> |
<incoming>Flow_081u6je</incoming> | <incoming>Flow_081u6je</incoming> |
<messageEventDefinition id="MessageEventDefinition_15alkdx" /> | <messageEventDefinition id="MessageEventDefinition_15alkdx" /> |
</endEvent> | </endEvent> |
<endEvent id="Event_1af95w7" name="Unidentified payment"> | <endEvent id="Event_1af95w7" name="Неопознанный платеж"> |
<incoming>Flow_0kxrz4w</incoming> | <incoming>Flow_0kxrz4w</incoming> |
<signalEventDefinition id="SignalEventDefinition_0ffic21" /> | <signalEventDefinition id="SignalEventDefinition_0ffic21" /> |
<sequenceFlow id="Flow_0uoc8i4" sourceRef="Activity_0s6xn85" targetRef="Activity_0wt68c5" /> | <sequenceFlow id="Flow_0uoc8i4" sourceRef="Activity_0s6xn85" targetRef="Activity_0wt68c5" /> |
<textAnnotation id="TextAnnotation_1l2chg1"> | <textAnnotation id="TextAnnotation_1l2chg1"> |
<text>for each item</text> | <text>для каждой строки</text> |
</textAnnotation> | </textAnnotation> |
<association id="Association_12k4a5n" sourceRef="Activity_0wt68c5" targetRef="TextAnnotation_1l2chg1" /> | <association id="Association_12k4a5n" sourceRef="Activity_0wt68c5" targetRef="TextAnnotation_1l2chg1" /> |
<omgdc:Bounds x="962" y="202" width="36" height="36" /> | <omgdc:Bounds x="962" y="202" width="36" height="36" /> |
<bpmndi:BPMNLabel> | <bpmndi:BPMNLabel> |
<omgdc:Bounds x="953" y="178" width="54" height="14" /> | <omgdc:Bounds x="953" y="253" width="54" height="14" /> |
</bpmndi:BPMNLabel> | </bpmndi:BPMNLabel> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="TextAnnotation_1l2chg1_di" bpmnElement="TextAnnotation_1l2chg1"> | <bpmndi:BPMNShape id="TextAnnotation_1l2chg1_di" bpmnElement="TextAnnotation_1l2chg1"> |
<omgdc:Bounds x="1050" y="590" width="61" height="44" /> | <omgdc:Bounds x="1050" y="590" width="61" height="55" /> |
<bpmndi:BPMNLabel /> | <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
===== Примечания ===== | ===== Примечания ===== |
| |
* Дополнительные комментарии (опционально) | Пока счета выставляет один процесс, большой разницы между схемами с событием-сообщением и событием-условием нет. |
| Схема с событием-сообщением даже выглядит предпочтительнее, поскольку более наглядно показывает механизм взаимодействия между процессами. |
| |
| Ситуация меняется, если принять реалистичное допущение, что у компании несколько процессов продажи: товаров, услуг, розничная, партнерская и т.п. |
| В этом случае логика процесса обработки выписки банка сильно усложнится: |
| в него придется добавить развилку, которая будет отправлять сообщение в тот процесс, из которого пришел данный конкретный счет. |
| При добавлении нового процесса продажи в процесс обработки выписки придется вносить изменения. |
| |
| Событие-условие позволяет избавиться от этой зависимости. |
| Здесь процессам не требуется ничего не знать о внутреннем устройстве друг друга, достаточно интерфейса, роль которого играет хранилище данных: |
| |
| * процесс-клиент (От заказа до оплаты) добавляет запись в таблицу базу данных (Выставленные счета) и ждет, пока значение поля "статус" этой записи изменится на требуемый (оплачен) |
| * процесс-сервер (Обработка выписки банка), обрабатывая очередную строку, ищет среди выставленных счетов тот, на который ссылается платеж, и меняет статус найденного счета на "оплачен" |
| * процесс-клиент выходит из ожидания и продолжает работу |
| |
| Процессов-клиентов и процессов-серверов при этом может быть сколько угодно. |
| |
| В случае исполняемой модели процесса событие-сообщение должно автоматически обрабатываться движком. |
| Если процессный движок не поддерживает событие-условие, его легко заменить комбинацией развилки "или-или" и таймера: |
| |
| <bpmnio type="bpmn"> |
| <?xml version="1.0" encoding="UTF-8"?> |
| <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> |
| <process id="Process_1" isExecutable="false"> |
| <exclusiveGateway id="Gateway_04akzo7" name="Статус счета 'оплачен'?"> |
| <incoming>Flow_158maf0</incoming> |
| <outgoing>Flow_0kylthe</outgoing> |
| <outgoing>Flow_14u27z9</outgoing> |
| </exclusiveGateway> |
| <task id="Activity_03e92gq" name="..."> |
| <incoming>Flow_0kylthe</incoming> |
| </task> |
| <sequenceFlow id="Flow_0kylthe" name="да" sourceRef="Gateway_04akzo7" targetRef="Activity_03e92gq" /> |
| <task id="Activity_0t18jdq" name="..."> |
| <outgoing>Flow_1afx0lh</outgoing> |
| </task> |
| <intermediateCatchEvent id="Event_1dsja6c"> |
| <incoming>Flow_14u27z9</incoming> |
| <incoming>Flow_1afx0lh</incoming> |
| <outgoing>Flow_158maf0</outgoing> |
| <timerEventDefinition id="TimerEventDefinition_0s6iums" /> |
| </intermediateCatchEvent> |
| <sequenceFlow id="Flow_14u27z9" name="нет" sourceRef="Gateway_04akzo7" targetRef="Event_1dsja6c" /> |
| <sequenceFlow id="Flow_158maf0" sourceRef="Event_1dsja6c" targetRef="Gateway_04akzo7" /> |
| <sequenceFlow id="Flow_1afx0lh" sourceRef="Activity_0t18jdq" targetRef="Event_1dsja6c" /> |
| </process> |
| <bpmndi:BPMNDiagram id="BPMNDiagram_1"> |
| <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1"> |
| <bpmndi:BPMNShape id="Gateway_04akzo7_di" bpmnElement="Gateway_04akzo7" isMarkerVisible="true"> |
| <omgdc:Bounds x="255" y="105" width="50" height="50" /> |
| <bpmndi:BPMNLabel> |
| <omgdc:Bounds x="241" y="162" width="79" height="27" /> |
| </bpmndi:BPMNLabel> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Activity_03e92gq_di" bpmnElement="Activity_03e92gq"> |
| <omgdc:Bounds x="360" y="90" width="100" height="80" /> |
| <bpmndi:BPMNLabel /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Activity_0t18jdq_di" bpmnElement="Activity_0t18jdq"> |
| <omgdc:Bounds x="30" y="90" width="100" height="80" /> |
| <bpmndi:BPMNLabel /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Event_1qdilzi_di" bpmnElement="Event_1dsja6c"> |
| <omgdc:Bounds x="182" y="112" width="36" height="36" /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNEdge id="Flow_0kylthe_di" bpmnElement="Flow_0kylthe"> |
| <di:waypoint x="305" y="130" /> |
| <di:waypoint x="360" y="130" /> |
| <bpmndi:BPMNLabel> |
| <omgdc:Bounds x="324" y="112" width="17" height="14" /> |
| </bpmndi:BPMNLabel> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_14u27z9_di" bpmnElement="Flow_14u27z9"> |
| <di:waypoint x="280" y="105" /> |
| <di:waypoint x="280" y="70" /> |
| <di:waypoint x="200" y="70" /> |
| <di:waypoint x="200" y="112" /> |
| <bpmndi:BPMNLabel> |
| <omgdc:Bounds x="293" y="73" width="13" height="14" /> |
| </bpmndi:BPMNLabel> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_158maf0_di" bpmnElement="Flow_158maf0"> |
| <di:waypoint x="218" y="130" /> |
| <di:waypoint x="255" y="130" /> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_1afx0lh_di" bpmnElement="Flow_1afx0lh"> |
| <di:waypoint x="130" y="130" /> |
| <di:waypoint x="182" y="130" /> |
| </bpmndi:BPMNEdge> |
| </bpmndi:BPMNPlane> |
| </bpmndi:BPMNDiagram> |
| </definitions> |
| </bpmnio> |
| |
| В случае неисполняемой модели событие-условие моделирует действия сотрудника, который периодически нажимает клавишу F5 на странице информационной системы, |
| отображающей перечень выставленных счетов с их статусом. |
| |
===== Исключения ===== | ===== Исключения ===== |
| |
* Исключения из правила (если есть) | Схема взаимодействия с помощью событий-сообщений приемлема, если в нем участвуют ровно два процесса. |
| |
===== Смотри также ===== | ===== Смотри также ===== |
| |
* Ссылки на страницы со схожим контентом (опционально) | * [[external_event]] |
| * [[event_gateway_warning]] |
| * [[collapsed_subprocess]] |
| * [[single_process]] |
| |
===== Автор(ы) ===== | ===== Автор(ы) ===== |
| |
--- //[[user:bell|Anatoly Belaychuk]] 2024-08-27 18:18// | --- //[[user:bell|Anatoly Belaychuk]] 2024-08-27 18:18// |