journal
Das Journal führt eine Liste von Fdl-Änderungen an den graphbasierten Betriebsdaten. Diese Änderungen können z.B. nach einem neuen Import vom Simulator auf die jeweiligen Graphen aufgespielt werden, um den Betriebszustand wiederherzustellen.
Classes:
-
Journal–Journal von Änderungen an einem Graph
-
JournalEntry–Journal von Änderungen an einem Graphen.
-
JournalEntryGroup– -
JournalIDType–Identifikation des Journals
Journal
Journal von Änderungen an einem Graph
Journal wird zum Erfassen von Fdl-Korrekturen an den Graphdaten verwendet. Es erlaubt, Änderungen an verschiedenen Graphen unter einer Korrektur-ID zusammenzufassen.
Anhand der Korrektur-ID können Journals wiedergefunden und gelöscht werden. Es werden dann jeweils alle zu einem Ereignis gehörenden Korrekturen gelöscht.
Methods:
-
add_entry–Journaleintrag hinzufügen
-
clear–Alle Journaleinträge löschen
-
delete_entry–Journaleintrag löschen
-
replay–Journal abspielen
Source code in stskit/model/journal.py
add_entry
add_entry(id_: Hashable, entry: JournalEntry | JournalEntryGroup)
Journaleintrag hinzufügen
Parameters:
-
(id_Hashable) –Identifikation des Eintrags. Anhand der ID kann er später wieder gelöscht werden.
-
(entryJournalEntry | JournalEntryGroup) –Eintrag oder Gruppe
Source code in stskit/model/journal.py
clear
delete_entry
replay
Journal abspielen
Die Zielgraphen werden anhand des target_graph-Attributs der JournalEntry bestimmt. target_graph kann entweder einen Identifikationsschlüssel enthalten, der mittels der graph_map zugeordnet wird, oder direkt eine Graphinstanz.
Parameters:
-
(graph_mapMapping[Hashable, Graph] | None, default:None) –Ordnet den target_graph-Attributen der Einträge die Graphen zu, die verändert werden. Wird keine Zuordnung angegeben, müssen die Graphen direkt in den Einträgen angegeben sein.
Source code in stskit/model/journal.py
JournalEntry
Journal von Änderungen an einem Graphen.
Das Journal enthält Einträge von gelöschten, eingefügten und geänderten Knoten und Kanten. Die Einträge werden in Sets bzw. Dictionaries gehalten und sind nach Knoten- bzw. Kantenlabel aufgeschlüsselt.
Von gelöschten Knoten und Kanten werden nur die Labels gespeichert. Bei hinzugefügten und geänderten Knoten und Kanten werden die Knotendaten (Attribute) in Dictionaries mitgespeichert. Bei hinzugefügten sollten alle nötigen Attribute deklariert sein, bei geänderten nur die zu ändernden Attribute. Insbesondere sollten keine Defaultwerte übergeben werden!
Änderungen werden über die bereitgestellten Methoden gemeldet. Das Journal kann darauf über die Replay-Methode auf einen Graphen angewendet werden. Der vorherige Zustand wird nicht gespeichert und kann nicht wiederhergestellt werden.
Das Journal enthält zu jedem Knoten/jeder Kante maximal einen Lösch-, Einfügungs- und Änderungseintrag. Die Einträge Einfügen und Löschen wirken auf den gesamten Knoten bzw. Kante inklusive aller Attribute. Änderungen wirken auf einzelne Attribute. Die Änderungen werden gesammelt.
Der generische Typ G ist die Graphklasse, N der Knotenlabeltyp und D der Knotendatentyp, die in dem Eintrag verwendet werden können.
Methods:
-
add_edge–Kante hinzufügen
-
add_node–Knoten hinzufügen
-
change_edge–Kantenanttribute ändern
-
change_node–Knoten ändern
-
clear–Journal löschen
-
merge–Mit anderem Journal zusammenführen
-
nodes–Betroffene Knoten auflisten
-
remove_edge–Kante löschen
-
remove_node–Knoten löschen
-
replay–Journal abspielen
-
summary–Zusammenfassung von Änderungen
Source code in stskit/model/journal.py
add_edge
Kante hinzufügen
Pro Kante enthält das Journal nur einen Eintrag. Ein allfällig vorhandener Eintrag wird überschrieben.
add_node
Knoten hinzufügen
Pro Knoten enthält das Journal nur einen Eintrag. Ein allfällig vorhandener Eintrag wird überschrieben.
change_edge
Kantenanttribute ändern
Pro Kante enthält das Journal nur einen Eintrag. Die zu ändernden Attribute werden in einen allfällig existierenden Eintrag übernommen.
Vorsicht: Die Kantendaten sollten keine Attribute mit Defaultwerten enthalten!
Source code in stskit/model/journal.py
change_node
Knoten ändern
Pro Knoten enthält das Journal nur einen Eintrag. Die zu ändernden Attribute werden in einen allfällig existierenden Eintrag übernommen.
Vorsicht: Die Knotendaten sollten keine Attribute mit Defaultwerten enthalten!
Source code in stskit/model/journal.py
clear
merge
merge(other: JournalEntry)
Mit anderem Journal zusammenführen
Hat den gleichen Effekt, wie wenn die add-, change-, remove-Methoden für jedes Element aufgerufen würden.
Source code in stskit/model/journal.py
nodes
Betroffene Knoten auflisten
Source code in stskit/model/journal.py
remove_edge
remove_node
replay
Journal abspielen
Die Abspielreihenfolge ist:
- Kanten löschen. Der Knoten muss existieren, ansonsten bleibt die Änderung wirkungslos.
- Knoten löschen. Die Kante muss existieren, ansonsten bleibt die Änderung wirkungslos.
- Knoten hinzufügen. Wenn der Knoten existiert, werden die Attribute gelöscht und überschrieben.
- Kanten hinzufügen. Wenn die Kante existiert, werden die Attribute gelöscht und überschrieben.
- Knoten ändern. Der Knoten muss existieren, ansonsten bleibt die Änderung wirkungslos. Im Änderungseintrag erfasste Attribute werden überschrieben, die übrigen bleiben bestehen.
- Knoten ändern. Die Kante muss existieren, ansonsten bleibt die Änderung wirkungslos. Im Änderungseintrag erfasste Attribute werden überschrieben, die übrigen bleiben bestehen.
Returns:
-
dict[str, set[N]]–Dictionary mit Fehlermeldungen.
-
dict[str, set[N]]–Mögliche Keys: 'remove_edge', 'add_edge', 'change_edge', 'remove_node', 'add_node', 'change_node'.
-
Values(dict[str, set[N]]) –set von edge oder node Labels.
Source code in stskit/model/journal.py
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 | |
summary
Zusammenfassung von Änderungen
Listet zu jedem betroffenen Knoten die gemachten Änderungen. Die Änderungen werden als String in einem Set wiedergegeben. '.' steht für den Targetknoten, '+' für einen neuen Knoten, '-' für einen gelöschten Knoten und '*' für einen geänderten Knoten.
Source code in stskit/model/journal.py
JournalEntryGroup
Methods:
Source code in stskit/model/journal.py
nodes
summary
Zusammenfassung von Änderungen
Listet zu jedem betroffenen Knoten die gemachten Änderungen. Die Änderungen werden als String in einem Set wiedergegeben. '.' steht für den Targetknoten, '+' für einen neuen Knoten, '-' für einen geloeschten Knoten und '*' für einen geänderten Knoten.
Source code in stskit/model/journal.py
JournalIDType
flowchart TD
stskit.model.journal.JournalIDType[JournalIDType]
click stskit.model.journal.JournalIDType href "" "stskit.model.journal.JournalIDType"
Identifikation des Journals
Ein Journal wird durch Typ, Zug, Bst identifiziert.