Ugrás a fő tartalomhoz

0002 — Az instancia-állapot TPH; az átmenet helyettesíti az entitást

Kontextus​

Egy futtatási/backtest-instancia végigmegy az állapotokon (pending → scheduled → starting → running → terminal). Az állapotot az EF Core Table-Per-Hierarchy (TPH) modellel reprezentáljuk: minden állapot egy altípus (StartingRunInstance, RunningRunInstance, …). Az EF TPH megkülönböztetési oszlopa nem változhat meg egy meglévő sorban.

Döntés​

Az állapot-átmenet helyettesíti az entitást egy új altípusú instanciával, ahelyett, hogy egy státusz-mezőt módosítana. Mivel a sor helyettesítésre kerül, az instancia azonosítója megváltozik az starting → running → terminal átmenetekben. A konténer azonosítója stabil és átkerül az átmeneteken; a HTTP node-ügynök a konténer azonosítójával indexelve van az állapot/jelentés/leállítás/naplók számára.

Következmények​

  • Minden állapot egy megkülönböztetett típus, csak az adott állapotban érvényes mezőkkel és metódusokkal — az illegális átmenetek és értelmetlen mezőhozzáférések fordítási hibák, nem futásidejű ellenőrzések.
  • A hívónak nem szabad az instancia azonosítóját az átmenet között gyorstárolnia; a konténer azonosítóját kell stabil fogantyúnak használnia az állapotokon átnyúló műveleteknél.
  • Az átmenet-logika az InstanceTransitions-ben található; az azonosító-változás szándékos, nem hiba.