Was ist eigentlich die „Geschäftslogik“?

115

Ich arbeite mit Webentwicklung seit 2009, als ich mit PHP anfing. Als ich zu ASP.NET gewechselt bin, habe ich viel über DDD und OOAD gehört, bei denen diese "Geschäftslogik" und "Geschäftsregeln" einen hohen Stellenwert haben. Der Punkt ist, dass sich alle Apps, die ich bis jetzt entwickelt habe, um CRUD-Operationen drehten 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 in Domänenmodellen implementiert sind, aber welche Methoden könnten diese möglicherweise sein und wo in der Anwendung könnten sie möglicherweise verwendet werden?

user1620696
quelle

Antworten:

107

CRUD ist eine Abkürzung für Create, Read, Update und Delete. Dies sind die vier grundlegenden Vorgänge, die Sie für ein Datenbanktupel 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 und 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 erstellt, gespeichert und geändert werden können. 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 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 Überweisung vornimmt
  • Der zu überweisende Geldbetrag
  • Die Nummer des Quellkontos
  • Die Zielkontonummer

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

  • Die Person, die den Antrag stellt, muss dazu befugt sein.
  • Die Transaktion muss atomar sein .
  • Für die Transaktion können Meldepflichten gegenüber der Regierung bestehen, 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 abgezogen wird, ohne dass es auf dem anderen eingeht (Geld verschwindet), oder Geld auf ein Konto eingezahlt, aber nicht von einem anderen Konto abgebucht wird (Geld erscheint magischerweise aus dem Nichts).

Bei Amazon etwas bestellen.

Was musst du wissen?

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

Was passiert nach der Bestellung?

  • Artikel werden aus Vorrat gezogen
  • Lagerbestände werden abgebucht
  • Einzelteile werden für Versand verpackt
  • Nicht vorrätige Artikel sind nachbestellt
  • Artikel, die unter die Mindestmenge fallen, werden bestellt
  • Eine Sendung oder zwei?
  • Eine Rechnung / Versandliste wird ausgedruckt und der Bestellung beigefügt

    ..usw.

Robert Harvey
quelle
5
Ich mag die Definitionen, aber in den Beispielen vermisse ich die Unterscheidung zwischen Geschäftslogik und Geschäftsregeln.
jdv-Jan de Vaan
1
OKAY. Aber warum bezeichnen Sie "Die Transaktion muss atomar sein" als Geschäftsregel? Ich höre mich für eine Geschäftsregel ein bisschen leise an.
jdv-Jan de Vaan
9
@jdv: Das überdenkst du. Würde ein Kassierer nur die Hälfte dieser Transaktion ausführen ?
Robert Harvey
1
@jdv: Zu sagen, dass die Transaktion atomar sein muss, impliziert zwei Dinge: (1) Wenn etwas die Verarbeitung der Transaktion stört, ist es möglich, alle Auswirkungen der Transaktion rückgängig zu machen, als ob sie niemals stattgefunden hätte (außer vielleicht für die Erstellung eines Fehlerprotokollberichts) oder vervollständigen Sie alles, was getan werden muss; (2) Kein Teil der Transaktion überschneidet sich mit einer anderen "atomaren" Transaktion, an der diese Konten beteiligt sind. Zum Beispiel, wenn jemand, der 1.000.000 USD auf jedem der beiden Konten hat, 500.000 USD in dem Moment, in dem die Bank gefragt wird, von einem zum anderen transferiert ...
supercat
4
Die atomare @ jdv-Transaktion ist eine grundlegende Anforderung, die sichergestellt werden muss und sich auf einen Endzustand bezieht.
Ikarus74
27

CRUD ist einfach das Erstellen, Lesen, Aktualisieren und Löschen, das eine Anwendung ausführt.

In gewisser Weise 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 überprüft oder geschlossen markieren - das ist Teil der Aufgabe von QA. Es ist also ein Code enthalten, der sicherstellt, dass jemand, dem die Rolle der Qualitätssicherung fehlt, einen Fehler nicht als geschlossen oder verifiziert markieren kann.
  • Niemand außer einem Projektmanager kann einen Fehler tatsächlich löschen .
  • Damit ein Fehler als "test me" markiert wird, muss mindestens ein Code-Commit für den Fehler vorliegen.
  • Nur ein Fehler, der sich im Status "Geschlossen" befindet, kann in den Status "Wieder öffnen" verschoben werden
  • Der dem Fehler zugewiesene Entwickler kann ihn nicht von "Codeüberprüfung" in "Codeüberprüfung abgeschlossen" verschieben.
  • QA und Entwickler können nur Fehler in Projekten sehen, denen sie zugewiesen sind.

