bo4e / BO4E-python

Python Library that Implements the BO4E Standard
MIT License
13 stars 5 forks source link

Fachliche Pflichtfelder komplett streichen #465

Closed hf-kklein closed 1 year ago

hf-kklein commented 1 year ago

Wir verwenden BO4E als Grundlage für zahlreiche Anwendungen. Wir stoßen oft auf das Problem, dass zwar die Datenstruktur als solche für unseren Anwendungsfall nutzbar ist, aber die Pflichtfelder nicht unseren Anforderungen entsprechen. D.h. die Pflichtfelder sind verschiedene je Anwendung und Anwendungsfall.

Ich schlage deswegen vor, dass wir das Datenmodell so gestalten, dass wir so wenig Pflichtfelder wie möglich vorschreiben und vllt sogar so radikal sind, dass außer dem BoTyp gar keine Pflichtfelder mehr existieren.

Letztlich würden wir uns damit hin zu einer "Separation of Concerns" entwickeln, d.h. dass die Validierung der Business Objects und deren Struktur/Serialisierung komplett voneinander getrennt sind. Wir wollen ein universelles, wenig restriktives Datenformat haben und die darauf aufbauende Business Logik aus der sich Pflichtfelder ableiten lassen den das Datenmodell nutzenden Anwendungen überlassen.

snsttr commented 1 year ago

Die Pflichtfelder sollten eigentlich immer so definiert sein, dass es sich wirklich um notwendige Angaben handelt, damit ein Objekt in der realen Energiewirtschaft existieren kann bzw. Sinn macht. Ich gebe aber zu, dass das nicht immer der Fall ist. Aus technischer Sicht verstehe ich deine Argumentation auch. Hast du Beispiele, die bei euch für Probleme sorgen?

Es stellt sich natürlich auch die Frage, was die minimal notwendigen Pflichtfelder wären. Auch hier wären Vorschläge hilfreich, damit wir uns der Antwort nähern können.

hf-kklein commented 1 year ago

Wir kamen heute zum Schluss, dass der einzig sinnvolle Weg, das Problem zu lösen, ist, die fachlichen Pflichtfelder komplett zu entfernen. D.h. dass alle Felder nullable werden und es keine (fachlichen) Pflichtfelder mehr gibt. Lediglich technische Pflichtfelder (z.B. boTyp) sollen erhalten bleiben.

Hintergrund: Pflichtfelder sind letztlich immer anwendungsspezifisch. Zu jedem heutigen Pflichtfeld lässt sich ein Anwendungsfall denken, in dem es genau nicht notwendig ist (und wir kennen viele dieser Fälle). Umgekehrt gibt es heute schon anwendungsspezifische Pflichtfelder, die im Standard keine Pflichtfelder sind.