Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ru:rule:business_exception_error [2024-01-11 23:07] – [✔ Как надо] Anatoly Belaychukru:rule:business_exception_error [2024-02-07 14:51] (текущий) – [Событие-ошибка применяется для моделирования бизнес-исключений] Anatoly Belaychuk
Строка 1: Строка 1:
-====== 0DRAFT Событием-ошибкой можно моделировать бизнес-исключения ======+====== Для моделирования бизнес-исключений можно использовать событие-ошибку ======
  
 {{tag>событие событие-ошибка прикрепленный_обработчик конечное_событие подпроцесс}} {{tag>событие событие-ошибка прикрепленный_обработчик конечное_событие подпроцесс}}
  
-Нормальное (желательное) завершение процесса покажите простым конечным событием, а бизнес-исключение (нежелательный вариант) - событием-ошибкой. На верхнем уровне воспользуйтесь прикрепленным обработчиком.+Нормальное (или желательное) завершение подпроцесса изобразите простым конечным событием, а бизнес-исключение (нежелательный вариант) - событием-ошибкой. На верхнем уровне воспользуйтесь прикрепленным обработчиком.
 ===== ✔ Как надо ===== ===== ✔ Как надо =====
  
Строка 9: Строка 9:
 ===== ✘ Как НЕ надо ===== ===== ✘ Как НЕ надо =====
  
-Тут антипаттерны (диаграммы) +<diagram><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="481px" height="81px" viewBox="-0.5 -0.5 481 81" content="&lt;mxfile host=&quot;embed.diagrams.net&quot; modified=&quot;2024-01-11T20:08:34.985Z&quot; agent=&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36&quot; etag=&quot;Ela93dsheoAfuaTLw7zl&quot; version=&quot;22.1.18&quot; type=&quot;embed&quot;&gt;&lt;diagram id=&quot;Oj1wgXiuPFaf_WvJZpv8&quot; name=&quot;Страница — 1&quot;&gt;7VjbbqMwEP0aHrfiEhp4LLl0H7pSpTzsswMueGMwMs5tv37HtwCBNNUqu5WqVKnBx+OxPXPmRI4TzMrDM0d18YNlmDq+mx2cYO74vufHE3hI5GiQOPI0knOSGawFVuQ3NqBr0C3JcNMzFIxRQeo+mLKqwqnoYYhztu+bvTHaX7VGOR4AqxTRIfqTZKLQaORPW/w7JnlhV/YeYz1SImtsTtIUKGP7DhQsnGDGGRP6rTzMMJXRs3HR85YXRk8b47gSH5ngh3rGDtGtOZwzd50nT7bJQrWBahPVus7cc6LuqG9xaOeqjVQLjjU4GbjqTlwoh65xomMijjbQNSOVUMkKE/i4D3K/M1f9h2AwU+AYNh2CnuxZD31wDJuGYy69kbXPMX8EHHU5srZ7tkn4BAmwpJYRKQ+5rKiHdV1WDwI1GxjbF0TgVY1SabCHYcA4kH5losjZtspwJr3oOoIiCpJClFS+wysUiUCkwtz08aFGlaSHqwYpRXVD1sqXROSyPxDfKHu0bgRHssIS0rwwVq+2a+NmyERDzh3mAh86kGHmM2YlFvwIJnZ0athpdOKbZwVg31adZ0up6FRcZDBkCj0/+W5rAV5MOVwojcdhaVzlpzdRmbPPKySNwnHrMVK21uZ5hYR2JwPrvu/L/MI7lbkuVWTqCMjgC1pj+soaIgirYGzNhGAlGFA5kKB0kyvazRhlXEUqeFN/HR9PlORyrmCSscj0UlhTMiupMSeQMsUyyAsoO35toYRtBQXOzk4CL6mJmlp33shBMd5YAdII4DTiqgyO5ZrJE+UYSI/obbhqGWepGocDpoYjRA1vQdRoVMPjZUdstQgvrT6fNPyu23fdvrluB+HkM3U7vuv2l9FtXPUkG5yUpEIC+7dhauh9nmwH7nWe4gzuHabLuChYzipEFy2anGRCRbK1kUVtsv8LC3E0lyi0FazPDYjwk7wSSTpQlm40tCS0Y2Ame+9GvWFbnuL+tUIgnmPR/5qSZ3o3NxxTJMiuf9cai7SZ+iqL+eI3cWj3Yj3ofZpJ3avRmZ/Av+JIH27gSOX9dJyPUcH7wlR4HKFC+H+oEJ9lMPhLKnhu31H075jgf2EmRCNMiO+icOq2P/to8/bXs2DxBw==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 95 10 C 95 4.48 99.48 0 105 0 L 205 0 C 210.52 0 215 4.48 215 10 L 215 70 C 215 75.52 210.52 80 205 80 L 105 80 C 99.48 80 95 75.52 95 70 L 95 10 Z" fill="rgb(255, 255, 255)" stroke="none" pointer-events="all"/><path d="M 97 11 L 97 69 C 97 73.97 101.03 78 106 78 L 204 78 C 208.97 78 213 73.97 213 69 L 213 11 C 213 6.03 208.97 2 204 2 L 106 2 C 101.03 2 97 6.03 97 11" fill="none" stroke="none" pointer-events="all"/><path d="M 95 10 C 95 4.48 99.48 0 105 0 L 205 0 C 210.52 0 215 4.48 215 10 L 215 70 C 215 75.52 210.52 80 205 80 L 105 80 C 99.48 80 95 75.52 95 70 L 95 10 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="148" y="66" width="14" height="14" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 152 73 L 158 73 M 155 70 L 155 76" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><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: 118px; height: 1px; padding-top: 40px; margin-left: 96px;"><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="155" y="44" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Согласование договора</text></switch></g><ellipse cx="25" cy="40" rx="25" ry="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 274 10 C 274 4.48 278.48 0 284 0 L 384 0 C 389.52 0 394 4.48 394 10 L 394 70 C 394 75.52 389.52 80 384 80 L 284 80 C 278.48 80 274 75.52 274 70 L 274 10 Z" fill="rgb(255, 255, 255)" stroke="none" pointer-events="all"/><path d="M 276 11 L 276 69 C 276 73.97 280.03 78 285 78 L 383 78 C 387.97 78 392 73.97 392 69 L 392 11 C 392 6.03 387.97 2 383 2 L 285 2 C 280.03 2 276 6.03 276 11" fill="none" stroke="none" pointer-events="all"/><path d="M 274 10 C 274 4.48 278.48 0 284 0 L 384 0 C 389.52 0 394 4.48 394 10 L 394 70 C 394 75.52 389.52 80 384 80 L 284 80 C 278.48 80 274 75.52 274 70 L 274 10 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="327" y="66" width="14" height="14" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 331 73 L 337 73 M 334 70 L 334 76" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><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: 118px; height: 1px; padding-top: 40px; margin-left: 275px;"><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="334" y="44" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Подписание договора</text></switch></g><ellipse cx="455" cy="40" rx="25" ry="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="3" pointer-events="all"/><path d="M 215 40 L 259.88 40" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 272.88 40 L 259.88 46.5 L 259.88 33.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 50 40 L 70 40 L 65 40 L 80.88 40" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 93.88 40 L 80.88 46.5 L 80.88 33.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 394 40 L 414 40 L 400 40 L 415.88 40" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 428.88 40 L 415.88 46.5 L 415.88 33.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g></svg></diagram>
 ===== Примечания ===== ===== Примечания =====
  
