Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ru:rule:use-default-flow-only-in-executable-models [2024-08-21 14:36] Anatoly Belaychukru:rule:use-default-flow-only-in-executable-models [2025-04-01 11:23] (текущий) – [Используйте поток управления "в ином случае" только в исполняемых моделях] Anatoly Belaychuk
Строка 3: Строка 3:
 {{tag>поток_в_ином_случае}} {{tag>поток_в_ином_случае}}
  
-Используйте поток управления "в ином случае" только если модель предназначена для исполнения процессным движком.+Используйте поток управления "в ином случае", выходящий из развилки "или/или", только если модель предназначена для исполнения процессным движком.
  
 ===== ✔ Как надо ===== ===== ✔ Как надо =====
  
-==== Исполняемая модель ====+Исполняемая модель:
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Строка 140: Строка 140:
 </bpmnio> </bpmnio>
  
-==== Аналитическая модель ====+Аналитическая модель:
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Строка 277: Строка 277:
   * В исполняемой модели поток "в ином случае" является мерой предосторожности, гарантирующей, что процесс в любом случае продолжит исполнение, даже если в логических условиях допущена ошибка. Например, если развилка управляется булевым атрибутом базы данных, то аналитик может для одного потока указать условие "если значение атрибута - истина", а для другого "если значение атрибута - ложь", упустив из виду, что возможно и третье значение - NULL (не задано). Более надежно в задать для одного потока явное условие (ложь или истина), а второй поток пометить как поток "в ином случае".   * В исполняемой модели поток "в ином случае" является мерой предосторожности, гарантирующей, что процесс в любом случае продолжит исполнение, даже если в логических условиях допущена ошибка. Например, если развилка управляется булевым атрибутом базы данных, то аналитик может для одного потока указать условие "если значение атрибута - истина", а для другого "если значение атрибута - ложь", упустив из виду, что возможно и третье значение - NULL (не задано). Более надежно в задать для одного потока явное условие (ложь или истина), а второй поток пометить как поток "в ином случае".
   * В случае аналитической модели, используемой, например, для регламентации или для поиска возможностей оптимизации процесса, поток управления "в ином случае" не приносит пользы, а лишь вызывает лишние вопросы.   * В случае аналитической модели, используемой, например, для регламентации или для поиска возможностей оптимизации процесса, поток управления "в ином случае" не приносит пользы, а лишь вызывает лишние вопросы.
 +
 +===== Исключения =====
 +
 +Сказанное выше относится к развилкам "или/или", а применительно к развилке "и/или" поток "в ином случае" полезен и в исполняемых, и в аналитических моделях:
 +
 +<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_1vphr67">
 +    <inclusiveGateway id="Gateway_0h14sq9" default="Flow_1fiufcu">
 +      <outgoing>Flow_0v7gy70</outgoing>
 +      <outgoing>Flow_1q65gr0</outgoing>
 +      <outgoing>Flow_1fiufcu</outgoing>
 +    </inclusiveGateway>
 +    <task id="Activity_0s9ye6s" name="Исправить синтаксические ошибки">
 +      <incoming>Flow_0v7gy70</incoming>
 +      <outgoing>Flow_1yo36j4</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0v7gy70" name="обнаружены синтаксические ошибки" sourceRef="Gateway_0h14sq9" targetRef="Activity_0s9ye6s" />
 +    <task id="Activity_0utrx8b" name="Исправить существенные ошибки">
 +      <incoming>Flow_1q65gr0</incoming>
 +      <outgoing>Flow_0lb8qxs</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_1q65gr0" name="обнаружены существенные ошибки" sourceRef="Gateway_0h14sq9" targetRef="Activity_0utrx8b" />
 +    <sequenceFlow id="Flow_0lb8qxs" sourceRef="Activity_0utrx8b" targetRef="Gateway_0ncb01t" />
 +    <inclusiveGateway id="Gateway_0ncb01t">
 +      <incoming>Flow_0lb8qxs</incoming>
 +      <incoming>Flow_1yo36j4</incoming>
 +      <incoming>Flow_1fiufcu</incoming>
 +    </inclusiveGateway>
 +    <sequenceFlow id="Flow_1yo36j4" sourceRef="Activity_0s9ye6s" targetRef="Gateway_0ncb01t" />
 +    <sequenceFlow id="Flow_1fiufcu" sourceRef="Gateway_0h14sq9" targetRef="Gateway_0ncb01t" />
 +  </process>
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1vphr67">
 +      <bpmndi:BPMNShape id="Gateway_12uxsxa_di" bpmnElement="Gateway_0h14sq9">
 +        <omgdc:Bounds x="285" y="265" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_0s9ye6s_di" bpmnElement="Activity_0s9ye6s">
 +        <omgdc:Bounds x="400" y="140" width="100" height="80" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_0utrx8b_di" bpmnElement="Activity_0utrx8b">
 +        <omgdc:Bounds x="390" y="370" width="100" height="80" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_1rj8ws5_di" bpmnElement="Gateway_0ncb01t">
 +        <omgdc:Bounds x="545" y="265" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_0v7gy70_di" bpmnElement="Flow_0v7gy70">
 +        <omgdi:waypoint x="310" y="265" />
 +        <omgdi:waypoint x="310" y="180" />
 +        <omgdi:waypoint x="400" y="180" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="293" y="220" width="64" height="27" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1q65gr0_di" bpmnElement="Flow_1q65gr0">
 +        <omgdi:waypoint x="310" y="315" />
 +        <omgdi:waypoint x="310" y="410" />
 +        <omgdi:waypoint x="390" y="410" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="283" y="360" width="85" height="27" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0lb8qxs_di" bpmnElement="Flow_0lb8qxs">
 +        <omgdi:waypoint x="490" y="410" />
 +        <omgdi:waypoint x="570" y="410" />
 +        <omgdi:waypoint x="570" y="315" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1yo36j4_di" bpmnElement="Flow_1yo36j4">
 +        <omgdi:waypoint x="500" y="180" />
 +        <omgdi:waypoint x="570" y="180" />
 +        <omgdi:waypoint x="570" y="265" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1fiufcu_di" bpmnElement="Flow_1fiufcu">
 +        <omgdi:waypoint x="335" y="290" />
 +        <omgdi:waypoint x="545" y="290" />
 +      </bpmndi:BPMNEdge>
 +    </bpmndi:BPMNPlane>
 +  </bpmndi:BPMNDiagram>
 +</definitions>
 +</bpmnio>
 +
  
 ===== Смотри также ===== ===== Смотри также =====