4D v16

Configuración de la aplicación Wakanda

Inicio

 
4D v16
Configuración de la aplicación Wakanda

Configuración de la aplicación Wakanda    


 

 

Del lado Wakanda Enterprise, puede conectarse a una base 4D:

  • utilizando la caja de diálogo "Connect to Remote Datastore" (disponible en Wakanda Enterprise Studio),
  • o utilizando el método JavaScript (mergeOutsideCatalog(), openRemoteStore() o addRemoteStore()).

Una vez se establece la conexión entre Wakanda y 4D, la aplicación Wakanda puede utilizar las tablas, atributos y métodos proyecto expuestos de la aplicación 4D como objetos locales.

También puede utilizar este método para ejecutar código JavaScript adicional, por ejemplo, puede modificar localmente propiedades de atributos remotos o extender las clases, o añadir atributos calculados.

En Wakanda Enterprise Studio, el comando Connect to Remote Datastore... (que se encuentra en el menú File y en el menú contextual del proyecto) abre un enlace con un datastore remoto. Este datastore remoto puede ser una base 4D u otra aplicación Wakanda. En ambos casos, el servidor HTTP del datastore remoto debe iniciarse para que Wakanda Enterprise Studio para poder acceder al modelo remoto.
Una vez definido el enlace, se restablece automáticamente cada vez que la aplicación se abra con los parámetros de conexión guardados en el archivo  ".waRemoteConfig" (ver abajo).

Cuando seleccione el comando Connect to Remote Datastore..., aparece la caja de diálogo de conexión:

Contiene los parámetros de conexión siguientes:

  • Remote datastore name: nombre local del catálogo remoto, que se muestra en el Explorador de soluciones. Si no selecciona la opción Merge with active Model, este nombre se utiliza como id del datastore en lugar de "ds" (ver abajo). En este caso, asegúrese de utilizar caracteres compatibles (ver Programming and Writing Conventions en la documentación Wakanda).
  • Hostname: dirección del servidor de datos remoto (utilice HTTPS para mayor seguridad)
  • User y Password: nombre de usuario y contraseña para abrir la sesión 4D Mobile en la base 4D
  • Session duration: número de minutos (60 por defecto) para mantener la sesión conectada a la base 4D remota. Este parámetro no se tiene en cuenta si la conexión está abierta con un usuario y una contraseñas no vacías (la protección de acceso 4D Mobile del lado 4D es muy recomendada).
  • Merge with active Model (opción seleccionada por defecto): fusionar el datastore remoto con el modelo activo del proyecto (objeto ds), de modo que las datastore clases remotas se incluyan en la lista de clases del GUI Designer de Wakanda. Para obtener más información, consulte Integrar al modelo activo o utilizar un modelo dedicado.

Cuando se establece una conexión entre Wakanda y 4D Server a través de la caja de diálogo "Connect to a Remote Datastore", Wakanda Enterprise Studio crea automáticamente dos archivos (iconos con una flecha roja) en la carpeta del proyecto:

  • el primer archivo (extensión ".waRemoteConfig") guarda los parámetros de conexión definidos en la caja de diálogo,
  • el segundo archivo (extensión ".waRemoteModel") contiene la representación local del modelo del datastore remoto. Su contenido se puede mostrar (pero no modificar) en la ventana del editor de modelos de Wakanda.

Nota: puede ver las extensiones de los archivos en un mensaje de ayuda que aparece cuando se seleccionan los archivos en el Explorador de Wakanda Studio.

Wakanda Enterprise Server le permite establecer un enlace con una base 4D mediante la ejecución de un método JavaScript. El método de conexión por lo general debe ubicarse en el código que se ejecuta cuando se abre la aplicación (bootstrap.js) o cuando el modelo se abre (model.js) para que el enlace esté disponible durante cada sesión.

Hay tres métodos que puede utilizar para establecer un enlace 4D Mobile:

  • model.mergeOutsideCatalog()
  • addRemoteStore()
  • openRemoteStore()

La principal diferencia entre estos métodos es el modo de integración de los objetos procedentes del datastore remoto en la aplicación Wakanda: model.mergeOutsideCatalog() fusiona el catálogo remoto con el modelo activo, mientras que addRemoteStore() y openRemoteStore() generan modelos dedicados. Para obtener más información sobre este punto, consulte Integrar al modelo activo o utilizar un modelo dedicado a continuación.

El método JavaScript mergeOutsideCatalog()  designa un catálogo de datos remoto y lo utiliza dentro de su modelo Wakanda actual. Debe llamar a este método en un archivo .js asociado al modelo actual y ejecutado por Wakanda Server.

Hay dos posibles sintaxis:

  • Sintaxis directa:
    model.mergeOutsideCatalog(nomLocal, dirección, usuario, contraseña);
  • Sintaxis utilizando un objeto:
    model.mergeOutsideCatalog(nomLocal, {
        hostname: dirección,
        user: usuario, 
        password: contraseña,
        jsFile: rutaArchivoJS 
        timeout: minutos });

