Ich arbeite seit 2009 mit Webentwicklung, als ich mit PHP anfing. Als ich zu ASP.NET wechselte, habe ich viel über DDD und OOAD gehört, wo dieser "Geschäftslogik" und den "Geschäftsregeln" viel Aufmerksamkeit geschenkt wird. Der Punkt ist, dass sich alle Apps, die ich bisher entwickelt habe, ausschließlich mit CRUD-Operationen befassten und ich diese Dinge in der Praxis noch nie gesehen habe.
Ich kann mir einfach nicht vorstellen, was diese Dinge in der Praxis wirklich sein können. Was ist diese Geschäftslogik wirklich und wie passt sie in eine App? Ich weiß, dass diese Methoden als Methoden in Domänenmodellen implementiert sind, aber was könnten diese Methoden möglicherweise sein und wo in der Anwendung könnten sie möglicherweise verwendet werden?
CRUD ist ein Akronym, das für Erstellen, Lesen, Aktualisieren und Löschen steht. Dies sind die vier grundlegenden Vorgänge, die Sie für ein Datenbank-Tupel ausführen können. Geschäftsanwendungen bieten jedoch immer mehr als das Erstellen, Lesen, Aktualisieren und Löschen von Datenbankdatensätzen.
Beginnen wir mit einigen grundlegenden Definitionen und schauen uns dann einige Beispiele an, um zu sehen, wie diese Definitionen den Beispielen zugeordnet werden und wie sie der tatsächlichen Software zugeordnet werden.
Geschäftslogik oder Domänenlogik ist der Teil des Programms, der die realen Geschäftsregeln codiert, die bestimmen, wie Daten können erstellt, gespeichert und geändert werden. Es schreibt vor, wie Geschäftsobjekte miteinander interagieren, und erzwingt die Routen und Methoden, mit denen auf Geschäftsobjekte zugegriffen und diese aktualisiert werden.
Geschäftsregeln beschreiben die Vorgänge, Definitionen und Einschränkungen, die für eine Organisation gelten. Die Operationen bilden zusammen einen Prozess ; Jedes Unternehmen verwendet diese Prozesse, um Systeme zu bilden, die Dinge erledigen.
Lassen Sie uns nun mit einigen Beispielen arbeiten.
Was müssen Sie zuerst wissen (Eingabe)?
Welche "Geschäftsregeln" müssen angewendet werden?
Mit "atomar" meine ich, dass die Transaktion vollständig erfolgreich sein muss oder vollständig fehlschlagen muss. Sie können keine Kontotransaktionen durchführen, bei denen Geld von einem Konto abgebucht wird, ohne auf dem anderen anzukommen (Geld verschwindet) oder Geld auf ein Konto eingezahlt, aber nicht von einem anderen Konto abgebucht wird (Geld erscheint auf magische Weise aus dem Nichts).
Was musst du wissen?
Was passiert nach der Bestellung?
Eine Rechnung/Versandliste wird gedruckt und zusammen mit der Bestellung aufgegeben
..usw.
CRUD ist einfach das Erstellen, Lesen, Aktualisieren und Löschen, das eine Anwendung ausführt.
Bis zu einem gewissen Grad ist ein Bug-Tracker auch eine CRUD-App. Erstellen Sie Fehler, lesen Sie die Fehler, zeigen Sie sie an, aktualisieren Sie die Fehler und löschen Sie sie möglicherweise.
Ein Bug-Tracker bietet jedoch mehr als nur CRUD.
Der Code, der das oben Gesagte implementiert, ist die Geschäftslogik der Anwendung.
Die Einschränkung von Workflows oder wer die verschiedenen Operationen in CRUD ausführen kann. Dies ist es, was eine CRUD-App von einer anderen unterscheidet. Dies sind die Teile, in denen das Unternehmen tatsächlich sagen muss , wie die Anwendung funktioniert. Wie logisch es ist ... nun, das wird am besten bei einem Bier aus der Hörweite des Projektmanagers besprochen. Aber genau das ist Geschäftslogik.
Sicher, es ist möglich, eine "reine" CRUD-App zu schreiben, in der es keine Rollen gibt. Alles kann geändert und angezeigt werden - aber dies ist eher die Ausnahme als die Regel.
Die Geschäftslogik ist die Logik, die Sie in Ihr Programm schreiben, um die Geschäftsregeln zu handhaben, die Sie erhalten.
Wenn Sie anfangen, sich mit Geschäftsregeln zu befassen, liegt diese tendenziell auf einer höheren Ebene als Rohöl selbst oder Geschäftslogik. Dies sind in der Regel die Dinge, die Sie von einem Geschäftsanalysten erhalten, der mit dem Geschäft zusammenarbeitet.
Stellen Sie sich in diesem Beispiel ein Programm vor, das bestimmt, wie die Rückgabe eines Artikels an einem Rückgabeschalter in einem Geschäft behandelt wird.
Das sind einige Geschäftsregeln. Sie sprechen nicht mit dem CRUD-Teil der Anwendung.
Wenn Sie mit Geschäftsregeln arbeiten, finden Sie diese häufig in einer Regelengine (z. B. Windows Workflow Foundation Rules Engine ), anstatt den Rohcode in Ihr System zu schreiben.
Stellen Sie fest, dass die Unterscheidung zwischen Logik und Regeln terminologisch ist und die ganze Nacht über diskutiert werden kann (am besten wieder bei einem Bier). Dies ist zwar keine ungewöhnliche Unterscheidung, obwohl die beiden ineinander übergehen können.
Andere Antworten sind richtig. Ein weiterer Gedanke…
Wenn Sie ein Softwareprojekt erneut implementieren in einer anderen Programmiersprache ausführen möchten, sagen Sie, Sie wechseln von Turbo Pascal zu Java , Geschäftslogik & Geschäftsregeln ist das, was das alte und das neue Projekt gemeinsam haben würden .
Die Programmiersprache wäre anders. Das Quellcode wäre völlig anders. Die Tools ( IDE s, Compiler und dergleichen) können völlig unterschiedlich sein. Das Benutzeroberfläche ist möglicherweise komplett neu organisiert oder hat ein anderes Look-and-Feel . Das Dokumentation wäre wahrscheinlich anders. Der Zweck der beiden Projekte, die Endergebnisse der durchgeführten Arbeiten/erreichten Ziele, wäre jedoch der gleiche.
Die Geschäftslogik besteht im Wesentlichen aus zwei großen Kategorien: Validierung und Ablauf. Die Geschäftslogik besagt, dass Menge 1 größer oder gleich Menge 2 sein muss - zum Beispiel muss die Anzahl der zu kaufenden Artikel kleiner oder gleich der Anzahl der Artikel auf Lager sein.
In einer Anwendung sagen die Geschäftsleute, dass dies eine Geschäftsregel ist, und Sie schreiben Code, um diese Geschäftslogik durchzusetzen (Validierung). Eine andere Anwendung sagt, dass, wenn die Anzahl der bestellten Artikel größer ist als die Anzahl der Artikel auf Lager, Sie die Bestellung annehmen und dann Ihre eigene Bestellung für die Differenz plus 20% aufgeben müssen, und Sie diese Geschäftslogik (Ablauf) schreiben. .
CRUD speichert Daten einfach ein und aus und ändert sie. Die Geschäftslogik bestimmt, was Sie mit diesen Daten tun und welche Transformationen Sie daran vornehmen dürfen. Ist Ihr Kunde in Zukunft unter 5 Jahren aus einem bestimmten geografischen Gebiet geboren (Ermäßigungen für Einheimische/Besucher)? CRUD ist einfach, da es komplexer ist, zu wissen, dass Sie eine Steuergutschrift für Kinder nur erhalten können, wenn das Kind mehr als die Hälfte der Zeit, in der es im Kalenderjahr lebte, NICHT nur länger als 6 Monate, bei Ihnen lebte.
Geschäftslogik oder -regeln sind alles, was nicht mit der Mechanik der Benutzeroberfläche (dem "Programmiermaterial") zu tun hat. Dies sind die Dinge, die Sie noch anwenden müssten, wenn Sie diese Transaktion oder was auch immer vor 100 Jahren (manuell) durchführen würden. Zum Beispiel, wenn auf einen Kauf Umsatzsteuer angewendet werden soll.
Die "Geschäftslogik" eines Programms oder einer Anwendung ist der Teil des Codes, der tatsächlich Dinge mit Eingaben erledigt (vom Benutzer, vom Betriebssystem usw.). Die "Geschäftsregeln" einer Anwendung sind normalerweise die definierten Parameter des Programms selbst (z. B. wie mit Eingaben umgegangen wird). Zumindest habe ich so gehört, dass es von vielen Menschen erwähnt wurde. Sie sind ziemlich ähnliche Begriffe, um Teile des Codes zu beschreiben.