Echtzeitsystem oder nicht, das Erinnerungsmuster ist ein ausgezeichneter Ausgangspunkt.
Das Erinnerungsmuster ist ein Software-Entwurfsmuster, mit dem ein Objekt in seinen vorherigen Zustand zurückversetzt werden kann (Rückgängigmachen per Rollback).
Das Erinnerungsmuster wird mit drei Objekten implementiert: dem Urheber, einem Hausmeister und einem Erinnerungsstück.
Der Urheber ist ein Objekt, das einen internen Zustand hat.
Der Hausmeister wird dem Urheber etwas antun, möchte aber in der Lage sein, die Änderung rückgängig zu machen. Der Hausmeister bittet den Urheber zunächst um ein Erinnerungsobjekt. Dann führt es die Operation (oder Abfolge von Operationen) aus, die es ausführen wollte.
Um vor den Operationen in den Status zurückzukehren, wird das Erinnerungsobjekt an den Absender zurückgegeben.
Das Erinnerungsobjekt selbst ist ein undurchsichtiges Objekt (eines, das der Hausmeister nicht ändern kann oder sollte).
Bei Verwendung dieses Musters sollte darauf geachtet werden, dass der Urheber andere Objekte oder Ressourcen ändert - das Erinnerungsmuster wird für ein einzelnes Objekt ausgeführt.
Ich habe den Wikipedia-Artikel ein wenig aufgelöst, um mich auf einige Punkte zu konzentrieren.
In Ihrem Szenario wird der Urheber Ihr primärer Anwendungscode sein, höchstwahrscheinlich an dem Punkt, an dem Jobs registriert werden und mit der Verarbeitung beginnen.
Der Hausmeister ist das, was Sie erstellen müssen, und kann eine Art Protokollierungssystem oder ein anderer Datenspeicher sein.
Das Andenken wird die relevante Information sein, die rückgängig gemacht und / oder wiederholt werden muss. Ich vermute, dass dies wie eine Jobbeschreibung aussieht, die wieder in die Verarbeitungswarteschlange gestellt werden kann.
Wenn Sie die vorhandenen Änderungen aus dem Job J1mit einer Datenbanktransaktion abschließen können, werden Ihre Rollback-Probleme behoben ( all the action taken so far must be reverted). Wenn ein Transaktions-Rollback auftritt, lösen Sie einen Anruf beim Caretaker aus, um den Job erneut in die Warteschlange zu stellen J1.
Eine Sache, die Sie beachten sollten, ist die letzte Warnung in der Wikipedia-Zusammenfassung. Sie müssen sicherstellen, dass die Änderungen atomar sind und dass sie als zusammenhängende Menge angewendet oder zurückgesetzt werden können.
Ich bin mir nicht sicher, ob eine Echtzeitumgebung einen großen Einfluss darauf hat, wie Sie das Erinnerungsmuster implementieren. Wenn es Fristen für Aktivitäten gibt, müssen Sie möglicherweise einige der Änderungen profilieren, um sicherzustellen, dass das System in angemessener Zeit reagiert. Ich denke, ich würde zuerst die Funktionalität implementieren und dann überprüfen, ob Sie Ihre anderen Anwendungsanforderungen erfüllen. Ich sehe nicht voraus, dass Sie auf etwas stoßen, das das, was Sie bisher beschrieben haben, ungültig machen würde.