-Тут дополнительные комментарии (этот раздел опционален) +  * Технически, прикрепленный обработчик не обязателен - если он отсутствует, то событие-ошибка прекратит выполнение и текущего подпроцесса, и вышестоящих, вплоть до верхнего уровня процесса. Но в этом случае существенный аспект поведения процесса оказывается спрятан в подпроцессе, поэтому хорошая практика - всегда показывать обработчик ошибки. 
- +  * Если на событии-обработчике указано имя, то он будет обрабатывать только выход из подпроцесса по завершающему событию с таким именем. Таким способом можно предусмотреть свой вариант обработки для каждого бизнес-исключения. Если имя не указано, то будут обрабатываться все завершающие события-ошибки в подпроцессе.
-===== Исключения ===== +
- +
-Исключения из указанного выше правила +
 ===== Смотри также ===== ===== Смотри также =====
  
-Тут ссылки на страницы со схожим контентом (этот раздел опционален+  * Использование события-ошибки - альтернатива более простой технике [[ru:rule:check_subprocess_results | проверки результата на выходе из подпроцесса]]. К плюсу этого способа можно отнести то, что диаграмма получается более компактной, к минусу - то, что в палитру добавляется еще один элемент.
 ===== Автор(ы) ===== ===== Автор(ы) =====
  
-Тут подпись + --- //[[user:bell|Anatoly Belaychuk]] 2024-01-11 23:15//