Design - Wie gehe ich mit Veranstaltungen auf persistente Objekte, wie sie ihren Zustand ändern?

StackOverflow https://stackoverflow.com/questions/823763

  •  05-07-2019
  •  | 
  •  

Frage

Vielleicht eine dumme Frage, aber ich bin ein Anfänger-Entwickler.

Nehmen wir an, in einer datengesteuerten CRM'ish Anwendung habe ich einen Kundentyp, der durch eine Reihe von Phasen gehen kann - das heißt Phasen. 1 - 5

Als Kunde Phasenänderungen - Ereignisse ausgelöst werden sollen. Beispiel -. Als Kunde Phase eintritt 3 von Phase 2 wird eine E-Mail gesendet wird, werden einige Listen aktualisiert und einige Berechnungen durchgeführt

Ich stelle mir vor, dass ein Kunde Zustand ändert das Ergebnis eines Benutzers der Anwendung manuell die Kunden durch einige grafische Oberfläche zu aktualisieren sein könnte.

Also ich frage mich - soll ich damit umgehen mit der Behauptung, dass es nur ein Weg, um den Phasenzustand des Kunden zu aktualisieren, und dann sicherzustellen, dass immer dann, wenn die Aktion abgeschlossen ist, wird eine Liste von Aktionen durchgeführt

In meinem Kopf (und Szenario) würde dies einen Kunden aus einer relationalen Datenbank bedeutet das Abrufen, ein Phasenfeld zu aktualisieren, persistierende die Kunden wieder nach unten, und dann reagiert immer auf diese Aktion durch abzuzufeuern, was Aktionen als abhängiges registriert ist auf dem insbesondere Phasenänderung. Aber ich bin nicht sicher, dies wäre klug, wenn ich eine Batch-Phasenänderung von 10.000 Kunden machen will.

Alle Gedanken überhaupt dazu? Ich bin wirklich nur für jede Art von Eingabe suchen - davon ausgehen, dass ich völlig ahnungslos bin

.
War es hilfreich?

Lösung

Ich denke, das ist OK separate Funktionen zu haben, eine für einen einzelnen Kunden Phasenwechsel und eine andere für einen Chargenwechsel. Letzteres würde oder nicht, die zusätzliche Aktionen durchführt, je nach Bedarf. Es könnte auch tut es auf eine effizientere Art und Weise, oder auch die Aktionen einreihen, oder einen Teil von ihnen, wie E-Mail, für die Hintergrundverarbeitung, wenn die zusätzlichen Maßnahmen langwierig sind und es ist erforderlich, die Phasenänderung in angemessener Zeit abzuschließen Art und Weise.

Ein weiteres Problem erscheint, wenn die Phasenänderung aufgrund der Entstehung von einigen, möglicherweise komplexen Bedingungen, anstatt aufgrund einer manuellen Phasenänderung. Dann sollten Sie eine Bedingungsprüfung irgendwo in Ihrer Business-Logik Haken, niedrig genug, um alle Aktualisierungsvorgänge zu fangen, die Phase zu beeinflussen. Aber wie Sie schrieb, das ist nicht der Fall, da die Phasenänderung in Ihrer Situation manuell ausgegeben wird.

Andere Tipps

In vielen Fällen ist es besser, eine explizite Funktion in Ihnen Business-Logik haben, um die Phase zu ändern. Dies sollte der einzige Weg sein, um die Phase zu ändern, und es ist eindeutig. Wie „ChangeCustomerPhase (Customer Kunde, Phase newPhase). Dies macht es viel einfacher zu handhaben, dass Änderungen zu verfolgen, wenn alles frei verändert werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top