Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
ru:rule:use-default-flow-only-in-executable-models [2024-08-22 20:06] – [Аналитическая модель] Anatoly Belaychuk | ru:rule:use-default-flow-only-in-executable-models [2025-04-01 11:23] (текущий) – [Используйте поток управления "в ином случае" только в исполняемых моделях] Anatoly Belaychuk |
---|
{{tag>поток_в_ином_случае}} | {{tag>поток_в_ином_случае}} |
| |
Используйте поток управления "в ином случае" только если модель предназначена для исполнения процессным движком. | Используйте поток управления "в ином случае", выходящий из развилки "или/или", только если модель предназначена для исполнения процессным движком. |
| |
===== ✔ Как надо ===== | ===== ✔ Как надо ===== |
| |
==== Исполняемая модель ==== | Исполняемая модель: |
| |
<bpmnio type="bpmn"> | <bpmnio type="bpmn"> |
* В исполняемой модели поток "в ином случае" является мерой предосторожности, гарантирующей, что процесс в любом случае продолжит исполнение, даже если в логических условиях допущена ошибка. Например, если развилка управляется булевым атрибутом базы данных, то аналитик может для одного потока указать условие "если значение атрибута - истина", а для другого "если значение атрибута - ложь", упустив из виду, что возможно и третье значение - 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> |
| |
| |
===== Смотри также ===== | ===== Смотри также ===== |