it-swarm.com.de

Was ist wirklich die "Geschäftslogik"?

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?

125
user1620696

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.

Geld von einem Girokonto auf ein anderes überweisen

Was müssen Sie zuerst wissen (Eingabe)?

  • Die Identität der Person, die die Übertragung vornimmt
  • Der zu überweisende Geldbetrag
  • Die Kontonummer der Quellenprüfung
  • Die Kontonummer des Zielprüfkontos

Welche "Geschäftsregeln" müssen angewendet werden?

  • Die Person, die den Antrag stellt, muss dazu befugt sein.
  • Die Transaktion muss atomar sein.
  • Die Transaktion kann Meldepflichten gegenüber der Regierung haben, wenn sie einen bestimmten Betrag überschreitet

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).

Etwas bei Amazon bestellen.

Was musst du wissen?

  • Die Identität der bestellenden Person
  • Versandinformationen
  • Abrechnungsdaten
  • Zahlungsart
  • Menge und Menge jedes zu versendenden Artikels
  • Wie zu versenden (über Nacht, langsames Boot oder Super Saver)
  • Staatlicher Steuersatz

Was passiert nach der Bestellung?

  • Artikel werden aus dem Lager gezogen
  • Lagerbestände werden belastet
  • Artikel werden für den Versand verpackt
  • Nicht vorrätige Artikel sind nachbestellt
  • Artikel, die unter die Mindestmenge fallen, werden bestellt
  • Eine Sendung oder zwei?
  • Eine Rechnung/Versandliste wird gedruckt und zusammen mit der Bestellung aufgegeben

    ..usw.

112
Robert Harvey

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.

  • Ein Entwickler darf den Fehler nicht als verifiziert oder geschlossen markieren - das gehört zum Job von QA. Daher ist Code enthalten, um sicherzustellen, dass jemand, dem die Rolle der Qualitätssicherung fehlt, einen Fehler nicht als geschlossen oder verifiziert markieren kann.
  • Niemand außer einem Projektmanager kann tatsächlich einen Fehler löschen .
  • Damit ein Fehler als "Test me" markiert wird, muss mindestens ein Code-Commit für den Fehler vorhanden sein.
  • Nur ein Fehler, der sich im Status "geschlossen" befindet, kann in den Status "erneut geöffnet" verschoben werden
  • Der dem Fehler zugewiesene Entwickler kann ihn nicht von "Codeüberprüfung" in "Codeüberprüfung abgeschlossen" verschieben.
  • Qualitätssicherung und Entwickler können nur Fehler in Projekten sehen, denen sie zugewiesen sind.

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.

  • Wenn die Quittung mindestens 90 Tage alt ist, kann nur eine Gutschrift im Geschäft ausgestellt werden
  • Wenn die Quittung weniger als 90 Tage alt ist, schreiben Sie das Angebot gut, mit dem die Quittung gekauft wurde (Guthaben geht auf die Kreditkarte zurück, Bargeld geht auf Bargeld zurück, Guthaben im Geschäft geht auf Guthaben im Geschäft zurück) ... es sei denn war ein Scheck, in welchem ​​Fall Bargeld verwenden.

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.

28
user40980

Andere Antworten sind richtig. Ein weiterer Gedanke…

Geschäftslogik ist portabel

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.

25
Basil Bourque

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.

10
jmoreno

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.

9
Phil Perry

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.

1
ChrisR.