Показать страницуИстория страницыСсылки сюдаCopy this pageНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Делайте схождение параллельных потоков явным ====== {{tag>параллельная_развилка поток_управления событие-останов}} Для схождения параллельных потоков используйте параллельную развилку. ===== ✔ Как надо ===== <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: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"> <process id="Process_0wh81hf"> <parallelGateway id="Gateway_1lr33rv"> <outgoing>Flow_0pflg82</outgoing> <outgoing>Flow_11hcs27</outgoing> </parallelGateway> <task id="Activity_0tagsl2"> <incoming>Flow_0pflg82</incoming> <outgoing>Flow_09fat02</outgoing> </task> <sequenceFlow id="Flow_0pflg82" sourceRef="Gateway_1lr33rv" targetRef="Activity_0tagsl2" /> <task id="Activity_0bx18to"> <incoming>Flow_11hcs27</incoming> <outgoing>Flow_0ibgzl7</outgoing> </task> <sequenceFlow id="Flow_11hcs27" sourceRef="Gateway_1lr33rv" targetRef="Activity_0bx18to" /> <parallelGateway id="Gateway_05ml8y7"> <incoming>Flow_09fat02</incoming> <incoming>Flow_0ibgzl7</incoming> </parallelGateway> <sequenceFlow id="Flow_09fat02" sourceRef="Activity_0tagsl2" targetRef="Gateway_05ml8y7" /> <sequenceFlow id="Flow_0ibgzl7" sourceRef="Activity_0bx18to" targetRef="Gateway_05ml8y7" /> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0wh81hf"> <bpmndi:BPMNShape id="Gateway_0lu3k7m_di" bpmnElement="Gateway_1lr33rv"> <omgdc:Bounds x="185" y="145" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0tagsl2_di" bpmnElement="Activity_0tagsl2"> <omgdc:Bounds x="290" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0bx18to_di" bpmnElement="Activity_0bx18to"> <omgdc:Bounds x="290" y="210" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_15gcb5z_di" bpmnElement="Gateway_05ml8y7"> <omgdc:Bounds x="445" y="145" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0pflg82_di" bpmnElement="Flow_0pflg82"> <omgdi:waypoint x="210" y="145" /> <omgdi:waypoint x="210" y="90" /> <omgdi:waypoint x="290" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_11hcs27_di" bpmnElement="Flow_11hcs27"> <omgdi:waypoint x="210" y="195" /> <omgdi:waypoint x="210" y="250" /> <omgdi:waypoint x="290" y="250" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_09fat02_di" bpmnElement="Flow_09fat02"> <omgdi:waypoint x="390" y="90" /> <omgdi:waypoint x="470" y="90" /> <omgdi:waypoint x="470" y="145" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0ibgzl7_di" bpmnElement="Flow_0ibgzl7"> <omgdi:waypoint x="390" y="250" /> <omgdi:waypoint x="470" y="250" /> <omgdi:waypoint x="470" y="195" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> ===== ✘ Как НЕ надо ===== <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: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"> <process id="Process_0wh81hf"> <parallelGateway id="Gateway_1lr33rv"> <outgoing>Flow_0pflg82</outgoing> <outgoing>Flow_11hcs27</outgoing> </parallelGateway> <task id="Activity_0tagsl2"> <incoming>Flow_0pflg82</incoming> <outgoing>Flow_1xvw3ai</outgoing> </task> <sequenceFlow id="Flow_0pflg82" sourceRef="Gateway_1lr33rv" targetRef="Activity_0tagsl2" /> <task id="Activity_0bx18to"> <incoming>Flow_11hcs27</incoming> <outgoing>Flow_1wiazjj</outgoing> </task> <sequenceFlow id="Flow_11hcs27" sourceRef="Gateway_1lr33rv" targetRef="Activity_0bx18to" /> <task id="Activity_1j0sjh8"> <incoming>Flow_1xvw3ai</incoming> <incoming>Flow_1wiazjj</incoming> </task> <sequenceFlow id="Flow_1xvw3ai" sourceRef="Activity_0tagsl2" targetRef="Activity_1j0sjh8" /> <sequenceFlow id="Flow_1wiazjj" sourceRef="Activity_0bx18to" targetRef="Activity_1j0sjh8" /> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0wh81hf"> <bpmndi:BPMNShape id="Activity_0tagsl2_di" bpmnElement="Activity_0tagsl2"> <omgdc:Bounds x="290" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_0lu3k7m_di" bpmnElement="Gateway_1lr33rv"> <omgdc:Bounds x="185" y="145" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0bx18to_di" bpmnElement="Activity_0bx18to"> <omgdc:Bounds x="290" y="210" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1j0sjh8_di" bpmnElement="Activity_1j0sjh8"> <omgdc:Bounds x="440" y="130" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0pflg82_di" bpmnElement="Flow_0pflg82"> <omgdi:waypoint x="210" y="145" /> <omgdi:waypoint x="210" y="90" /> <omgdi:waypoint x="290" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_11hcs27_di" bpmnElement="Flow_11hcs27"> <omgdi:waypoint x="210" y="195" /> <omgdi:waypoint x="210" y="250" /> <omgdi:waypoint x="290" y="250" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1xvw3ai_di" bpmnElement="Flow_1xvw3ai"> <omgdi:waypoint x="390" y="90" /> <omgdi:waypoint x="490" y="90" /> <omgdi:waypoint x="490" y="130" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1wiazjj_di" bpmnElement="Flow_1wiazjj"> <omgdi:waypoint x="390" y="250" /> <omgdi:waypoint x="490" y="250" /> <omgdi:waypoint x="490" y="210" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> Задача, в которую входят две стрелки, (и следующие за ней по потоку) будет выполнена дважды. Вряд ли это то, чего вы хотели. <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: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"> <process id="Process_0wh81hf"> <parallelGateway id="Gateway_1lr33rv"> <outgoing>Flow_0pflg82</outgoing> <outgoing>Flow_11hcs27</outgoing> </parallelGateway> <task id="Activity_0tagsl2"> <incoming>Flow_0pflg82</incoming> <outgoing>Flow_1xvw3ai</outgoing> </task> <sequenceFlow id="Flow_0pflg82" sourceRef="Gateway_1lr33rv" targetRef="Activity_0tagsl2" /> <task id="Activity_0bx18to"> <incoming>Flow_11hcs27</incoming> <outgoing>Flow_1wiazjj</outgoing> </task> <sequenceFlow id="Flow_11hcs27" sourceRef="Gateway_1lr33rv" targetRef="Activity_0bx18to" /> <sequenceFlow id="Flow_1xvw3ai" sourceRef="Activity_0tagsl2" targetRef="Event_0u9u0r1" /> <sequenceFlow id="Flow_1wiazjj" sourceRef="Activity_0bx18to" targetRef="Event_0u9u0r1" /> <endEvent id="Event_0u9u0r1"> <incoming>Flow_1xvw3ai</incoming> <incoming>Flow_1wiazjj</incoming> </endEvent> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0wh81hf"> <bpmndi:BPMNShape id="Gateway_0lu3k7m_di" bpmnElement="Gateway_1lr33rv"> <omgdc:Bounds x="185" y="145" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0tagsl2_di" bpmnElement="Activity_0tagsl2"> <omgdc:Bounds x="290" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0bx18to_di" bpmnElement="Activity_0bx18to"> <omgdc:Bounds x="290" y="210" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0u9u0r1_di" bpmnElement="Event_0u9u0r1"> <omgdc:Bounds x="442" y="152" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0pflg82_di" bpmnElement="Flow_0pflg82"> <omgdi:waypoint x="210" y="145" /> <omgdi:waypoint x="210" y="90" /> <omgdi:waypoint x="290" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_11hcs27_di" bpmnElement="Flow_11hcs27"> <omgdi:waypoint x="210" y="195" /> <omgdi:waypoint x="210" y="250" /> <omgdi:waypoint x="290" y="250" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1xvw3ai_di" bpmnElement="Flow_1xvw3ai"> <omgdi:waypoint x="390" y="90" /> <omgdi:waypoint x="460" y="90" /> <omgdi:waypoint x="460" y="152" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1wiazjj_di" bpmnElement="Flow_1wiazjj"> <omgdi:waypoint x="390" y="250" /> <omgdi:waypoint x="460" y="250" /> <omgdi:waypoint x="460" y="190" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> Исполнение такой модели в BPMS приведет к искажению отчетности - удвоению количества завершенных событий. <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: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"> <process id="Process_0wh81hf"> <parallelGateway id="Gateway_1lr33rv"> <outgoing>Flow_0pflg82</outgoing> <outgoing>Flow_11hcs27</outgoing> </parallelGateway> <task id="Activity_0tagsl2"> <incoming>Flow_0pflg82</incoming> <outgoing>Flow_1qqj5ba</outgoing> </task> <sequenceFlow id="Flow_0pflg82" sourceRef="Gateway_1lr33rv" targetRef="Activity_0tagsl2" /> <task id="Activity_0bx18to"> <incoming>Flow_11hcs27</incoming> <outgoing>Flow_0zf0s6w</outgoing> </task> <sequenceFlow id="Flow_11hcs27" sourceRef="Gateway_1lr33rv" targetRef="Activity_0bx18to" /> <endEvent id="Event_1ixsd2m"> <incoming>Flow_1qqj5ba</incoming> </endEvent> <sequenceFlow id="Flow_1qqj5ba" sourceRef="Activity_0tagsl2" targetRef="Event_1ixsd2m" /> <endEvent id="Event_19v7dpr"> <incoming>Flow_0zf0s6w</incoming> </endEvent> <sequenceFlow id="Flow_0zf0s6w" sourceRef="Activity_0bx18to" targetRef="Event_19v7dpr" /> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0wh81hf"> <bpmndi:BPMNShape id="Gateway_0lu3k7m_di" bpmnElement="Gateway_1lr33rv"> <omgdc:Bounds x="185" y="145" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0tagsl2_di" bpmnElement="Activity_0tagsl2"> <omgdc:Bounds x="290" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0bx18to_di" bpmnElement="Activity_0bx18to"> <omgdc:Bounds x="290" y="210" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1ixsd2m_di" bpmnElement="Event_1ixsd2m"> <omgdc:Bounds x="442" y="72" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_19v7dpr_di" bpmnElement="Event_19v7dpr"> <omgdc:Bounds x="442" y="232" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0pflg82_di" bpmnElement="Flow_0pflg82"> <omgdi:waypoint x="210" y="145" /> <omgdi:waypoint x="210" y="90" /> <omgdi:waypoint x="290" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_11hcs27_di" bpmnElement="Flow_11hcs27"> <omgdi:waypoint x="210" y="195" /> <omgdi:waypoint x="210" y="250" /> <omgdi:waypoint x="290" y="250" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1qqj5ba_di" bpmnElement="Flow_1qqj5ba"> <omgdi:waypoint x="390" y="90" /> <omgdi:waypoint x="442" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0zf0s6w_di" bpmnElement="Flow_0zf0s6w"> <omgdi:waypoint x="390" y="250" /> <omgdi:waypoint x="442" y="250" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> Как и в предыдущем примере, BPMS выдаст искаженную отчетность, в которой количество конечных событий будет в два раза больше количества начальных. ===== Исключения ===== <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: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"> <process id="Process_0wh81hf"> <parallelGateway id="Gateway_1lr33rv"> <outgoing>Flow_0pflg82</outgoing> <outgoing>Flow_11hcs27</outgoing> </parallelGateway> <task id="Activity_0tagsl2"> <incoming>Flow_0pflg82</incoming> <outgoing>Flow_1qqj5ba</outgoing> </task> <sequenceFlow id="Flow_0pflg82" sourceRef="Gateway_1lr33rv" targetRef="Activity_0tagsl2" /> <task id="Activity_0bx18to"> <incoming>Flow_11hcs27</incoming> <outgoing>Flow_0zf0s6w</outgoing> </task> <sequenceFlow id="Flow_11hcs27" sourceRef="Gateway_1lr33rv" targetRef="Activity_0bx18to" /> <sequenceFlow id="Flow_1qqj5ba" sourceRef="Activity_0tagsl2" targetRef="Event_1ixsd2m" /> <endEvent id="Event_19v7dpr"> <incoming>Flow_0zf0s6w</incoming> </endEvent> <sequenceFlow id="Flow_0zf0s6w" sourceRef="Activity_0bx18to" targetRef="Event_19v7dpr" /> <endEvent id="Event_1ixsd2m"> <incoming>Flow_1qqj5ba</incoming> <terminateEventDefinition id="TerminateEventDefinition_1xhhzn4" /> </endEvent> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0wh81hf"> <bpmndi:BPMNShape id="Gateway_0lu3k7m_di" bpmnElement="Gateway_1lr33rv"> <omgdc:Bounds x="185" y="145" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0tagsl2_di" bpmnElement="Activity_0tagsl2"> <omgdc:Bounds x="290" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0bx18to_di" bpmnElement="Activity_0bx18to"> <omgdc:Bounds x="290" y="210" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_19v7dpr_di" bpmnElement="Event_19v7dpr"> <omgdc:Bounds x="442" y="232" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1n2y8k8_di" bpmnElement="Event_1ixsd2m"> <omgdc:Bounds x="442" y="72" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0pflg82_di" bpmnElement="Flow_0pflg82"> <omgdi:waypoint x="210" y="145" /> <omgdi:waypoint x="210" y="90" /> <omgdi:waypoint x="290" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_11hcs27_di" bpmnElement="Flow_11hcs27"> <omgdi:waypoint x="210" y="195" /> <omgdi:waypoint x="210" y="250" /> <omgdi:waypoint x="290" y="250" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1qqj5ba_di" bpmnElement="Flow_1qqj5ba"> <omgdi:waypoint x="390" y="90" /> <omgdi:waypoint x="442" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0zf0s6w_di" bpmnElement="Flow_0zf0s6w"> <omgdi:waypoint x="390" y="250" /> <omgdi:waypoint x="442" y="250" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> Раздельное завершение параллельных ветвей без слияния может иметь смысл, если один или несколько из них заканчиваются событием-остановом или событием-ошибкой. ===== Смотри также ===== * [[explicit_parallel_split]] * [[do_not_save_on_gateways]] * [[structured_diagram]] ===== Автор(ы) ===== --- //[[user:bell|Anatoly Belaychuk]] 2024-08-24 15:59// Последнее изменение: 2024-09-26 13:54(внешнее изменение)