2016-05-02 12 views
0

Meine App ruft eine externe Abrechnungs-API auf und erhält eine externe ID zurück, die an einen zweiten externen Dienst gesendet werden muss, um die Abrechnungsbestätigung zu überprüfen. Die externe ID wird nur in diesem Moment verwendet und hat für meine Domain keine Bedeutung. Wo ist der beste Ort, um das zu speichern?DDD: Wo bestehen Nicht-Domain-Daten?

Antwort

1

Die Tatsache, dass Sie diese Informationen beibehalten möchten, sagt mir, dass dieser Abrechnungsprozess als eine Abfolge von asynchronen Operationen auftritt, sonst müssten Sie nicht einmal die ursprüngliche Abrechnungsanforderungs-ID beibehalten.

Sie werden oft einen Prozessmanager oder eine Saga hinter der Orchestrierung eines solchen Prozesses finden, und diese haben normalerweise einen persistenten Zustand. Hier würde ich diese Informationen speichern.

+0

Verstanden, aber was soll ich tun, wenn ich eine externe ID (z. B. externe Kundennummer) habe, die bei jeder Abrechnungsanforderung verwendet werden muss? –

+0

@DavidDuarte Nun, wenn Sie einen Kunden im Abrechnungsbereich modellieren, können Sie ihn dort speichern. Wenn Ihre Subdomain nicht groß genug ist, um einen eigenen Kontext zu haben, dann denke ich, dass, um pragmatisch zu sein, Sie es einfach auf Ihren Kunden setzen und es einen Tag nennen können (wie viel Schaden wird es tun?). Sie könnten auch einen spezialisierten Dienst (außerhalb der Domäne) implementieren, der von der Anwendungsebene genutzt wird und das Speichern/Weiterleiten dieser Kunden-IDs ermöglicht. – plalx

+0

Sehr hilfreich. Danke vielmals. –

0

Beachten Sie, dass die Integration mit externen Systemen normalerweise durch zwei Objekte dargestellt und modelliert wird. Eine in Ihrer Problemdomäne (PD), die das externe System darstellt, und eine zusätzliche außerhalb des PD, die die Schnittstelle zum tatsächlichen externen System darstellt. Das externe System ist oft in einer sogenannten Systeminteraktion (SI) organisiert und in vielen Fällen ist es eine Bibliothek oder Schnittstelle, die vom Hersteller oder Dritten bereitgestellt wird.

In Ihrem Fall würde ich die externe ID (falls erforderlich) in diesem SI-Objekt pflegen und das SI-Objekt eine Nachricht zur Bestätigung senden lassen.

Das PD und das passende SI-Objekt teilen sich typischerweise eine "business" -orientierte Schnittstelle, wodurch das SI-Objekt unabhängig entwickelt werden kann. Es ist üblich, dass das PD indirekt auf das SI-Objekt zugreift, nachdem es von einer Fabrik basierend auf einigen Konfigurationsinformationen erstellt wurde.