Client/Server-Beispielanwendung: Klassen
Die meisten Funktionen der Client/Server-Beispielanwendung sind in Klassen integriert. Auf diesen Klassen basierende Objekte werden in Reaktion auf Benutzeraktionen erstellt.
CSEngine
Wenn Sie die Anwendung ausführen, wird in Csmain.prg ein Objekt erstellt, das auf der CSEngine-Klasse in Csprocs.prg basiert:
oEngine = CREATEOBJECT('csengine')
Die CSEngine-Klasse stellt eine allgemeine Methode zum Umgebungssetup und zum Umgebungsabschluss, Dienstprogramme sowie Methoden zum Verwalten der Anwendungsfunktionen zur Verfügung.
Methode | Beschreibung |
---|---|
DropTable | Löscht eine Tabelle in der Back-End-Datenbank. |
ExecuteTempSPT | Führt SQL-Pass-Through-Befehle aus und verwaltet Fehler, die beim Pass-Through verursacht werden. |
ServerStart | Erstellt das Objekt für Geschäftsregeln, das Angestelltengehälter Gültigkeitsprüfungen unterzieht. |
ServerStop | Gibt das Objekt für Geschäftsregeln frei. |
ServerValidateRow | Unterzieht Daten mit Hilfe des Objekts für Geschäftsregeln einer Gültigkeitsprüfung. |
Informationen zu dieser und zu anderen Methoden der CSEngine-Klasse finden Sie im Code in Csprocs.prg.
OpenDBC
Nachdem der Code in Csmain.prg das oEngine-Objekt erstellt hat, erstellt er ein Objekt, das auf dem Formular OpenDBC in Sample.vcx basiert:
oStartForm = CREATEOBJECT('OpenDBC')
Das Formular OpenDBC ermöglicht Benutzern das Öffnen der Beispieldatenbank mit exklusivem oder gemeinsamem Zugriff, das Schließen der Datenbank und die Bearbeitung der Verbindung zur Back-End-Datenbank. Sie benötigen eine Verbindung zu einer Back-End-Datenbank, um die Beispieltabelle zu übertragen und auf sie als Remotesicht zuzugreifen.
Darüber hinaus ist Code vorhanden, der zum Erstellen und Anzeigen dieses Formulars im Click-Ereignis der Schaltfläche Datenbank im Formular SampleApp dient.
OpenDBC ist ein modales Formular. Wenn Sie im Formular OpenDBC auf OK klicken, wird der folgende Code ausgeführt und die Programmausführung fortgesetzt:
RELEASE THISFORM
oEngine.Start = .T.
Wurde das Formular OpenDBC in Csmain.prg erstellt, wird der folgende Code ausgeführt, wenn OpenDBC geschlossen wird. Er erstellt eine Instanz der SampleApp-Klasse aus Sample.vcx:
IF oEngine.Start
oCSApp = CREATEOBJECT('SampleApp')
oCSApp.Show
ENDIF
SampleApp
SampleApp ist das Hauptformular in der Client/Server-Beispielanwendung. Dieses Formular enthält einen Seitenrahmen mit zwei Seiten. Steuerelemente auf der ersten Seite ermöglichen Ihnen das Öffnen der Tabelle, der lokalen Sicht und der Remotesicht, das Upsizen der Tabelle, das Wiederherstellen der ursprünglichen Tabellendaten und das Umschalten zwischen Online- und Offlinesichten. Steuerelemente auf der zweiten Seite ermöglichen es Ihnen, Daten in der ausgewählten Tabelle oder Sicht anzuzeigen und zu bearbeiten.
Code im Formular SampleApp ermöglicht Zugang zu stärker verkapselten Funktionen, indem er bei Bedarf zwei weitere Objekte erstellt: Salaryrule und Conflicts.
SalaryRule
SalaryRule ist eine Klasse in einem Automatisierungsserver. Das Projekt für den Automatisierungsserver ist Bizrules.pjx; die Klasse ist in Bizrules.prg definiert:
DEFINE CLASS salaryrule AS Custom OLEPUBLIC
Code, der dem Click-Ereignis des Kontrollkästchens chkRules zugeordnet ist, ruft die StartServer-Methode von CSEngine auf. Code in der StartServer-Methode erstellt eine Instanz der SalaryRule-Klasse:
this.oServer = CREATEOBJECT('Bizrules.SalaryRule')
Weitere Informationen finden Sie unter "Implementieren von Geschäftsregeln in der Client/Server-Beispielanwendung" weiter unten in diesem Abschnitt.
Conflicts
Die Formularklasse Conflicts zeigt den aktuellen Wert, den alten Wert und geänderte Werte von Feldern in Datensätzen an, in denen ein Datenkonflikt vorliegt. Eine Instanz der Conflicts-Klasse wird vom Code, der dem Click-Ereignis der Schaltfläche cmdUpdate des Formulars SampleApp zugeordnet ist, erstellt:
frmConflicts = CREATEOBJECT('Conflicts')
frmConflicts.Show
Weitere Informationen zur Konfliktlösung finden Sie unter "Verwalten von Datenkonflikten in der Client/Server-Beispielanwendung" weiter unten in diesem Abschnitt.
Siehe auch
Lösungsbeispiele | Client/Server-Beispiel | Client/Server-Beispielanwendung: Datenbank | Datenaktualisierung in der Client/Server-Beispielanwendung | Verwalten von Datenkonflikten in der Client/Server-Beispielanwendung | Implementieren von Geschäftsregeln in die Client/Server-Beispielanwendung