4D v14.3Wakandaアプリケーション側の設定 |
||||||||||||||||||||||||||||||||
|
4D v14.3
Wakandaアプリケーション側の設定
|
引数 | 型 | 説明 |
localName | 文字列 | リモートカタログのローカル名 |
ipAddress | 文字列 | リモートデータサーバーのアドレス(セキュリティのためにHTTPSを使用して下さい) |
userName | 文字列 | セッションを開くためのユーザー名 |
password | 文字列 | セッションを開くためのパスワード |
jsFilePath | 文字列 | モデルと同じフォルダ内にあるJavaScriptファイルへの相対パス名(任意、詳細は外部ファイルの変更を参照して下さい) |
timeout | 数字 | 4Dデータベースへのクライアント接続のタイムアウト(分、初期設定は60。任意) |
より詳細な情報に関しては、 Wakanda Server-Side API manual の、mergeOutsideCatalog() メソッドのドキュメントを参照して下さい。
model オブジェクトは、Wakandaアプリケーションのカレントの「モデル」をあらわします。つまり、Wakandaの"datastore classes"(テーブル)とメソッド一式のことです。4D Mobileアーキテクチャにおいては、Wakanda モデルは空であっても構いません。Wakanda アプリケーションにオブジェクトが既に含まれる場合、リモート4Dアプリケーションから参照されたクラスとメソッドはmergeOutsideCatalog() メソッドを使用したときにローカルのモデルと組み込みされます。
接続が正常に確立されると、「公開」されている4D テーブルがWakanda側のモデルのクラスのリストに表示されます。Wakanda Enterprise Studio 側では、リモートテーブルがローカルモデルのクラスの一覧の中に表示されます。外部要素は赤い矢印で表示されます。
外部カタログはWakanda Studio側でも特定のカタログ(localName.waRemoteCatalog という名前)で表示されます。これもまた赤い矢印が表示されています:
このファイルをダブルクリックすることにより外部カタログをWakanda Enterprise Studio内で見ることができます:
model.mergeOutsideCatalog("base4D","localhost:80", "admin", "123456");
model.mergeOutsideCatalog("base4D", { hostname: "http://localhost:8050", user: "wak", password: "123456", jsFile: "Model2.js" timeout: 15 });
Wakanda と 4D 間の動的なリンクは、 openRemoteStore() と addRemoteStore() を使うことによっても設定することができます。
これらのメソッドは mergeOutsideCatalog() のように、4D データベースのデータへのダイナミックなアクセスを可能にしますが、仕組みが異なります:
openRemoteStore() はカレントのJavaScriptのコンテキストの中でのみ有効な参照を返しますが、 openRemoteStore() はセッションの間はずっと参照を維持し続けます。
より詳細な情報に関しては、Wakanda documentationの openRemoteStore() とaddRemoteStore() についての説明を参照してください。
どちらの方法(Wakanda Studio の"Connect to Remote Datastore" ダイアログボックス、または JavaScript メソッドの実行)を使用して4D datastore に接続したとしても、リモートクラス(テーブル)がアクティブなモデルと併合されるか、専属のモデル内に配置されるかのどちらかを選択しなければなりません。
具体的な手法をまとめると以下の表のようになります:
4D datastoreへ接続する手段 | アクティブなモデルと併合するには | 専属のモデルを使用するには |
"Connect to Remote Datastore" ダイアログボックス | Merge with active Model にチェックを入れる | Merge with active Model のチェックを外す |
JavaScript メソッド | mergeOutsideCatalog()を使用 | openRemoteStore() または addRemoteStore()を使用 |
リモート4Dテーブルをアクティブなモデルと併合するとき、アプリケーションの(datastore が ds オブジェクトである)デフォルトのモデルへと、ローカルクラスとして統合されます。データにアクセスする際は以下の原理に沿います。
var invoiceList = ds.INVOICES.all(); //カタログのINVOICESテーブルへとデフォルトでアクセスする
これらの原理は4D Moblieアプリケーションの開発を容易にしてくれますが、それと同時にテーブル間での名前の問題を引き起こす事があります。これは特にWebアプリケーションが複数の datastore を呼び出した場合に起こります。この場合、リモートの要素を専属のモデル内に配置するのが有効な場合があります。
リモートの4Dテーブルは、アクティブなモデルと併合しないときには"専属"のモデルを使用します。リモートクラスは、アプリケーションが接続しているdatasotre特有のネームスペースを使用し、これらはdsオブジェクト内部ではアクセスすることができません。この方法なら同じ名前を持つ複数のテーブルを、複数の異なるdatastoreにて使用することが可能になります。
var invoiceList = my4Dstore.INVOICES.all(); // my4Dstore datastore の INVOICESテーブルへアクセス
しかしながら、この原則にはカレントのバージョンのWakanda Enterpriseにおいてはいくつかの制約もあります:
ですから、クライアントアプリが4Dリモートテーブルのデータへと直接アクセスしないといけないときには、通常 datastore には併合モードを使用することが推奨されます。
Wakanda Enterprise を使用すると、カスタマイズやセキュリティ、最適化などの目的で、外部モデルのローカルバージョンのいくつかの特性を変更することができます。
そのためには、ローカル名と同じ名前と ".js" 拡張子を持つ.jsファイル内に適切なJavaScriptコードを書き、そのファイルをモデルと同じフォルダの中に置きます。例えば、ローカルカタログの名前がEmp4D.waRemoteModel であれば、Emp4D.js という名前のファイルをモデルと同じフォルダ内に作成する必要があります。
注: JavaScript メソッドを使用して接続を確立した場合、jsFile 引数を使用して他の名前を使用することも可能です。
Wakanda は、外部カタログが初期化されたときにこのファイルを使用します。このファイルを使用することによって以下の様なことが可能です:
model.className.attributeName.scope ="publicOnServer"
model.className.calcAtt = new Attribute("calculated", "string"); model.className.calcAtt.onGet = function(); model.className.calcAtt.onSet = function();
model.className.newAlias = new Attribute("alias", "number", "Link_15.cinteger");
model.DerivedClass = new DataClass("Emps", "public", "My4DTable")
model.DerivedClass = new DataClass("Emps", "public", "My4DTable") model.DerivedClass.removeAttribute("salary"); model.DerivedClass.removeAttribute("comments"); model.DerivedClass.removeAttribute("...");
モデルと組み合わせて使用できるJavaScript コードに関しては、Wakandaのドキュメントの中の Model API の章を参照して下さい。
リモートモデルに対して、Wakanda Server 全体に特定の許可を設定することができます。また、それぞれのクラスに関しては個別に許可を設定することができます。この点に関しての詳細な情報についてはWakandaドキュメントの Assigning Group Permissions を参照して下さい。
プロダクト: 4D
テーマ: Wakandaアプリケーション側の設定
4D Mobile ( 4D v14 R3)
4D Mobile ( 4D v14.3)
4D Mobile ( 4D v14 R4)
Inherited from : Wakandaアプリケーション側の設定 ( 4D v14 R2)