Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ru:rule:different_rhytms [2024-08-27 20:37] – [Редактировать диаграмму] 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>+
  
 ===== ✘ Как НЕ надо ===== ===== ✘ Как НЕ надо =====
Строка 41: Строка 17:
       <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">
Строка 71: Строка 42:
         <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">
Строка 102: Строка 67:
         <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>
Строка 117: Строка 87:
 ===== Примечания ===== ===== Примечания =====
  
-  * Дополнительные комментарии (опционально)+С точки зрения исполнителя (подразделения, функции) он сначала актуализирует прайс-лист, потом составляет план продаж, потом закрывает сделки и выполняет обязательства по ним. 
 +Но BPMN - вещь буквальная, и если мы так и изобразим процесс (см. [[#как не надо]]), то это будет означать, что мы закрываем ровно одну сделку в месяц, что, очевидно, не так.
  
-===== Исключения =====+Да и прайс-лист обычно обновляется не по расписанию, а в связи с событиями на рынке, которые могут произойти в любое время. 
 +Поэтому в данном случае у нас три разных события - волевое решение о необходимости корректировки прайс-листа, ежемесячный срок формирования плана продаж и заявка на покупку от клиента -  
 +что означает три разных (хотя и связанных через данные) процесса.
  
-  * Исключения из правила (если есть)+На диаграмме [[#как надо]] они изображены в виде черных ящиков, подразумевая, что каждый процесс изображен в развернутом виде на отдельной диаграмме
 +Спецификация BPMN не разрешает соединять пулы с потоками данных, поэтому используем направленные ассоциации, которые выглядят точно так же.
  
 ===== Смотри также ===== ===== Смотри также =====
  
-  * Ссылки на страницы со схожим контентом (опционально)+  * [[single_process]]
  
 ===== Автор(ы) ===== ===== Автор(ы) =====