Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
ru:rule:business_exception_error [2024-01-11 23:07] – [✔ Как надо] Anatoly Belaychuk | ru:rule:business_exception_error [2024-02-07 14:51] (текущий) – [Событие-ошибка применяется для моделирования бизнес-исключений] Anatoly Belaychuk |
---|
====== 0DRAFT Событием-ошибкой можно моделировать бизнес-исключения ====== | ====== Для моделирования бизнес-исключений можно использовать событие-ошибку ====== |
| |
{{tag>событие событие-ошибка прикрепленный_обработчик конечное_событие подпроцесс}} | {{tag>событие событие-ошибка прикрепленный_обработчик конечное_событие подпроцесс}} |
| |
Нормальное (желательное) завершение процесса покажите простым конечным событием, а бизнес-исключение (нежелательный вариант) - событием-ошибкой. На верхнем уровне воспользуйтесь прикрепленным обработчиком. | Нормальное (или желательное) завершение подпроцесса изобразите простым конечным событием, а бизнес-исключение (нежелательный вариант) - событием-ошибкой. На верхнем уровне воспользуйтесь прикрепленным обработчиком. |
===== ✔ Как надо ===== | ===== ✔ Как надо ===== |
| |
===== ✘ Как НЕ надо ===== | ===== ✘ Как НЕ надо ===== |
| |
Тут антипаттерны (диаграммы) | <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="<mxfile host="embed.diagrams.net" modified="2024-01-11T20:08:34.985Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" etag="Ela93dsheoAfuaTLw7zl" version="22.1.18" type="embed"><diagram id="Oj1wgXiuPFaf_WvJZpv8" name="Страница — 1">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==</diagram></mxfile>"><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// |