Пређи на главни садржај

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-а је намерна, не грешка.