Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
ru:rule:conditional_event_collaboration [2024-08-28 19:07] – [Примечания] Anatoly Belaychuk | ru:rule:conditional_event_collaboration [2024-08-28 20:56] (текущий) – [Смотри также] Anatoly Belaychuk |
---|
====== 0-TBD Используйте для моделирования межпроцессного взаимодействия событие-условие ====== | ====== Используйте для моделирования межпроцессного взаимодействия событие-условие ====== |
| |
{{tag>взаимодействие событие-сообщение событие-условие промежуточное_событие}} | {{tag>взаимодействие событие-сообщение событие-условие промежуточное_событие}} |
| |
{{:ru:v_razrabotke.png?nolink&200|}} | Событие-сообщение создает тесную связь между процессами: процесс-отправитель сообщения должен знать внутреннее устройство процесса-получателя. |
| Событие-условие позволяет реализовать более технологичную слабосвязную процессную архитектуру. |
Событие-сообщение создает тесную связь между процессами: процесс-отправитель должен знать внутреннее устройство процесса получателя. | |
Событие-условие позволяет реализовать более технологичную, слабосвязную процессную архитектуру. | |
===== ✔ Как надо ===== | ===== ✔ Как надо ===== |
| |
* процесс-клиент выходит из ожидания и продолжает работу | * процесс-клиент выходит из ожидания и продолжает работу |
| |
Процессов-клиентов при этом может быть сколько угодно. | Процессов-клиентов и процессов-серверов при этом может быть сколько угодно. |
| |
В случае исполняемой модели процесса событие-сообщение должно автоматически обрабатываться движком. | В случае исполняемой модели процесса событие-сообщение должно автоматически обрабатываться движком. |
<process id="Process_1" isExecutable="false"> | <process id="Process_1" isExecutable="false"> |
<exclusiveGateway id="Gateway_04akzo7" name="Статус счета 'оплачен'?"> | <exclusiveGateway id="Gateway_04akzo7" name="Статус счета 'оплачен'?"> |
<incoming>Flow_03g3aas</incoming> | <incoming>Flow_158maf0</incoming> |
<outgoing>Flow_0kylthe</outgoing> | <outgoing>Flow_0kylthe</outgoing> |
<outgoing>Flow_14u27z9</outgoing> | <outgoing>Flow_14u27z9</outgoing> |
<incoming>Flow_0kylthe</incoming> | <incoming>Flow_0kylthe</incoming> |
</task> | </task> |
<sequenceFlow id="Flow_0kylthe" name="yes" sourceRef="Gateway_04akzo7" targetRef="Activity_03e92gq" /> | <sequenceFlow id="Flow_0kylthe" name="да" sourceRef="Gateway_04akzo7" targetRef="Activity_03e92gq" /> |
<task id="Activity_0t18jdq" name="..."> | <task id="Activity_0t18jdq" name="..."> |
<outgoing>Flow_1uuhvx4</outgoing> | <outgoing>Flow_1afx0lh</outgoing> |
</task> | </task> |
<sequenceFlow id="Flow_1uuhvx4" sourceRef="Activity_0t18jdq" targetRef="Gateway_1x8erx9" /> | |
<intermediateCatchEvent id="Event_1dsja6c"> | <intermediateCatchEvent id="Event_1dsja6c"> |
<incoming>Flow_14u27z9</incoming> | <incoming>Flow_14u27z9</incoming> |
<outgoing>Flow_1hwxgqr</outgoing> | <incoming>Flow_1afx0lh</incoming> |
| <outgoing>Flow_158maf0</outgoing> |
<timerEventDefinition id="TimerEventDefinition_0s6iums" /> | <timerEventDefinition id="TimerEventDefinition_0s6iums" /> |
</intermediateCatchEvent> | </intermediateCatchEvent> |
<exclusiveGateway id="Gateway_1x8erx9"> | <sequenceFlow id="Flow_14u27z9" name="нет" sourceRef="Gateway_04akzo7" targetRef="Event_1dsja6c" /> |
<incoming>Flow_1uuhvx4</incoming> | <sequenceFlow id="Flow_158maf0" sourceRef="Event_1dsja6c" targetRef="Gateway_04akzo7" /> |
<incoming>Flow_1hwxgqr</incoming> | <sequenceFlow id="Flow_1afx0lh" sourceRef="Activity_0t18jdq" targetRef="Event_1dsja6c" /> |
<outgoing>Flow_03g3aas</outgoing> | |
</exclusiveGateway> | |
<sequenceFlow id="Flow_03g3aas" sourceRef="Gateway_1x8erx9" targetRef="Gateway_04akzo7" /> | |
<sequenceFlow id="Flow_14u27z9" name="no" sourceRef="Gateway_04akzo7" targetRef="Event_1dsja6c" /> | |
<sequenceFlow id="Flow_1hwxgqr" sourceRef="Event_1dsja6c" targetRef="Gateway_1x8erx9" /> | |
</process> | </process> |
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> | <bpmndi:BPMNDiagram id="BPMNDiagram_1"> |
</bpmndi:BPMNLabel> | </bpmndi:BPMNLabel> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Event_1qdilzi_di" bpmnElement="Event_1dsja6c"> | <bpmndi:BPMNShape id="Activity_03e92gq_di" bpmnElement="Activity_03e92gq"> |
<omgdc:Bounds x="262" y="22" width="36" height="36" /> | <omgdc:Bounds x="360" y="90" width="100" height="80" /> |
| <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Activity_0t18jdq_di" bpmnElement="Activity_0t18jdq"> | <bpmndi:BPMNShape id="Activity_0t18jdq_di" bpmnElement="Activity_0t18jdq"> |
<bpmndi:BPMNLabel /> | <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Gateway_1x8erx9_di" bpmnElement="Gateway_1x8erx9" isMarkerVisible="true"> | <bpmndi:BPMNShape id="Event_1qdilzi_di" bpmnElement="Event_1dsja6c"> |
<omgdc:Bounds x="175" y="105" width="50" height="50" /> | <omgdc:Bounds x="182" y="112" width="36" height="36" /> |
</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> |
<bpmndi:BPMNEdge id="Flow_0kylthe_di" bpmnElement="Flow_0kylthe"> | <bpmndi:BPMNEdge id="Flow_0kylthe_di" bpmnElement="Flow_0kylthe"> |
<omgdc:Bounds x="324" y="112" width="17" height="14" /> | <omgdc:Bounds x="324" y="112" width="17" height="14" /> |
</bpmndi:BPMNLabel> | </bpmndi:BPMNLabel> |
</bpmndi:BPMNEdge> | |
<bpmndi:BPMNEdge id="Flow_1uuhvx4_di" bpmnElement="Flow_1uuhvx4"> | |
<di:waypoint x="130" y="130" /> | |
<di:waypoint x="175" y="130" /> | |
</bpmndi:BPMNEdge> | |
<bpmndi:BPMNEdge id="Flow_03g3aas_di" bpmnElement="Flow_03g3aas"> | |
<di:waypoint x="225" y="130" /> | |
<di:waypoint x="255" y="130" /> | |
</bpmndi:BPMNEdge> | </bpmndi:BPMNEdge> |
<bpmndi:BPMNEdge id="Flow_14u27z9_di" bpmnElement="Flow_14u27z9"> | <bpmndi:BPMNEdge id="Flow_14u27z9_di" bpmnElement="Flow_14u27z9"> |
<di:waypoint x="280" y="105" /> | <di:waypoint x="280" y="105" /> |
<di:waypoint x="280" y="58" /> | <di:waypoint x="280" y="70" /> |
| <di:waypoint x="200" y="70" /> |
| <di:waypoint x="200" y="112" /> |
<bpmndi:BPMNLabel> | <bpmndi:BPMNLabel> |
<omgdc:Bounds x="289" y="79" width="13" height="14" /> | <omgdc:Bounds x="293" y="73" width="13" height="14" /> |
</bpmndi:BPMNLabel> | </bpmndi:BPMNLabel> |
</bpmndi:BPMNEdge> | </bpmndi:BPMNEdge> |
<bpmndi:BPMNEdge id="Flow_1hwxgqr_di" bpmnElement="Flow_1hwxgqr"> | <bpmndi:BPMNEdge id="Flow_158maf0_di" bpmnElement="Flow_158maf0"> |
<di:waypoint x="262" y="40" /> | <di:waypoint x="218" y="130" /> |
<di:waypoint x="200" y="40" /> | <di:waypoint x="255" y="130" /> |
<di:waypoint x="200" y="105" /> | </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:BPMNEdge> |
</bpmndi:BPMNPlane> | </bpmndi:BPMNPlane> |
===== Исключения ===== | ===== Исключения ===== |
| |
* Схема взаимодействия с помощью событий-сообщений приемлема, если взаимодействует заведомо не больше двух процессов | Схема взаимодействия с помощью событий-сообщений приемлема, если в нем участвуют ровно два процесса. |
| |
===== Смотри также ===== | ===== Смотри также ===== |
| |
* [[external_event]] | * [[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// |