4D v16Wakandaアプリケーション側の設定 |
||||||||||||||||||||||||||||||||
|
4D v16
Wakandaアプリケーション側の設定
Wakandaアプリケーション側の設定
Wakanda Enterprise側では、以下の二つの方法を用いて4Dのデータベースへと接続することができます:
Wakandaと4Dの間に接続が確立されると、Wakandaは4Dアプリケーションにて公開されているテーブル、属性、そしてプロジェクトメソッドをローカルオブジェクトとして使用する事ができるようになります。 また他のJavaScriptコードを実行する事もできます。例えば、例えば、リモート属性のプロパティをローカルに修正したり、クラスを拡張したり、計算属性を追加したりできます。 Wakanda Enterprise Studioでは、Connect to Remote Datastore... コマンド(File メニューまたはプロジェクトのコンテキストメニュー内にあります)を使用してリモートのdatastore とのリンクを開設します。このリモートのdatastore としては4Dデータベースまたは他のWakandaアプリケーションを使用可能です。どちらの場合でも、Wakanda Enterprise Studioがリモートモデルにアクセスできるようにするために、リモート datastore のHTTPサーバーは開始される必要があります。 Connect to Remote Datastore... コマンドを選択すると、接続ダイアログボックスが表示されます: この中では以下の接続引数を設定する事ができます。
"Connect to a Remote Datastore"ダイアログボックスを使用してWakanda と 4D Server との間の接続が確立されると、Wakanda Enterprise Studio は自動的にプロジェクトのフォルダ内に二つのファイルを作成します(作成されたファイルはアイコンに赤の矢印が付いています)。
Wakanda Enterprise Server では、JavaScriptメソッドを実行することによっても 4D データベースとのリンクを設定する事ができます。各セッション中にリンクを有効にするためには、接続メソッドは通常アプリケーションが開かれたときに実行されるコード(bootstrap.js)の中か、またはモデルが開かれたときに実行されるコード(model.js)内に置かれる必要があります。 4D Mobile リンクを確立するために使えるメソッドは三つあります:
mergeOutsideCatalog() JavaScript メソッドはリモートデータのカタログを指定し、それをカレントの Wakanda モデルと併合させます。このメソッドはカレントのモデルに関連付けられている .js ファイル内で呼び出され、Wakandaサーバーによって実行されなければなりません。 このとき、以下の二つのシンタックスのどちらかを使用できます:
オブジェクトを使用したシンタックスの利点は、4Dデータベースに接続したあとに実行される.jsファイルを追加できることです。このファイルはリモートデータベースから参照されるカタログをローカルに修正することができます。
より詳細な情報に関しては、 Wakanda Server-Side API manual の、mergeOutsideCatalog() メソッドのドキュメントを参照して下さい。 model オブジェクトは、Wakandaアプリケーションのカレントの「モデル」をあらわします。つまり、Wakandaの"datastore classes"(テーブル)とメソッド一式のことです。4D Mobileアーキテクチャにおいては、Wakanda モデルは空であっても構いません。Wakanda アプリケーションにオブジェクトが既に含まれる場合、リモート4Dアプリケーションから参照されたクラスとメソッドはmergeOutsideCatalog() メソッドを使用したときにローカルのモデルと組み込みされます。 接続が正常に確立されると、「公開」されている4D テーブルがWakanda側のモデルのクラスのリストに表示されます。Wakanda Enterprise Studio 側では、リモートテーブルがローカルモデルのクラスの一覧の中に表示されます。外部要素は赤い矢印で表示されます。 このファイルをダブルクリックすることにより外部カタログをWakanda Enterprise Studio内で見ることができます:
Wakanda と 4D 間の動的なリンクは、 openRemoteStore() と addRemoteStore() を使うことによっても設定することができます。 これらのメソッドは mergeOutsideCatalog() のように、4D データベースのデータへのダイナミックなアクセスを可能にしますが、仕組みが異なります:
openRemoteStore() はカレントのJavaScriptのコンテキストの中でのみ有効な参照を返しますが、 openRemoteStore() はセッションの間はずっと参照を維持し続けます。 より詳細な情報に関しては、Wakanda documentationの openRemoteStore() とaddRemoteStore() についての説明を参照してください。 どちらの方法(Wakanda Studio の"Connect to Remote Datastore" ダイアログボックス、または JavaScript メソッドの実行)を使用して4D datastore に接続したとしても、リモートクラス(テーブル)がアクティブなモデルと併合されるか、専属のモデル内に配置されるかのどちらかを選択しなければなりません。 具体的な手法をまとめると以下の表のようになります:
リモート4Dテーブルをアクティブなモデルと併合するとき、アプリケーションの(datastore が ds オブジェクトである)デフォルトのモデルへと、ローカルクラスとして統合されます。データにアクセスする際は以下の原理に沿います。
これらの原理は4D Moblieアプリケーションの開発を容易にしてくれますが、それと同時にテーブル間での名前の問題を引き起こす事があります。これは特にWebアプリケーションが複数の datastore を呼び出した場合に起こります。この場合、リモートの要素を専属のモデル内に配置するのが有効な場合があります。 リモートの4Dテーブルは、アクティブなモデルと併合しないときには"専属"のモデルを使用します。リモートクラスは、アプリケーションが接続しているdatasotre特有のネームスペースを使用し、これらはdsオブジェクト内部ではアクセスすることができません。この方法なら同じ名前を持つ複数のテーブルを、複数の異なるdatastoreにて使用することが可能になります。
しかしながら、この原則にはカレントのバージョンのWakanda Enterpriseにおいてはいくつかの制約もあります:
ですから、クライアントアプリが4Dリモートテーブルのデータへと直接アクセスしないといけないときには、通常 datastore には併合モードを使用することが推奨されます。 Wakanda Enterprise を使用すると、カスタマイズやセキュリティ、最適化などの目的で、外部モデルのローカルバージョンのいくつかの特性を変更することができます。 そのためには、ローカル名と同じ名前と ".js" 拡張子を持つ.jsファイル内に適切なJavaScriptコードを書き、そのファイルをモデルと同じフォルダの中に置きます。例えば、ローカルカタログの名前がEmp4D.waRemoteModel であれば、モデルと同じフォルダ内にあるEmp4D.js という名前のファイルを使用する必要があります。 注:
Wakanda は、外部カタログが初期化されたときにこのファイルを使用します。このファイルを使用することによって以下の様なことが可能です:
モデルと組み合わせて使用できるJavaScript コードに関しては、Wakandaのドキュメントの中の Model API の章を参照して下さい。 リモートモデルに対して、Wakanda Server 全体に特定の許可を設定することができます。また、それぞれのクラスに関しては個別に許可を設定することができます。この点に関しての詳細な情報についてはWakandaドキュメントの Assigning Group Permissions を参照して下さい。
参照
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
4D Mobile ( 4D v16) |
||||||||||||||||||||||||||||||