0002 — Η κατάσταση της παρουσίας είναι TPH. μια μετάβαση αντικαθιστά την οντότητα
Πλαίσιο
Μια παρουσία εκτέλεσης/backtest κινείται σε καταστάσεις (εκκρεμεί → προγραμματισμένη → έναρξη → εκτέλεση → τερματική).
Μοντελοποιούμε την κατάσταση με Πίνακα ανά ιεραρχία EF Core (TPH): κάθε κατάσταση είναι υποτύπος
(StartingRunInstance, RunningRunInstance, …). Η στήλη διακριτικού TPH του EF δεν μπορεί να αλλάξει σε
μια υπάρχουσα σειρά.
Απόφαση
Μια μετάβαση κατάστασης αντικαθιστά την οντότητα με μια νέα παρουσία υποτύπου παρά να μεταλλάσσει ένα πεδίο κατάστασης. Επειδή η σειρά αντικαθίσταται, το αναγνωριστικό παρουσίας αλλάζει σε όλες τις φάσεις έναρξης → εκτέλεσης → τερματικής. Το αναγνωριστικό κοντέινερ είναι σταθερό και μεταφέρεται σε μεταβάσεις. ο πράκτορας κόμβου HTTP καλύπτεται μέσω αναγνωριστικού κοντέινερ για κατάσταση/αναφορά/διακοπή/αρχεία καταγραφής.
Συνέπειες
- Κάθε κατάσταση είναι ένας ξεχωριστός τύπος με μόνο τα πεδία και τις μεθόδους έγκυρες σε αυτήν την κατάσταση — παράνομες μεταβάσεις και ανοησία ή πρόσβαση πεδίου είναι σφάλματα μεταγλώττισης, όχι έλεγχοι χρόνου εκτέλεσης.
- Οι καλούντες δεν πρέπει να αποθηκεύουν ένα αναγνωριστικό παρουσίας σε μια μετάβαση. χρησιμοποιήστε το αναγνωριστικό κοντέινερ ως το σταθερό χερούλι για οτιδήποτε που εκτείνεται στις κατάστασεις.
- Η λογική μετάβασης ζει σε
InstanceTransitions. η αλλαγή αναγνωριστικού είναι σκόπιμη, όχι σφάλμα.