G
Gelöschtes Mitglied 5909
Gast
Da ich einen kleinen Knoten im Kopf habe frage ich hier mal nach 
Und zwar habe ich zwei recht ähnliche Objekte, die einen Status haben.
Ein persistentes Objekt und ein Transferobjekt.
Das Transferobjekt kommt über einen REST Service rein,
das Persistent Objekt ist das ggf. vorhandene pendent in der DB.
Nun möchte ich vor und nach jedem Statuswechsel bestimmte aktionen auslösen.
Als erstes habe ich an das State Pattern gedacht, aber ich habe kein verhalten,
dass den Status verändert, sondern ich habe einen Status wechsel,
dass ein verhalten auslöst. Also genau umgekehrt.
Folgendes möchte ich erreichen:
Bevor das Transferobjekt gespeichert wird (und in ein Persistent Objekt gemapped wird),
will ich validierungen durchführen. Danach möchte ich z.B. eine Email verschicken.
Was ich nicht machen kann:
- Das Transferobjekt verändern (interfaces implementieren etc.)
- Die Transferobjekte sind generiert und werden immer neu generiert
- Im Persistent Objekt kann ich nicht das State enum verwenden
Was ich machen will:
- StateListener registrieren (aufruf vor und nach dem übergang)
- Den vorgang ggf. abbrechen (validierung fehlgeschlagen,...)
- das ganze erweiterbar halten (neue states und transitions)
Was ich vermeiden will:
Was ich nicht nutzen will:
- BPM Engine oder vergleichbar, da zu komplex, kostet zu viel performance
(da ich primär für die Daten keine SQL DB verwende)
Irgendjemand eine brauchbare Idee?
Und zwar habe ich zwei recht ähnliche Objekte, die einen Status haben.
Ein persistentes Objekt und ein Transferobjekt.
Java:
class Persistent {
String state;
//...
}
enum state {
NEW, EDIT, PRODUCTION
}
class Transfer {
State state;
//...
}
Das Transferobjekt kommt über einen REST Service rein,
das Persistent Objekt ist das ggf. vorhandene pendent in der DB.
Nun möchte ich vor und nach jedem Statuswechsel bestimmte aktionen auslösen.
Als erstes habe ich an das State Pattern gedacht, aber ich habe kein verhalten,
dass den Status verändert, sondern ich habe einen Status wechsel,
dass ein verhalten auslöst. Also genau umgekehrt.
Folgendes möchte ich erreichen:
Bevor das Transferobjekt gespeichert wird (und in ein Persistent Objekt gemapped wird),
will ich validierungen durchführen. Danach möchte ich z.B. eine Email verschicken.
Was ich nicht machen kann:
- Das Transferobjekt verändern (interfaces implementieren etc.)
- Die Transferobjekte sind generiert und werden immer neu generiert
- Im Persistent Objekt kann ich nicht das State enum verwenden
Was ich machen will:
- StateListener registrieren (aufruf vor und nach dem übergang)
- Den vorgang ggf. abbrechen (validierung fehlgeschlagen,...)
- das ganze erweiterbar halten (neue states und transitions)
Was ich vermeiden will:
Java:
if (oldstate == ... && newstate == ...)
else if (oldstate == ... && newstate == ...)
else if (oldstate == ... && newstate == ...)
else if (oldstate == ... && newstate == ...)
else if (oldstate == ... && newstate == ...)
else if (oldstate == ... && newstate == ...)
Was ich nicht nutzen will:
- BPM Engine oder vergleichbar, da zu komplex, kostet zu viel performance
(da ich primär für die Daten keine SQL DB verwende)
Irgendjemand eine brauchbare Idee?