4D v16Configuration de l’application Wakanda |
||||||||||||||||||||||||||||||||
|
4D v16
Configuration de l’application Wakanda
|
Paramètres | Type | Description |
nomLocal | Chaîne | Nom local du catalogue distant |
adresseIP | Chaîne | Adresse du serveur de données distant (utiliser HTTPS pour plus de sécurité) |
utilisateur | Chaîne | Nom d’utilisateur pour l’ouverture de la session |
motDePasse | Chaîne | Mot de passe pour l’ouverture de la session |
jsFile | Chaîne | (optionnel) Chemin d’accès relatif d’un fichier JavaScript situé dans le même dossier que le modèle (cf. paragraphe Modifier le modèle externe) |
timeout | Num | (optionnel) Timeout de connexion cliente à la base 4D en minutes (60 par défaut). A noter que ce paramètre n'est pris en compte que si la session est ouverte avec un utilisateur et un mot de passe non vides (la protection des accès 4D Mobile côté 4D Server est fortement recommandée) |
Pour une description plus détaillée, reportez-vous à la documentation de la méthode mergeOutsideCatalog() dans le manuel Server-side API de Wakanda.
L’objet model désigne le "modèle" courant de l’application Wakanda, c’est-à-dire l’ensemble de ses "datastore classes" (tables) et méthodes. Dans le contexte d’une architecture 4D Mobile, le modèle Wakanda peut être vide. Si l’application Wakanda contient déjà des objets, les classes et méthodes référencées depuis l’application 4D distante sont fusionnées au modèle local lorsque vous utilisez la méthode mergeOutsideCatalog().
Lorsque la connexion est établie avec succès, les tables 4D "exposées" sont ajoutées aux classes du modèle côté Wakanda. Dans Wakanda Enterprise Studio, elles apparaissent parmi les classes du modèle local, identifiées par une petite flèche rouge. Le catalogue externe est également représenté dans Wakanda Studio par un catalogue spécifique (nommé nomLocal.waRemoteCatalog) signalé par une petite flèche rouge :
Note: Les extensions de fichier peuvent être masquées dans Wakanda Studio.
Vous pouvez double-cliquer sur ce fichier pour visualiser le catalogue externe dans l’éditeur de modèles de Wakanda Studio :
model.mergeOutsideCatalog("base4D","localhost:80", "admin", "123456");
model.mergeOutsideCatalog("base4D", { hostname: "http://localhost:8050", user: "wak", password: "123456", jsFile: "base4D.js" timeout: 15 });
Les méthodes openRemoteStore() et addRemoteStore() constituent des moyens alternatifs d’établir des connexions dynamiques entre une application Wakanda et une application 4D.
Comme mergeOutsideCatalog(), ces méthodes permettent d’accéder dynamiquement aux données des bases 4D mais leur fonctionnement est différent :
openRemoteStore() retourne une référence valide uniquement dans le contexte JavaScript courant, tant que addRemoteStore() maintient la référence durant toute la session.
Pour plus d’informations, reportez-vous à la description des méthodes openRemoteStore() et addRemoteStore() dans la documentation de Wakanda.
Quel que soit le mode de connexion avec le datastore 4D distant (boîte de dialogue "Connect to Remote Datastore" de Wakanda Studio ou exécution d'une méthode JavaScript), vous devez choisir si les classes (tables) distantes doivent être fusionnées avec le modèle actif ou si elles doivent être placées dans un modèle dédié.
Cette alternative est résumée dans le tableau suivant :
Pour... | fusionner au modèle actif | utiliser un modèle dédié |
Dialogue "Connect to Remote Datastore" | Cocher Merge with active Model | Déselectionner Merge with active Model |
Méthode JavaScript | mergeOutsideCatalog() | openRemoteStore() ou addRemoteStore() |
Lorsque vous fusionnez les tables 4D distantes avec le modèle actif, elles sont intégrées au modèle par défaut de l'application (dont le datastore est l'objet ds), comme les classes locales. Les principes d'accès aux données sont les suivants :
var invoiceList = ds.INVOICES.all(); //accès à la table INVOICES du catalogue par défaut
Ces principes facilitent le développement des applications 4D Mobile mais peuvent entraîner des conflits de noms entre les tables, notamment lorsque l'application Web fait appel à plusieurs datastores distants. Dans ce cas, il peut être utile de placer les éléments distants dans un modèle dédié.
Lorsque les tables 4D distantes ne sont pas fusionnées avec le modèle actif, elles utilisent un modèle "dédié". Les classes distantes utilisent alors un espace de nommage qui est propre au datastore auquel l'application est connectée, elles ne sont pas accessibles dans l'objet ds. Il est alors possible d'utiliser simultanément plusieurs tables du même nom dans plusieurs datastores différents :
var invoiceList = my4Dstore.INVOICES.all(); //accès à la table INVOICES du datastore my4Dstore
Ce principe comporte toutefois des limitations dans la version actuelle de Wakanda Enterprise :
Il est donc généralement conseillé de choisir le mode fusionné pour les datastores distants, si votre application cliente doit accéder directement aux données des tables 4D distantes.
Wakanda Enterprise vous permet de modifier certaines caractéristiques de la version locale du modèle externe, dans un but de personnalisation, d’optimisation ou de sécurisation.
Pour cela, il vous suffit d'ajouter du code JavaScript approprié dans un fichier .js ayant le même nom local du catalogue avec le suffixe .js et placé dans le même dossier que le modèle. Par exemple, si le nom du catalogue local est Emp4D.waRemoteModel, vous devez utiliser un fichier nommé Emp4D.js placé dans le dossier du modèle.
Notes :
Ce fichier est exécuté par Wakanda à l’initialisation du catalogue externe. A l’aide de ce fichier, vous pouvez notamment :
model.nomClass.nomAttribut.scope ="publicOnServer"
model.nomClass.calcAtt = new Attribute("calculated", "string"); model.nomClass.calcAtt.onGet = function(); model.nomClass.calcAtt.onSet = function();
model.nomClass.newAlias = new Attribute("alias", "number", "Link_15.cinteger");
model.ClasseDerivee = new DataClass("Emps", "public", "MaTable4D")
model.ClasseDerivee = new DataClass("Emps", "public", "MaTable4D") model.ClasseDerivee.removeAttribute("salaire"); model.ClasseDerivee.removeAttribute("commentaires"); model.ClasseDerivee.removeAttribute("...");
Pour plus d’informations sur le code JavaScript de manipulation des modèles, reportez-vous au chapitre Model API dans la documentation de Wakanda.
Vous pouvez définir des permissions spécifiques à Wakanda Server globalement pour le modèle distant et/ou individuellement pour chaque classe. Pour plus d'informations sur ce point, reportez-vous à la section Assigning Group Permissions dans la documentation de Wakanda.
Produit : 4D
Thème : Configuration de l’application Wakanda
Nom intl. : Configuring the Wakanda Application
4D Mobile ( 4D v16)