カスタマイズされた4D接続ダイアログを構築する必要がありますか?あなたのクライアントアプリケーションを異なるサーバーに接続することに興味がありますか?4D v18では、この2つのシナリオを処理することができます。このブログは、カスタムリモート接続ダイアログを作成し、マージされた4Dサーバーに接続したい方のためのものです。読み進めてください。
なぜ、独自の接続ダイアログを作成する必要があるのでしょうか?
4D のビルトイン接続ダイアログを変更するには、いくつかのユースケースがあります。
- カスタマイズ
サーバーへのリモート接続のための標準ダイアログをカスタマイズしたい。
- 複数の子会社
アプリケーションをデプロイして、いくつかの異なるデータベースを作成する場合。例えば、あるグループの子会社ごとに異なるデータベースを作成する場合。接続データベースでは、ユーザーがどのサーバーとデータベースに接続できるかを管理し、直接接続を許可することができます。
- アーカイブデータベース
カスタムダイアログのもう一つの使い方は、ユーザーがどのアーカイブ年度データベースにアクセスできるかを選択することです。
- アプリケーションポータル
複数の製品を導入し、ユーザーが1つの「ポータル」アプリケーションを使って各製品に接続できるようにしたい場合。
使用例
あるソフトウェア出版社は、特定のビジネスニーズに対応した各サーバーをクラウド上でホストするサーバーファームを持っています。以前は、サーバーにアクセスできるユーザー数と同じ数のリモートアプリケーションを展開していました。現在では、「ディレクトリ」データベースを使って、すべてのサーバーに単一のリモートアプリケーションを配備することができます。HTTPリクエストまたはリモートデータストアを使用して、各サーバーはそのステータスと接続情報を「ディレクトリ」サーバーに送信します。接続されたマージアプリケーションは、ディレクトリデータベースに問い合わせ、利用可能なサーバーのリストを表示し、1つのサーバーに接続することができます。
その方法は?
接続データベースの作成
まず、独自の接続ダイアログを含む接続データベースを作成する必要があります。このとき OPEN DATABASEコマンドは、4D サーバーに接続できるように拡張されています。サーバーの場所とポートを含む 4DLink ファイルを作成し、コマンドのパラメータとして渡します。スタンドアロンアプリケーションは、自動的にコードを停止し、サーバに接続し、典型的なリモートアプリケーションになります。
以下は、サーバー選択ダイアログのコードスニペットです。 FormselectedServer は 4D サーバーの情報を含んでいます。
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
接続用データベースの準備ができたら、あとはコンパイル用データベースを構築するだけです。
マージ対象データベース
マージされたクライアントアプリケーションのみが、マージされたサーバーに接続することができます。そこで、ビルドアプリケーションプロセスにおいて、接続データベースをマージされたクライアントアプリケーションに埋め込むことを可能にする新しいメカニズムを開発しました。
新しいBuildAppキーであるDatabaseToEmbedInClientWinFolderと DatabaseToEmbedInClientMacFolderを作成し、コンパイルした接続データベースのパスを格納するようにしたのです。こうすることで、最終的なクライアント/サーバーアプリケーションをビルドする際に、ビルドアプリケーションプロセスが、コンパイルされた接続データベースをクライアントアプリケーションに埋め込み、その名前を変更することになります。
このアプリケーションは、データファイルやライセンスなしで実行することができます。しかし、データファイルが必要な場合は、コンパイルした構造体の近くの「Default Data」フォルダーに「Default Data.4DD」ファイルを配置することが可能です。この場合、スタンドアロン マージド アプリケーションのライセンスは、ビルド アプリケーションのプロセス中に統合されます。
これは、データベースを埋め込まない、マージされたクライアントアプリケーションの構造です(「レガシークライアント」)。
これは、接続アプリケーションを埋め込むためのBuildAppキーのサンプルです。
<DatabaseToEmbedInClientMacFolder>
::connectionApp_Build:Compiled Database:connectionApp:
</DatabaseToEmbedInClientMacFolder>
これは、コンパイルされた接続データベースです。
そして最後に、これはマージされたクライアントアプリケーションの構造です。
どのように機能するのですか?
実行時に、マージクライアントアプリケーションは組み込まれた接続データベースを開き、その後、ユーザーが接続するマージサーバーを選択できるようにします。デフォルトのデータファイルが使用されている場合、それは読み取り専用モードです。
マージされたサーバーからの自動更新プロセスはまだ利用可能であることに注意してください。マージされた接続アプリケーションがサーバーに接続したとき、そのバージョンがサーバーの範囲にない場合、アプリケーションが標準のマージされたクライアントアプリケーションである場合と同様に、自動アップデートが開始されます!