Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ru:rule:different_rhytms [2024-08-27 20:36] Anatoly Belaychukru:rule:different_rhytms [2024-11-02 14:06] (текущий) – [Примечания] Anatoly Belaychuk
Строка 1: Строка 1:
-====== 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="&lt;mxfile host=&quot;embed.diagrams.net&quot; agent=&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36&quot; version=&quot;24.7.7&quot;&gt;&lt;diagram id=&quot;H6X_qINhhoIvVAoZe0za&quot; name=&quot;Страница — 1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><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="&quot;Helvetica&quot;" 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#Extensibilitystyle="overflowvisible; 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="&quot;Helvetica&quot;" 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#Extensibilitystyle="overflowvisible; 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="&quot;Helvetica&quot;" 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#Extensibilitystyle="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtmlstyle="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="&quot;Helvetica&quot;" 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="colorrgb(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="&quot;Helvetica&quot;" 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.04fill="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.76fill="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.88fill="nonestroke="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/bpmnexporter="http://bpmn.ioexporterVersion="0.10.1">Паттерны (диаграммы). +
-  <bpmn:process id="Process_1isExecutable="false"> +
-    <bpmn:startEvent id="StartEvent_1" /> +
-  </bpmn:process> +
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1"> +
-    <bpmndi:BPMNPlane id="BPMNPlane_1bpmnElement="Process_1"> +
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2bpmnElement="StartEvent_1"> +
-        <dc:Bounds x="156y="82width="36height="36" /> +
-      </bpmndi:BPMNShape> +
-    </bpmndi:BPMNPlane> +
-  </bpmndi:BPMNDiagram> +
-</definitions> +
-</bpmnio>+
  
 ===== ✘ Как НЕ надо ===== ===== ✘ Как НЕ надо =====
Строка 36: Строка 12:
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
-<definitions +<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"> 
-    xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" +  <process id="Process_1" isExecutable="false"> 
-    xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" +    <startEvent id="Event_1v9pyzp"
-    xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" +      <outgoing>Flow_05txx3h</outgoing> 
-    xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" +    </startEvent> 
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +    <sequenceFlow id="Flow_05txx3h" sourceRef="Event_1v9pyzp" targetRef="Activity_1ply65i" /> 
-    id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" +    <sequenceFlow id="Flow_1i6r8h2" sourceRef="Activity_1ply65i" targetRef="Activity_10g5d68" /> 
-    targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1">Создать диаграмму BPMN  <bpmn:process id="Process_1" isExecutable="false"> +    <sequenceFlow id="Flow_095hc6e" sourceRef="Activity_10g5d68" targetRef="Activity_0vus4rf" /> 
-    <bpmn:startEvent id="StartEvent_1" /> +    <endEvent id="Event_17yscxm"> 
-  </bpmn:process>+      <incoming>Flow_1fo0r26</incoming> 
 +    </endEvent> 
 +    <sequenceFlow id="Flow_1fo0r26" sourceRef="Activity_0vus4rf" targetRef="Event_17yscxm" /> 
 +    <subProcess id="Activity_1ply65i" name="Актуализировать прайс-лист"> 
 +      <incoming>Flow_05txx3h</incoming> 
 +      <outgoing>Flow_1i6r8h2</outgoing> 
 +    </subProcess> 
 +    <subProcess id="Activity_10g5d68" name="Сформировать месячный план продаж"> 
 +      <incoming>Flow_1i6r8h2</incoming> 
 +      <outgoing>Flow_095hc6e</outgoing> 
 +    </subProcess> 
 +    <subProcess id="Activity_0vus4rf" name="От заказа до оплаты"> 
 +      <incoming>Flow_095hc6e</incoming> 
 +      <outgoing>Flow_1fo0r26</outgoing> 
 +    </subProcess
 +  </process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> +      <bpmndi:BPMNShape id="Event_1v9pyzp_di" bpmnElement="Event_1v9pyzp"> 
-        <dc:Bounds x="156" y="82" width="36" height="36" />+        <omgdc:Bounds x="192" y="112" width="36" height="36" />
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
 +      <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" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_0ycqnvr_di" bpmnElement="Activity_10g5d68">
 +        <omgdc:Bounds x="420" y="90" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_0wavgor_di" bpmnElement="Activity_0vus4rf">
 +        <omgdc:Bounds x="570" y="90" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_05txx3h_di" bpmnElement="Flow_05txx3h">
 +        <omgdi:waypoint x="228" y="130" />
 +        <omgdi:waypoint x="270" y="130" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1i6r8h2_di" bpmnElement="Flow_1i6r8h2">
 +        <omgdi:waypoint x="370" y="130" />
 +        <omgdi:waypoint x="420" y="130" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_095hc6e_di" bpmnElement="Flow_095hc6e">
 +        <omgdi:waypoint x="520" y="130" />
 +        <omgdi:waypoint x="570" y="130" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1fo0r26_di" bpmnElement="Flow_1fo0r26">
 +        <omgdi:waypoint x="670" y="130" />
 +        <omgdi:waypoint x="712" y="130" />
 +      </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>
Строка 58: Строка 87:
 ===== Примечания ===== ===== Примечания =====
  
-  * Дополнительные комментарии (опционально)+С точки зрения исполнителя (подразделения, функции) он сначала актуализирует прайс-лист, потом составляет план продаж, потом закрывает сделки и выполняет обязательства по ним. 
 +Но BPMN - вещь буквальная, и если мы так и изобразим процесс (см. [[#как не надо]]), то это будет означать, что мы закрываем ровно одну сделку в месяц, что, очевидно, не так.
  
-===== Исключения =====+Да и прайс-лист обычно обновляется не по расписанию, а в связи с событиями на рынке, которые могут произойти в любое время. 
 +Поэтому в данном случае у нас три разных события - волевое решение о необходимости корректировки прайс-листа, ежемесячный срок формирования плана продаж и заявка на покупку от клиента -  
 +что означает три разных (хотя и связанных через данные) процесса.
  
-  * Исключения из правила (если есть)+На диаграмме [[#как надо]] они изображены в виде черных ящиков, подразумевая, что каждый процесс изображен в развернутом виде на отдельной диаграмме
 +Спецификация BPMN не разрешает соединять пулы с потоками данных, поэтому используем направленные ассоциации, которые выглядят точно так же.
  
 ===== Смотри также ===== ===== Смотри также =====
  
-  * Ссылки на страницы со схожим контентом (опционально)+  * [[single_process]]
  
 ===== Автор(ы) ===== ===== Автор(ы) =====