Skip to main content

0002 — Η κατάσταση της παρουσίας είναι TPH. μια μετάβαση αντικαθιστά την οντότητα

Πλαίσιο​

Μια παρουσία εκτέλεσης/backtest κινείται σε καταστάσεις (εκκρεμεί → προγραμματισμένη → έναρξη → εκτέλεση → τερματική). Μοντελοποιούμε την κατάσταση με Πίνακα ανά ιεραρχία EF Core (TPH): κάθε κατάσταση είναι υποτύπος (StartingRunInstance, RunningRunInstance, …). Η στήλη διακριτικού TPH του EF δεν μπορεί να αλλάξει σε μια υπάρχουσα σειρά.

Απόφαση​

Μια μετάβαση κατάστασης αντικαθιστά την οντότητα με μια νέα παρουσία υποτύπου παρά να μεταλλάσσει ένα πεδίο κατάστασης. Επειδή η σειρά αντικαθίσταται, το αναγνωριστικό παρουσίας αλλάζει σε όλες τις φάσεις έναρξης → εκτέλεσης → τερματικής. Το αναγνωριστικό κοντέινερ είναι σταθερό και μεταφέρεται σε μεταβάσεις. ο πράκτορας κόμβου HTTP καλύπτεται μέσω αναγνωριστικού κοντέινερ για κατάσταση/αναφορά/διακοπή/αρχεία καταγραφής.

Συνέπειες​

  • Κάθε κατάσταση είναι ένας ξεχωριστός τύπος με μόνο τα πεδία και τις μεθόδους έγκυρες σε αυτήν την κατάσταση — παράνομες μεταβάσεις και ανοησία ή πρόσβαση πεδίου είναι σφάλματα μεταγλώττισης, όχι έλεγχοι χρόνου εκτέλεσης.
  • Οι καλούντες δεν πρέπει να αποθηκεύουν ένα αναγνωριστικό παρουσίας σε μια μετάβαση. χρησιμοποιήστε το αναγνωριστικό κοντέινερ ως το σταθερό χερούλι για οτιδήποτε που εκτείνεται στις κατάστασεις.
  • Η λογική μετάβασης ζει σε InstanceTransitions. η αλλαγή αναγνωριστικού είναι σκόπιμη, όχι σφάλμα.