> 3. Чем отличается конечное событие "Cancel end" и "Terminate end" от просто "END"?
> > Просто конец - это нормальный конец, остальные же концы получаются в результате исключений (либо отмены либо ошибки)
Дело не в том, в результате чего они получаются - дело в том какие последствия они вызывают:
- Cancel End вызовет соответствующий обработчик в вызывающем процессе. Кроме того, Cancel End - асинхронное событие.
- Compensation вызывает обработчики ко всем activity в рамках прерываемого процесса, для которых предусмотрен соответствующий обработчик.
- Terminate End принудительно завершает все потоки в данном процессе/подпроцессе. Если у вас до этого процесс распараллелился, то при обычном end-е одного из потоков другой будет продолжать исполнение, а при terminate он помрет.
Первые два представляют больше теоретический интерес, а третий - вполне рабочий event.
> 4. Правильно ли я построил высокоуровневую модель бизнес процессов? Если нет - то как надо?
Формально правильно, по существу - нет. Процессы столь выскокого уровня не бывают синхронными. Производство не ждет, пока отдел продаж что-то продаст, и не начинает работу после продажи. В реальности отдел продаж формирует производственные заказы и ждет их выполнения. Процесс производства с некоторой периодичностью сканирует заказы и выполняет их. То есть у вас должен быть не один, а несколько асинхронно исполняющихся и обменивающихся между собой сообщениями процессов. Общее правило: Уровень сквозного процесса моделируется не оркестровкой, а хореографией!
> > Нет. Вообще любая Д БПМН должна иметь начало и конец.
Неверно. Процесс может не иметь ни начала, ни конца. Не может иметь только начало или только конец.
> > От дорожки не может идти message flow.
Неверно. На рисунке изображена не "дорожка" (lane), а "бассейн" (pool). А от него / к нему только message flow и могут идти.