Erstellen eines benutzerdefinierten Fernverbindungsdialogs

Möchten Sie einen individuellen 4D Verbindungsdialog erstellen? Möchten Sie Ihre Client-Anwendung mit verschiedenen Servern verbinden? Dies sind zwei Szenarien, die Sie mit 4D v18 bewältigen können. Dieser Blog-Beitrag ist für Sie, wenn Sie einen benutzerdefinierten Remote-Verbindungsdialog erstellen und diesen mit zusammengeführten 4D Servern verbinden möchten. Lesen Sie weiter!

Warum sollte ich meinen eigenen Verbindungsdialog schreiben?

Es gibt mehrere Anwendungsfälle für die Modifizierung des in 4D eingebauten Verbindungsdialogs:

  • KUNDENANPASSUNG

Sie möchten den Standarddialog für Fernverbindungen zum Server anpassen.

  • MEHRERE NIEDERLASSUNGEN

Wenn Sie Ihre Anwendung einsetzen und mehrere unterschiedliche Datenbanken erstellen. Zum Beispiel eine andere Datenbank für jede Niederlassung eines Konzerns. In der Verbindungsdatenbank können Sie verwalten, mit welchen Servern und Datenbanken sich Benutzer verbinden können, und ihnen erlauben, sich direkt zu verbinden.

  • ARCHIVDATENBANK

Eine weitere Möglichkeit, ein benutzerdefiniertes Dialogfeld zu verwenden, besteht darin, festzulegen, auf welche archivierte Geschäftsjahresdatenbank die Benutzer zugreifen können.

  • ANWENDUNGSPORTAL

Wenn Sie mehrere Produkte einsetzen und möchten, dass Ihre Benutzer eine einzige „Portal“-Anwendung verwenden, um sich mit jedem Produkt zu verbinden.

Anwendungsfall

Ein Softwarehersteller verfügt über eine Serverfarm, die in der Cloud gehostet wird, wobei jeder Server einer bestimmten Geschäftsanforderung entspricht. Zuvor wurden so viele Remote-Anwendungen bereitgestellt, wie Benutzer auf die Server zugreifen konnten. Jetzt kann er eine einzige Remote-Anwendung für alle Server mit einer „Verzeichnis“-Datenbank bereitstellen. Über HTTP-Anfragen oder Remote-Datenspeicher sendet jeder Server seine Status- und Verbindungsinformationen an den „Verzeichnis“-Server. Die verbundene zusammengeführte Anwendung kann dann die Verzeichnisdatenbank abfragen, eine Liste der verfügbaren Server anzeigen und eine Verbindung zu einem Server herstellen.

Wie macht man das?

VERBINDUNGSDATENBANK ERSTELLEN

Zunächst müssen Sie eine Verbindungsdatenbank erstellen, die Ihren eigenen Verbindungsdialog enthält. Der Befehl OPEN DATABASE wurde erweitert, um die Verbindung mit einem 4D Server zu ermöglichen. Erzeugen Sie eine 4DLink Datei, die den Serverstandort und den Port enthält, und übergeben Sie diese als Parameter an den Befehl. Die Standalone-Anwendung stoppt automatisch ihren Code und stellt eine Verbindung zum Server her, wodurch sie zu einer typischen Remote-Anwendung wird.

Hier ein Code-Schnipsel aus einem Server-Auswahldialog, in dem Form.selectedServer enthält die 4D Server Informationen:

If (Form.selectedServer#Null)
C_TEXT ($xml)
C_OBJECT ($link)
$xml :="<?xml version=\"1.0\" encoding=\"UTF-8\"?><database_shortcut is_remote=\"true\" server_database_name=\"FA_RemoteConnexionServ\" server_path=\""+Form.selectedServer.IP+": "+Form.selectedServer.portID+"\"/>"
$link :=Folder(fk user preferences folder).file("server.4dlink")
$link .setText($xml)
OPEN DATABASE ($link.platformPath)
End if

Wenn Ihre Verbindungsdatenbank fertig ist, müssen Sie nur noch eine kompilierte Datenbank erstellen.

ZUSAMMENFÜHREN DER ZIELDATENBANK

Nur zusammengeführte Client-Anwendungen können eine Verbindung zu zusammengeführten Servern herstellen. Daher haben wir einen neuen Mechanismus im BuildApp-Prozess entwickelt, der die Einbettung der Verbindungsdatenbank in die zusammengeführte Client-Anwendung ermöglicht.

Wir haben die neuen BuildApp-Schlüssel DatabaseToEmbedInClientWinFolder und DatabaseToEmbedInClientMacFolder erstellt, die die Pfade der kompilierten Verbindungsdatenbank enthalten. Auf diese Weise wird beim Erstellen der endgültigen Client/Server-Anwendung der BuildApp-Prozess die kompilierte Verbindungsdatenbank in die Client-Anwendung einbetten und ihren Namen ändern.

Diese Anwendung kann ohne Datendatei und ohne Lizenz ausgeführt werden. Wenn Sie jedoch eine Datendatei benötigen, können Sie eine „Default Data.4DD“-Datei in einem „Default Data“-Ordner neben der kompilierten Struktur ablegen. In diesem Fall wird die Lizenz für eine eigenständige zusammengeführte Anwendung während des Build-Prozesses integriert.

Dies ist eine zusammengeführte Client-Anwendungsstruktur ohne eingebettete Datenbank („Legacy Client“):

Dies ist ein Beispiel für BuildApp-Schlüssel zum Einbetten einer Verbindungsanwendung:
<DatabaseToEmbedInClientMacFolder>
::connectionApp_Build:Compiled Database:connectionApp:
</DatabaseToEmbedInClientMacFolder>

Dies ist eine kompilierte Verbindungsdatenbank:
blank

Und schließlich ist dies eine zusammengeführte Client-Anwendungsstruktur:
blank

WIE FUNKTIONIERT DAS?

Zur Laufzeit öffnet die Merged-Client-Anwendung die eingebettete Verbindungsdatenbank und ermöglicht es dem Benutzer, den Merged-Server auszuwählen, mit dem eine Verbindung hergestellt werden soll. Wenn eine Standard-Datendatei verwendet wird, ist diese im schreibgeschützten Modus.

Beachten Sie, dass der automatische Aktualisierungsprozess vom zusammengeführten Server weiterhin verfügbar ist. Wenn die zusammengeführte Verbindungsanwendung eine Verbindung zum Server herstellt und ihre Version nicht im Bereich des Servers liegt, wird eine automatische Aktualisierung gestartet, wie es der Fall wäre, wenn die Anwendung eine standardmäßige zusammengeführte Client-Anwendung wäre!

Avatar
- Product Owner - Damien Fuzeau ist seit Februar 2019 Mitglied des 4D Produktteams. Als Product Owner ist er für das Schreiben von User Stories zuständig, die er dann in funktionale Spezifikationen umsetzt. Zu seinen Aufgaben gehört es auch, dafür zu sorgen, dass die gelieferten Funktionsimplementierungen den Anforderungen der Kunden entsprechen. Damien hat an der Universität von Nantes einen Abschluss in Softwaretechnik gemacht. Er verbrachte mehr als 23 Jahre in seinem früheren Unternehmen, zunächst als Entwickler (er entdeckte 4D im Jahr 1997) und später als technischer Leiter und Softwarearchitekt. Dieses Unternehmen ist ein 4D OEM Partner und hat 4D basierte Geschäftssoftware für Tausende von Usern auf Hunderten von Servern eingesetzt. Damien ist also mit der Entwicklung und dem Einsatz von 4D in einem mehrsprachigen Kontext vertraut.