Der Code, der das Obige implementiert, ist die Geschäftslogik der Anwendung.

Die Einschränkung von Workflows oder wer die verschiedenen Operationen in CRUD ausführen kann. Dies unterscheidet eine CRUD-App von einer anderen. Sie sind die Teile, in denen Sie das Geschäft dazu bringen müssen, tatsächlich zu sagen, wie die Anwendung funktioniert. Wie logisch es ist ... na ja, das bespricht man am besten bei einem Bier außerhalb der Hörweite des Projektleiters. 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 Business - Logik ist die Logik , die Sie in Ihr Programm schreiben , die Geschäftsregeln zu behandeln , die Sie gegeben sind.


Wenn Sie anfangen, sich mit Geschäftsregeln zu beschäftigen, ist dies in der Regel eine höhere Ebene als der eigentliche Kern oder die Geschäftslogik. Dies sind in der Regel die Dinge, die Sie von einem Business Analyst erhalten, der mit dem Geschäft arbeitet.

Betrachten Sie in diesem Beispiel ein Programm, das festlegt, 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 im Geschäft Gutschrift erteilt werden
  • Wenn die Quittung weniger als 90 Tage alt ist, schreiben Sie das Zahlungsmittel gut, mit dem die Quittung gekauft wurde (die Gutschrift wird auf der Kreditkarte gutgeschrieben, das Bargeld geht zurück an das Bargeld, die Gutschrift im Geschäft geht an das Bargeld im Geschäft) ... 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 einem Regelmodul (z. B. Windows Workflow Foundation-Regelmodul ), anstatt den Rohcode in Ihr System zu schreiben.


Stellen Sie fest, dass die Unterscheidung zwischen Logik und Regeln eine terminologische Unterscheidung ist und die ganze Nacht über diskutiert werden kann (am besten noch einmal bei einem Bier). Dies ist zwar keine ungewöhnliche Unterscheidung, obwohl die beiden ineinander übergehen können.


quelle
23

Andere Antworten sind richtig. Ein zusätzlicher Gedanke…

Geschäftslogik ist portabel

Wenn Sie ein Softwareprojekt in einer anderen Programmiersprache erneut implementieren, z. B. von Turbo Pascal nach Java , haben die alten und neuen Projekte die gleiche Geschäftslogik und Geschäftsregeln .

Die Programmiersprache wäre anders. Der Quellcode wäre völlig anders. Die Tools ( IDEs , Compiler usw.) können völlig unterschiedlich sein. Die Benutzeroberfläche ist möglicherweise komplett neu organisiert oder sieht anders aus . Die Dokumentation wäre wahrscheinlich anders. Der Zweck der beiden Projekte, die Endergebnisse der geleisteten Arbeit / erreichten Ziele, wäre jedoch derselbe.

Basil Bourque
quelle
10

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. Beispielsweise muss die Anzahl der zu kaufenden Artikel kleiner oder gleich der Anzahl der auf Lager befindlichen Artikel sein.

In einer Anwendung wird von den Geschäftsleuten angegeben, dass dies eine Geschäftsregel ist, und Sie schreiben daher 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 vorrätigen Artikel, Sie die Bestellung annehmen und dann Ihre eigene Bestellung für die Differenz plus 20% aufgeben müssen, um diese Geschäftslogik (Fluss) zu schreiben. .

CRUD holt Daten einfach in den Speicher 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 nur dann eine Steuergutschrift für Kinder erhalten können, wenn das Kind mehr als die Hälfte der Zeit bei Ihnen gelebt hat, in der es im Kalenderjahr lebte, NICHT nur mehr als 6 Monate.

jmoreno
quelle
9

Geschäftslogik oder Regeln sind alles, was sich nicht auf die Mechanik der Benutzeroberfläche bezieht (das "Programmierzeug"). Dies sind die Dinge, die Sie noch anwenden müssten, wenn Sie diese Transaktion oder was auch immer vor 100 Jahren (manuell) durchgeführt hätten. Zum Beispiel, wenn Umsatzsteuer auf einen Einkauf erhoben werden soll.

Phil Perry
quelle
1

Die "Geschäftslogik" eines Programms oder einer Anwendung ist der Teil des Codes, der tatsächlich Eingaben vornimmt (vom Benutzer, vom Betriebssystem usw.). Die "Geschäftsregeln" einer Anwendung sind in der Regel die definierten Parameter des Programms selbst (z. B. wie mit Eingaben umgegangen wird). Zumindest habe ich von vielen Leuten gehört, dass es so heißt. Sie sind sich ziemlich ähnlich, um Teile des Codes zu beschreiben.

ChrisR.
quelle