Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
ru:rule:different_rhytms [2024-08-27 20:37] – [Редактировать диаграмму] Anatoly Belaychuk | ru:rule:different_rhytms [2024-11-02 14:06] (текущий) – [Примечания] Anatoly Belaychuk |
---|
====== 0-TBD Действия, выполняющиеся в разных ритмах, следует моделировать разными процессами ====== | ====== Действия, выполняющиеся в разных ритмах, это разные процессы ====== |
| |
{{tag>ru-процесс}} | {{tag>процесс-ru взаимодействие}} |
| |
{{:ru:v_razrabotke.png?nolink&200|}} | |
| |
Краткое описание правила. | |
| |
| Если одно действие выполняется раз в месяц, а другое - по каждому заказу клиента, то это два разных процесса. |
===== ✔ Как надо ===== | ===== ✔ Как надо ===== |
| |
<bpmnio type="bpmn"> | <diagram><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="384px" height="281px" viewBox="-0.5 -0.5 384 281" content="<mxfile host="embed.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36" version="24.7.7"><diagram id="H6X_qINhhoIvVAoZe0za" name="Страница — 1">7VjJbtswEP0aHRNIpBb7GHlJDy0QIIe2R8JiLbWyKFD01q8vd1GLU8dAlALpheY8ztDkmzf0wB5c7E6PFNX5F5Lh0gN+dvLg0gMgAEHCPwRyVkiShArY0iLTTi3wXPzGGvQ1ui8y3HQcGSElK+ouuCFVhTesgyFKybHr9oOU3W+t0RYPgOcNKofo1yJjuUJnIGnxT7jY5uabg3iuVnbIOOubNDnKyNGB4MqDC0oIU7PdaYFLQZ7hRcWtL6zag1FcsWsCIhVwQOVe381b+t585S0DbyZWhJkmclTzB2ducO0WynFlzJUc13JMTZTcVoypJoCdDauU7KsMi4P5HkyPecHwc402YvXIdcSxnO1KbgV8OryovvsBU4ZPDqQv/ojJDjN65i561cpJq9Am5djmFCQay518xhpDWkZbu3XLNJ9osi9kCowy/2A4FBQpGhdynDmIIhY4iVgaHz5Ghv+FNkVgIMe1HBMnRG0Fu4nrpcw6+45D7zCh4xy/e2ZhPMxkkERvlEk4XkO2XKzkoUNS6mTMlhf3iZ1sr8f4VuNcZfWuu5dNtNHGeyciiMB9NGEqwvFUjAn6RinzB7sW0wwx1DBC8SQ8hqD7VAX+UODxW71U84ukvlaU/waZ/Xd/SjLBsCZxxnsLbRLKcrIlFSpXLZq2VSsYaH0+E1Jr8Cdm7KwbJbRnpEtahprcxgvjCTGGaSUR4IccxVX2IDojcYgaVwpZF+Ii8q1oGCW/bLcj9sGngn0Tq7zClfXdWVmedKA0zsaoOF9OkDC/u2ttmLTaONMF8t9NmG729GBfsYuKaMiebkzHph9phugWGzctbJGAF3VDcYlYceg2f2Mq0KFPpOBHaYs36vUZfk9I6qA6ym3W/rZRX5HqdoONpCjtfa7T6bBY/+t0Cp2CEZ2GE+n0Uj/8ap32N5q9nU7hB9fpZb05Gk7ijorv/Htf+r8sZW49YVrwbGD6Kg2HQw1H00g4mvWUF90o4djv9QhXSpjnHJ0dt1o4NNf/NgRz/8Vzheavk3F/PlEnuLWeYPTB68nWDJj44Z+/W9HAvtb7bcW1RdPfaNDo3Pzuc7P9T0y5t/8swtUf</diagram></mxfile>"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="5"><g><rect x="58" y="220" width="270" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 250px; margin-left: 59px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">От заказа до оплаты</div></div></div></foreignObject><text x="193" y="254" fill="rgb(0, 0, 0)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">От заказа до оплаты</text></switch></g></g></g><g data-cell-id="12"><g><rect x="208" y="0" width="175" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 173px; height: 1px; padding-top: 30px; margin-left: 209px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Формирование месячного плана продаж</div></div></div></foreignObject><text x="296" y="34" fill="rgb(0, 0, 0)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Формирование месячного плана продаж</text></switch></g></g></g><g data-cell-id="13"><g><rect x="0.5" y="0" width="175" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 173px; height: 1px; padding-top: 30px; margin-left: 2px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Актуализация прайс-листа</div></div></div></foreignObject><text x="88" y="34" fill="rgb(0, 0, 0)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Актуализация прайс-листа</text></switch></g></g></g><g data-cell-id="14"><g><path d="M 268 108 C 268 97.33 328 97.33 328 108 L 328 152 C 328 162.67 268 162.67 268 152 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 268 108 C 268 116 328 116 328 108 M 268 112 C 268 120 328 120 328 112 M 268 116 C 268 124 328 124 328 116" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 140px; margin-left: 269px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">План продаж</div></div></div></foreignObject><text x="298" y="144" fill="rgb(0, 0, 0)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">План продаж</text></switch></g></g></g><g data-cell-id="19"><g><path d="M 58 108 C 58 97.33 118 97.33 118 108 L 118 152 C 118 162.67 58 162.67 58 152 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 58 108 C 58 116 118 116 118 108 M 58 112 C 58 120 118 120 118 112 M 58 116 C 58 124 118 124 118 116" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 140px; margin-left: 59px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Прайс-лист</div></div></div></foreignObject><text x="88" y="144" fill="rgb(0, 0, 0)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Прайс-лист</text></switch></g></g></g><g data-cell-id="20"><g><path d="M 88 60 L 88 97.76" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="1 4" pointer-events="stroke"/><path d="M 81.5 85.88 L 88 98.88 L 94.5 85.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="22"><g><path d="M 295.5 60 L 296.75 60 Q 298 60 298 70 L 298 97.76" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="1 4" pointer-events="stroke"/><path d="M 291.5 85.88 L 298 98.88 L 304.5 85.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="23"><g><path d="M 298 160 L 298 180 Q 298 190 288 190 L 274.6 190 Q 264.6 190 264.58 200 L 264.55 217.04" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="1 4" pointer-events="stroke"/><path d="M 258.07 205.15 L 264.55 218.16 L 271.07 205.17" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="35"><g><path d="M 88 160 L 88 175 Q 88 185 98 185 L 115.5 185 Q 125.5 185 125.5 195 L 125.5 217.76" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="1 4" pointer-events="stroke"/><path d="M 119 205.88 L 125.5 218.88 L 132 205.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g></g></g></g></g></svg></diagram> |
<?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">Паттерны (диаграммы). | |
<bpmn:process id="Process_1" isExecutable="false"> | |
<bpmn:startEvent id="StartEvent_1" /> | |
</bpmn:process> | |
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> | |
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1"> | |
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> | |
<dc:Bounds x="156" y="82" width="36" height="36" /> | |
</bpmndi:BPMNShape> | |
</bpmndi:BPMNPlane> | |
</bpmndi:BPMNDiagram> | |
</definitions> | |
</bpmnio> | |
| |
===== ✘ Как НЕ надо ===== | ===== ✘ Как НЕ надо ===== |
<outgoing>Flow_05txx3h</outgoing> | <outgoing>Flow_05txx3h</outgoing> |
</startEvent> | </startEvent> |
<task id="Activity_1ply65i" name="Develop pricing model"> | <sequenceFlow id="Flow_05txx3h" sourceRef="Event_1v9pyzp" targetRef="Activity_1ply65i" /> |
| <sequenceFlow id="Flow_1i6r8h2" sourceRef="Activity_1ply65i" targetRef="Activity_10g5d68" /> |
| <sequenceFlow id="Flow_095hc6e" sourceRef="Activity_10g5d68" targetRef="Activity_0vus4rf" /> |
| <endEvent id="Event_17yscxm"> |
| <incoming>Flow_1fo0r26</incoming> |
| </endEvent> |
| <sequenceFlow id="Flow_1fo0r26" sourceRef="Activity_0vus4rf" targetRef="Event_17yscxm" /> |
| <subProcess id="Activity_1ply65i" name="Актуализировать прайс-лист"> |
<incoming>Flow_05txx3h</incoming> | <incoming>Flow_05txx3h</incoming> |
<outgoing>Flow_1i6r8h2</outgoing> | <outgoing>Flow_1i6r8h2</outgoing> |
</task> | </subProcess> |
<sequenceFlow id="Flow_05txx3h" sourceRef="Event_1v9pyzp" targetRef="Activity_1ply65i" /> | <subProcess id="Activity_10g5d68" name="Сформировать месячный план продаж"> |
<task id="Activity_10g5d68" name="Develop monthly sales targets"> | |
<incoming>Flow_1i6r8h2</incoming> | <incoming>Flow_1i6r8h2</incoming> |
<outgoing>Flow_095hc6e</outgoing> | <outgoing>Flow_095hc6e</outgoing> |
</task> | </subProcess> |
<sequenceFlow id="Flow_1i6r8h2" sourceRef="Activity_1ply65i" targetRef="Activity_10g5d68" /> | <subProcess id="Activity_0vus4rf" name="От заказа до оплаты"> |
<task id="Activity_131r6bz" name="Inquiry to sale"> | |
<incoming>Flow_095hc6e</incoming> | <incoming>Flow_095hc6e</incoming> |
<outgoing>Flow_10snzg3</outgoing> | |
</task> | |
<sequenceFlow id="Flow_095hc6e" sourceRef="Activity_10g5d68" targetRef="Activity_131r6bz" /> | |
<task id="Activity_0vus4rf" name="Order to cash"> | |
<incoming>Flow_10snzg3</incoming> | |
<outgoing>Flow_1fo0r26</outgoing> | <outgoing>Flow_1fo0r26</outgoing> |
</task> | </subProcess> |
<sequenceFlow id="Flow_10snzg3" sourceRef="Activity_131r6bz" targetRef="Activity_0vus4rf" /> | |
<endEvent id="Event_17yscxm"> | |
<incoming>Flow_1fo0r26</incoming> | |
</endEvent> | |
<sequenceFlow id="Flow_1fo0r26" sourceRef="Activity_0vus4rf" targetRef="Event_17yscxm" /> | |
</process> | </process> |
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> | <bpmndi:BPMNDiagram id="BPMNDiagram_1"> |
<omgdc:Bounds x="192" y="112" width="36" height="36" /> | <omgdc:Bounds x="192" y="112" width="36" height="36" /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Activity_1ply65i_di" bpmnElement="Activity_1ply65i"> | <bpmndi:BPMNShape id="Event_17yscxm_di" bpmnElement="Event_17yscxm"> |
| <omgdc:Bounds x="712" y="112" width="36" height="36" /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Activity_13i10st_di" bpmnElement="Activity_1ply65i"> |
<omgdc:Bounds x="270" y="90" width="100" height="80" /> | <omgdc:Bounds x="270" y="90" width="100" height="80" /> |
<bpmndi:BPMNLabel /> | <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Activity_10g5d68_di" bpmnElement="Activity_10g5d68"> | <bpmndi:BPMNShape id="Activity_0ycqnvr_di" bpmnElement="Activity_10g5d68"> |
<omgdc:Bounds x="420" y="90" width="100" height="80" /> | <omgdc:Bounds x="420" y="90" width="100" height="80" /> |
<bpmndi:BPMNLabel /> | |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Activity_131r6bz_di" bpmnElement="Activity_131r6bz"> | <bpmndi:BPMNShape id="Activity_0wavgor_di" bpmnElement="Activity_0vus4rf"> |
<omgdc:Bounds x="570" y="90" width="100" height="80" /> | <omgdc:Bounds x="570" y="90" width="100" height="80" /> |
<bpmndi:BPMNLabel /> | |
</bpmndi:BPMNShape> | |
<bpmndi:BPMNShape id="Activity_0vus4rf_di" bpmnElement="Activity_0vus4rf"> | |
<omgdc:Bounds x="720" y="90" width="100" height="80" /> | |
<bpmndi:BPMNLabel /> | |
</bpmndi:BPMNShape> | |
<bpmndi:BPMNShape id="Event_17yscxm_di" bpmnElement="Event_17yscxm"> | |
<omgdc:Bounds x="862" y="112" width="36" height="36" /> | |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNEdge id="Flow_05txx3h_di" bpmnElement="Flow_05txx3h"> | <bpmndi:BPMNEdge id="Flow_05txx3h_di" bpmnElement="Flow_05txx3h"> |
<omgdi:waypoint x="570" y="130" /> | <omgdi:waypoint x="570" y="130" /> |
</bpmndi:BPMNEdge> | </bpmndi:BPMNEdge> |
<bpmndi:BPMNEdge id="Flow_10snzg3_di" bpmnElement="Flow_10snzg3"> | <bpmndi:BPMNEdge id="Flow_1fo0r26_di" bpmnElement="Flow_1fo0r26"> |
<omgdi:waypoint x="670" y="130" /> | <omgdi:waypoint x="670" y="130" /> |
<omgdi:waypoint x="720" y="130" /> | <omgdi:waypoint x="712" y="130" /> |
</bpmndi:BPMNEdge> | |
<bpmndi:BPMNEdge id="Flow_1fo0r26_di" bpmnElement="Flow_1fo0r26"> | |
<omgdi:waypoint x="820" y="130" /> | |
<omgdi:waypoint x="862" y="130" /> | |
</bpmndi:BPMNEdge> | </bpmndi:BPMNEdge> |
</bpmndi:BPMNPlane> | </bpmndi:BPMNPlane> |
| </bpmndi:BPMNDiagram> |
| <bpmndi:BPMNDiagram id="BPMNDiagram_1rfm59p"> |
| <bpmndi:BPMNPlane id="BPMNPlane_1k3oqrm" bpmnElement="Activity_1ply65i" /> |
| </bpmndi:BPMNDiagram> |
| <bpmndi:BPMNDiagram id="BPMNDiagram_11m113l"> |
| <bpmndi:BPMNPlane id="BPMNPlane_1jedytr" bpmnElement="Activity_10g5d68" /> |
| </bpmndi:BPMNDiagram> |
| <bpmndi:BPMNDiagram id="BPMNDiagram_1v7zgtm"> |
| <bpmndi:BPMNPlane id="BPMNPlane_19iqxul" bpmnElement="Activity_0vus4rf" /> |
</bpmndi:BPMNDiagram> | </bpmndi:BPMNDiagram> |
</definitions> | </definitions> |
===== Примечания ===== | ===== Примечания ===== |
| |
* Дополнительные комментарии (опционально) | С точки зрения исполнителя (подразделения, функции) он сначала актуализирует прайс-лист, потом составляет план продаж, потом закрывает сделки и выполняет обязательства по ним. |
| Но BPMN - вещь буквальная, и если мы так и изобразим процесс (см. [[#как не надо]]), то это будет означать, что мы закрываем ровно одну сделку в месяц, что, очевидно, не так. |
| |
===== Исключения ===== | Да и прайс-лист обычно обновляется не по расписанию, а в связи с событиями на рынке, которые могут произойти в любое время. |
| Поэтому в данном случае у нас три разных события - волевое решение о необходимости корректировки прайс-листа, ежемесячный срок формирования плана продаж и заявка на покупку от клиента - |
| что означает три разных (хотя и связанных через данные) процесса. |
| |
* Исключения из правила (если есть) | На диаграмме [[#как надо]] они изображены в виде черных ящиков, подразумевая, что каждый процесс изображен в развернутом виде на отдельной диаграмме. |
| Спецификация BPMN не разрешает соединять пулы с потоками данных, поэтому используем направленные ассоциации, которые выглядят точно так же. |
| |
===== Смотри также ===== | ===== Смотри также ===== |
| |
* Ссылки на страницы со схожим контентом (опционально) | * [[single_process]] |
| |
===== Автор(ы) ===== | ===== Автор(ы) ===== |