Freigeben über


Implementieren von Geschäftsregeln in die Client/Server-Beispielanwendung

Die Client/Server-Beispielanwendung verwendet einen benutzerdefinierten Automatisierungsserver, um Geschäftsregeln durchzusetzen. Diese Architektur, als dreistufiges Modell bekannt, ermöglicht die Implementierung von Geschäftsregeln in der mittleren Schicht, getrennt von den aktuellen Daten und der Clientschnittstelle. Mehrere Anwendungen und Datenbanken können denselben Satz von Geschäftsregeln verwenden, die an einer einzigen Position codiert und verwaltet werden.

Der benutzerdefinierte Automatisierungsserver in der Client/Server-Beispielanwendung heißt Bizrules. Das Projekt für den Automatisierungsserver ist Bizrules.pjx; die Klasse wird in Bizrules.prg definiert:

DEFINE CLASS SalaryRule AS Custom OLEPUBLIC

Der Code in der CSEngine-Klasse stellt eine Schnittstelle zu dem Geschäftsobjekt mit Hilfe der Methoden ServerStart, ServerStop, ServerIsStarted und ServerValidateRow zur Verfügung.

Die ServerStart-Methode erzeugt eine Instanz der SalaryRule-Klasse. Die ServerValidateRow-Methode übergibt dem Server Werte zur Überprüfung:

lcError = THIS.oServer.Validate(m.cTitle, m.nSalary, m.dBirth, m.dHire, m.cCountry)

Die Validate-Methode der SalaryRule-Klasse setzt einen gemeinsamen Satz von Geschäftsregeln durch und gibt eine Liste von Fehlermeldungen zurück, eine für jede Regel, die verletzt wurde. Beispielsweise stellt der folgende Codeabschnitt sicher, dass das Gehalt innerhalb eines Bereichs liegt, der in der Tabelle Bizrules.dbf angegeben wird.

PROCEDURE validate
PARAMETERS lcTitle, lnSalary, ldBirth, ldHire, lcCountry

SELECT bizrules
LOCATE FOR lcTitle = ALLTRIM(title)
IF EOF()
   * Display error message
ELSE
   IF !BETWEEN(lnSalary, min_salary, max_salary)
      * Display error message
   ENDIF
ENDIF

Siehe auch

Lösungsbeispiele | Client/Server-Beispiel | Client/Server-Beispielanwendung: Klassen | Client/Server-Beispielanwendung: Datenbank | Datenaktualisierung in der Client/Server-Beispielanwendung | Verwalten von Datenkonflikten in der Client/Server-Beispielanwendung