La ventaja de usar la sintaxis con objeto es que se puede añadir un archivo .js que se ejecuta después de la conexión a la base 4D. Este archivo permite modificar localmente el catálogo referenciado de la base remota.

ParámetroTipoDescripción
nomLocalCadenaNombre local del catálogo remoto
direcciónCadenaDirección IP del servidor de datos remoto (utilice HTTPS para mayor seguridad)
usuarioCadenaNombre de usuario para la apertura de la sesión
contraseñaCadenaContraseña para la apertura de la sesión
jsFileCadena(opcional)Ruta relativa de acceso del archivo JavaScript ubicado en la misma carpeta que el modelo (ver [#title id="3392" anchor="1284321"/])
timeoutNum(Opcional) Tiempo de espera para conexión cliente a la base 4D en minutos (por defecto 60). Tenga en cuenta que este parámetro sólo se tiene en cuenta si la conexión está abierta con un usuario y una contraseña que no están en blanco (se recomienda especialmente para proteger los accesos 4D Mobile del lado del servidor 4D)

Para una descripción detallada, consulte la documentación del método mergeOutsideCatalog() en el manual Wakanda Server-Side API.

model  

El objeto model indica el "modelo" actual de la aplicación Wakanda, en otras palabras, el conjunto de sus "clases de datos” (tablas) y métodos. En el contexto de una arquitectura 4D Mobile, el modelo Wakanda puede estar vacío. Si la aplicación Wakanda ya contiene los objetos, las clases y métodos referenciados de la aplicación 4D remota se fusionan al modelo local cuando utilice el método mergeOutsideCatalog().

Cuando se establece la conexión correctamente, las tablas 4D "expuestas" se añaden a las clases del modelo del lado Wakanda. En Wakanda Enterprise Studio, aparecen  las tablas remotas entre la lista de clases del modelo local. Los elementos externos se indican con una flecha roja. El catálogo externo también está representado en Wakanda Studio por un catálogo especifico (llamado localName.waRemoteCatalog) que también se indica por una flecha roja:

Nota: las extensiones de archivo se pueden ocultar en Wakanda Studio.

Puede hacer doble clic en este archivo para ver el catálogo externo en el editor de modelos de Wakanda Enterprise Studio:

Ejemplo  

  • Ejemplo de conexión directa:
    model.mergeOutsideCatalog("base4D","localhost:80", "admin", "123456");
  • Ejemplo de conexión utilizando un objeto:
    model.mergeOutsideCatalog("base4D", {    
        hostname: "http://localhost:8050",
        user: "wak", 
        password: "123456",
        jsFile: "Model2.js" 
        timeout: 15 });

Los métodos openRemoteStore() y addRemoteStore() son formas alternativas de establecer vínculos dinámicos entre una aplicación Wakanda y una aplicación 4D.

Como mergeOutsideCatalog(), estos métodos ofrecen acceso dinámico a los datos de las bases 4D pero funcionan de una manera diferente:

  • pueden hacer referencia a un modelo remoto en cualquier momento durante la sesión Wakanda y no sólo cuando se carga la solución.
  • tablas, atributos y métodos del modelo externo se pueden acceder por medio de un datastore separado, no se fusionaron con el modelo local de la aplicación Wakanda (accedida por medio del objeto ds).

openRemoteStore() sólo devuelve una referencia válida en el contexto JavaScript actual, mientras que addRemoteStore() mantiene la referencia durante toda la sesión.

Para obtener más información, consulte la descripción de los métodos openRemoteStore() y addRemoteStore() en la documentación Wakanda.

Cualquiera que sea el modo de conexión con la datastore 4D remota (usando la caja de diálogo "Connect to Remote Datastore" de Wakanda Studio o ejecutando un método JavaScript), debe elegir si las clases (tablas) remotas deben fusionarse con el modelo activo, o ubicarse en un modelo dedicado.

Esta elección se resume en la siguiente tabla: 

Para...fusionar al modelo activoutilizar un modelo dedicado
Diálogo "Connect to Remote Datastore"Seleccionar Merge with active ModelDeseleccionar Merge with active Model
Método JavaScriptmergeOutsideCatalog()openRemoteStore() o addRemoteStore()

Cuando fusiona las tablas 4D remotas con el modelo activo, se integran al modelo por defecto de la aplicación (cuyo datastore es el objeto ds), como las clases locales. Los principios de acceso a los datos son los siguientes:

  • del lado del servidor, acceda a las tablas y métodos 4D remotos por medio del objeto ds (ver Llamar tablas y métodos 4D). Ejemplo:
    var invoiceList = ds.INVOICES.all(); //acceso a la tabla INVOICES del catálogo por defecto
  • del lado cliente, dispone de las funcionalidades automáticas de la librería Wakanda Ajax Framework (WAF): las tablas 4D remotas están disponibles por medio de los objetos de alto nivel datasource, o utilizando el API dataprovider, que ofrece acceso de más bajo nivel.
  • en Wakanda Enterprise Studio, las tablas de la base 4D se listan con las clases locales en el GUI Designer de Wakanda:

Estos principios facilitan el desarrollo de las aplicaciones 4D Mobile pero pueden dar lugar a conflictos de nombres entre las tablas, en particular cuando la aplicación Web llama a varios datastores. En este caso, puede ser útil para ubicar los elementos remotos en un modelo dedicado.

Cuando las tablas 4D remotas no se fusionan con el modelo activo, utilizan un modelo "dedicado". Las clases remotas entonces utilizan un espacio de nombres que es específico para el datastore al que la aplicación está conectada y no se pueden acceder en el objeto ds. De esta manera es posible utilizar varias tablas con el mismo nombre en varias datastores diferentes:

    • del lado del servidor, puede acceder a las tablas y métodos 4D remotos por medio de un catálogo personalizado cuyo nombre es el que usted pasa en el parámetro de conexión Remote datastore name (diálogo), o en localName (métodos JavaScript). Por ejemplo, si ha creado un enlace llamado "my4Dstore", en el código de la aplicación puede escribir:

      var invoiceList = my4Dstore.INVOICES.all(); //access to the INVOICES table of the my4Dstore datastore

Sin embargo, este principio tiene ciertas limitaciones en la versión actual de Wakanda Enterprise:

  • No es posible para las aplicaciones cliente acceder directamente a las clases remotas por medio de la librería WAF o usando REST,
  • las clases remotas no se listan en el GUI Designer de Wakanda Enterprise Studio.

Así que por lo general se recomienda elegir el modo fusionado para las datastores remotas, si su aplicación cliente debe acceder directamente a los datos de las tablas 4D remotas.

Wakanda Enterprise le permite modificar ciertas características de la versión local del modelo externo, por personalización, optimización o seguridad.

Para ello, sólo tiene que añadir el código JavaScript en un archivo .js que tiene el mismo nombre local del catálogo más el sufijo .js y poner este archivo en la misma carpeta que el modelo. Por ejemplo, si el nombre del catálogo local es Emp4D.waRemoteModel, debe utilizar un archivo llamado Emp4D.js ubicado en la carpeta del modelo.

Notas:

  • A partir de la versión 11, por defecto este archivo es creado automáticamente por Wakanda Studio.
  • Cuando se establece la conexión utilizando un método JavaScript, es posible utilizar otro nombre utilizando el parámetro jsFile.

Wakanda ejecuta este archivo cuando inicializa el catálogo externo. Utilizando este archivo, puede:

  • modificar las propiedades de los atributos de clase de datos, tales como los eventos o el alcance. Ejemplo:
    model.className.attributeName.scope ="publicOnServer"
  • añadir los atributos calculados a las clases de datos. Ejemplo:
    model.className.attributeName.onGet = function()
    model.className.attributeName.onSet = function()
  • añadir los atributos alias a las clase de datos. Ejemplo:
    model.className.newAlias = new Attribute("alias", "number", "Link_15.cinteger");
  • crear clases de datos locales derivadas de las tablas del catálogo externo, con el fin de controlar totalmente los datos enviados a los clientes. Una clase de datos derivada le permite presentar una vista personalizada de una tabla externa, mientras conserva el acceso global a la clase de datos extendida (padre) en el servidor Wakanda. Ejemplo:
    model.DerivedClass = new DataClass("Emps", "public", "My4DTable")
  • eliminar atributos de las clases de datos locales derivadas, por seguridad o para optimizar el tráfico de red. Ejemplo:
    model.DerivedClass = new DataClass("Emps", "public", "My4DTable") 
    model.DerivedClass.removeAttribute("salary");
    model.DerivedClass.removeAttribute("comments");
    model.DerivedClass.removeAttribute("...");

    Con este ejemplo, se crea una clase derivada denominada "DerivedClass", basada en la clase "My4DTable", que envía vía la red sólo los atributos que desee utilizar.

Para más información sobre el código JavaScript para trabajar con modelos, consulte la sección Model API en la documentación de Wakanda.

Puede definir permisos específicos para Wakanda Server para el modelo remoto y/o en forma individual para cada clase. Para obtener más información sobre este punto, consulte la sección Asignación de permisos de grupos de la documentación Wakanda.

 
 



Ver también 

Configuración de la base de datos 4D

 
PROPIEDADES 

Producto: 4D
Tema: Configuración de la aplicación Wakanda

 
HISTORIA 

 
ARTICLE USAGE

4D Mobile ( 4D v16)