0002 — Стање инстанце је TPH; транзиција замењује јединицу
Контекст
Инстанца покретања/тестирања прелази кроз стања (pending → scheduled → starting → running → terminal).
Моделујемо стање са EF Core Table-Per-Hierarchy (TPH): свако стање је подтип
(StartingRunInstance, RunningRunInstance, …). TPH дискриминаторни колона EF-а не може се променити на
постојећем реду.
Одлука
Транзиција стања замењује јединицу новом инстанцом подтипа него мутирајући поље статуса. Пошто је ред замењен, ID инстанце се мења кроз starting → running → terminal. ID контејнера је стабилан и преноси се кроз транзиције; HTTP агент за чвор је кључан по ID контејнера за статус/извештај/заустављање/логове.
Последице
- Свако стање је засебна врста само са пољима и методама валидним у том стању — незаконите транзиције и бесмислени приступи пољима су грешке компајлирања, не провере у извршавању.
- Позивачи морају да не кеширају ID инстанце кроз транзицију; користе ID контејнера као стабилну дршку за било шта што прелази стања.
- Логика транзиције живи у
InstanceTransitions; промена ID-а је намерна, не грешка.