4D v16

Configuração da aplicação Wakanda

Página Inicial

 
4D v16
Configuração da aplicação Wakanda

Configuração da aplicação Wakanda    


 

 

Do lado Wakanda Enterprise, pode se conectar a uma base 4D:

  • utilizando a caixa de diálogo "Connect to Remote Datastore" (disponível em Wakanda Enterprise Studio),
  • ou utilizando o método JavaScript (mergeOutsideCatalog(), openRemoteStore() ou addRemoteStore()).

Uma vez que se estabelece a conexão entre Wakanda e 4D, a aplicação Wakanda pode utilizar as tabelas, atributos e métodos projeto expostos da aplicação 4D como objetos locais.

Também pode utilizar este método para executar código JavaScript adicional, por exemplo, pode modificar localmente propriedades de atributos remotos ou estender as classes, ou adicionar atributos calculados.

Em Wakanda Enterprise Studio, o comando Connect to Remote Datastore... (que se encontra no menu File e no menu contextual do projeto) abre um link com um datastore remoto. Este datastore remoto pode ser uma base 4D ou outra aplicação Wakanda. Em ambos casos, o servidor HTTP do datastore remoto deve ser iniciado para que Wakanda Enterprise Studio possa acessar ao modelo remoto.
Uma vez definido o link, se restabelece automaticamente cada vez que a aplicação seja aberta com os parâmetros de conexão guardados no arquivo  ".waRemoteConfig" (ver abaixo).

Quando selecione o comando Connect to Remote Datastore..., aparece a caixa de diálogo de conexão:

Contém os parâmetros de conexão seguintes:

  • Remote datastore name: nome local do catálogo remoto, que se mostra no Explorador de soluções. Se não selecionar a opção Merge with active Model, este nome se utiliza como id do datastore no lugar de "ds" (ver abaixo). Neste caso, tenha a certeza de utilizar caracteres compatíveis (ver Programming and Writing Conventions na documentação Wakanda).
  • Hostname: endereço do servidor de dados remoto (utilize HTTPS para maior segurança)
  • User and Password: nome de usuário e senha para abrir a sessão 4D Mobile na base 4D
  • Session duration: número de minutos (60 por padrão) para manter a sessão conectada a base 4D remota. Este parâmetro não é levado em consideração se a conexão estiver aberta com um usuário e uma senha não vazias (a proteção de acesso  4D Mobile do lado 4D é muito recomendada).
  • Merge with active Model (opção selecionada por padrão): fusionar o datastore remoto com o modelo ativo do projeto (objeto ds), de modo que as datastore clases remotas sejam incluídas na lista de classes do GUI Designer de Wakanda. Para obter mais informação, consulte Integrar ao modelo ativo ou utilizar um modelo dedicado.

Quando se estabelece uma conexão entre Wakanda e 4D Server através da caixa de diálogo "Connect to a Remote Datastore", Wakanda Enterprise Studio cria automaticamente dos arquivos (ícones com uma flecha vermelha) na pasta do projeto:

  • o primeiro arquivo (extensão ".waRemoteConfig") guarda os parâmetros de conexão definidos na caixa de diálogo,
  • o segundo arquivo (extensão ".waRemoteModel") contém a representação local do modelo do datastore remoto. Seu conteúdo se pode mostrar (mas não modificar) na janela do editor de modelos de Wakanda.

Nota: pode ver as extensões dos arquivos em uma mensagem de ajuda que aparece quando se selecionam os arquivos no Explorador de Wakanda Studio.

Wakanda Enterprise Server lhe permite estabelecer um link com uma base 4D mediante a execução de um método JavaScript. O método de conexão geralmente deve ser localizado no código que se executa quando se abre a aplicação (bootstrap.js) ou quando o modelo é aberto (model.js) para que o link esteja disponível durante cada sessão.

Há três métodos que pode utilizar para estabelecer um link 4D Mobile:

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

A principal diferença entre estes métodos é o modo de integração dos objetos procedentes do datastore remoto na aplicação Wakanda: model.mergeOutsideCatalog() fusiona o catálogo remoto com o modelo ativo, enquanto que addRemoteStore() e openRemoteStore() geram modelos dedicados. Para obter mais informação sobre este ponto, consulte Integrar ao modelo ativo ou utilizar um modelo dedicado a continuação.

O método JavaScript mergeOutsideCatalog()  designa um catálogo de dados remoto e o utiliza dentro de seu modelo Wakanda atual. Deve chamar a este método em um arquivo .js associado ao modelo atual e executado por Wakanda Server.

Há duas possíveis sintaxes:

  • Sintaxe direta:
    model.mergeOutsideCatalog(nomLocal, endereço, usuário, senha);
  • Sintaxe utilizando um objeto:
    model.mergeOutsideCatalog(nomLocal, {
        hostname: endereço,
        user: usuário, 
        password: senha,
        jsFile: viaArquivoJS 
        timeout: minutos });

A vantagem de usar a sintaxe com objeto é que pode ser adicionado um arquivo .js que se executa depois da conexão a base 4D. Este arquivo permite modificar localmente o catálogo referenciado da base remota.

ParâmetroTipoDescrição
nomLocalCadeiaNome local do catálogo remoto
endereçoCadeiaEndereço IP do servidor de dados remoto (utilize HTTPS para maior segurança)
usuárioCadeiaNome de usuário para a abertura da sessão
senhaCadeiaSenha para a abertura da sessão
viaArquivoJSCadeia(opcional) Via de acesso do arquivo JavaScript
timeoutNum (Opcional) Tempo de espera para conexão cliente a base 4D em minutos (por padrão 60) Lembre que este parâmetro só é levado em consideração se a conexão estiver aberta com um usuário e uma senha que não estejam em branco (é recomendado especialmente para proteger os acessos 4D Mobile do lado do servidor 4D)

Para uma descrição detalhada, consulte a documentação do método mergeOutsideCatalog() no manual Wakanda Server-Side API.

model  

O objeto model indica o "modelo" atual da aplicação Wakanda, em outras palavras, o conjunto de suas "classes de dados” (tabelas) e métodos. No contexto de uma arquitetura 4D Mobile, o modelo Wakanda pode estar vazio. Se a aplicação Wakanda já contém os objetos, as classes e métodos referenciados da aplicação 4D remota se fusionam ao modelo local quando utilize o método mergeOutsideCatalog().

Quando se estabelece a conexão corretamente, as tabelas 4D "expostas" se adicionam as classes do modelo do lado Wakanda. Em Wakanda Enterprise Studio, aparecem as tabelas remotas entre a lista de classes do modelo local. Os elementos externos se indicam com uma flecha vermelha. O catálogo externo também está representado em Wakanda Studio por um catálogo específico (chamado localName.waRemoteCatalog) que também se indica por uma flecha vermelha:

Nota: As extensões de arquivo podem ser ocultas em Wakanda Studio.

Pode fazer duplo clique neste arquivo para ver o catálogo externo no editor de modelos de Wakanda Enterprise Studio:

Exemplo  

  • Exemplo de conexão direta:
    model.mergeOutsideCatalog("base4D","localhost:80", "admin", "123456");
  • Exemplo de conexão utilizando um objeto:
    model.mergeOutsideCatalog("base4D", {    
        hostname: "http://localhost:8050",
        user: "wak", 
        password: "123456",
        jsFile: "Model2.js" 
        timeout: 15 });

Os métodos openRemoteStore() e addRemoteStore() são formas alternativas de estabelecer vínculos dinâmicos entre uma aplicação Wakanda e uma aplicação 4D.

Como mergeOutsideCatalog(), estes métodos oferecem acesso dinâmico aos dados das bases 4D mas funcionam de uma maneira diferente:

  • podem fazer referência a um modelo remoto em qualquer momento durante a sessão Wakanda e não só quando se carrega a solução.
  • tabelas, atributos e métodos do modelo externo podem ser acessados por meio de um datastore separado, não se fundiram com o modelo local da aplicação Wakanda (acessada por meio do objeto ds).

openRemoteStore() só devolve uma referência válida no contexto JavaScript atual, enquanto addRemoteStore() mantém a referência durante toda a sessão.

Para obter mais informação, consulte a descrição dos métodos openRemoteStore() e addRemoteStore() na documentação Wakanda.

Qualquer que seja o modo de conexão com o datastore 4D remota (usando a caixa de diálogo "Connect to Remote Datastore" de Wakanda Studio ou executando um método JavaScript), deve escolher se as classes (tabelas) remotas devem ser fusionados com o modelo ativo, ou ser localizado em um modelo dedicado.

Esta escolha se resume na seguinte tabela: 

Para...fusionar ao modelo ativoutilizar um modelo dedicado
Diálogo "Connect to Remote Datastore"Selecionar Merge with active ModelDesselecionar Merge with active Model
Método JavaScriptmergeOutsideCatalog()openRemoteStore() ou addRemoteStore()

Quando fusiona as tabelas 4D remotas com o modelo ativo, se integram ao modelo por padrão da aplicação (cujo datastore é o objeto ds), como as classes locais. Os princípios de acesso aos dados são os seguintes:

  • do lado do servidor, acessa as tabelas e métodos 4D remotos por meio do objeto ds (ver Chamar Tabelas e Métodos 4D). Exemplo:
    var invoiceList = ds.INVOICES.all(); //acesso a tabela INVOICES do catálogo por padrãol
  • do lado cliente, dispõe das funcionalidades automáticas da livraria Wakanda Ajax Framework (WAF): as tabelas 4D remotas estão disponíveis por meio dos objetos de alto nível datasource, ou utilizando o API dataprovider, que oferece acesso de mais baixo nível.
  • em Wakanda Enterprise Studio, as tabelas da base 4D se listam com as classes locais no GUI Designer de Wakanda:

Estes princípios facilitam o desenvolvimento das aplicações 4D Mobile mas podem dar lugar a conflitos de nomes entre as tabelas, em particular quando a aplicação Web chama a vários datastores. Neste caso, pode ser útil para localizar os elementos remotos em um modelo dedicado.

Quando as tabelas 4D remotas não se fundem com o modelo ativo, utilizam um modelo "dedicado". As classes remotas então utilizam um espaço de nomes que é específico para o datastore ao que a aplicação está conectada e não se podem acessar no objeto ds. Desta maneira é possível utilizar várias tabelas com o mesmo nome em várias datastores diferentes:

    • do lado do servidor, pode acessar as tabelas e métodos 4D remotos por meio de um catálogo personalizado cujo nome é o que você passa no parâmetro de conexão Remote datastore name (diálogo), ou em localName (métodos JavaScript). Por exemplo, foi criado um link chamado "my4Dstore", no código da aplicação pode escrever:

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

No entanto, este princípio tem certas limitações na versão atual de Wakanda Enterprise:

  • Não é possível para as aplicações cliente acessar diretamente as classes remotas por meio da livraria WAF ou usando REST,
  • As classes remotas não se listam no GUI Designer de Wakanda Enterprise Studio.

Assim que geralmente se recomenda escolher o modo fusionado para as datastores remotas, se sua aplicação cliente deve acessar diretamente aos dados das tabelas 4D remotas.

Wakanda Enterprise lhe permite modificar certas características da versão local do modelo externo, por personalização, otimização ou segurança.

Para isso, só deve adicionar o código JavaScript em um arquivo .js que tem o mesmo nome local do catálogo mais o sufixo .js e colocar este arquivo na mesma pasta que o modelo. Por exemplo, se o nome do catálogo local é Emp4D.waRemoteModel, deve criar um arquivo chamado Emp4D.js na pasta do modelo.

Nota:
  • A partir da versão 11, este arquivo é criado como padrão automaticamente por Wakanda Studio
  • quando se estabelece a conexão utilizando um método JavaScript, é possível utilizar outro nome utilizando o parâmetro jsFile

Wakanda executa este arquivo quando inicializa o catálogo externo. Utilizando este arquivo, pode:

  • modificar as propriedades dos atributos de classe de dados, tais como os eventos ou o alcance. Exemplo:
    model.className.attributeName.scope ="publicOnServer"
  • adicionar os atributos calculados as classes de dados. Exemplo:
    model.className.attributeName.onGet = function()
    model.className.attributeName.onSet = function()
  • adicionar os atributos alias as classe de dados. Exemplo:
    model.className.newAlias = new Attribute("alias", "number", "Link_15.cinteger");
  • criar classes de dados locais derivadas das tabelas do catálogo externo, com o propósito de controlar totalmente os dados enviados aos clientes. Uma classe de dados derivada lhe permite apresentar uma vista personalizada de uma tabela externa, enquanto conserva o acesso global a classe de dados estendida (pai) no servidor Wakanda. Exemplo:
    model.DerivedClass = new DataClass("Emps", "public", "My4DTable")
  • eliminar atributos das classes de dados locais derivados, por segurança ou para otimizar o tráfico de rede. Exemplo:
    model.DerivedClass = new DataClass("Emps", "public", "My4DTable") 
    model.DerivedClass.removeAttribute("salary");
    model.DerivedClass.removeAttribute("comments");
    model.DerivedClass.removeAttribute("...");

    Com este exemplo, é criada uma classe derivada denominada "DerivedClass", baseada na classe "My4DTable", que envia sob a rede só os atributos que deseje utilizar.

Para obter mais informação sobre o código JavaScript para trabalhar com modelos, consulte a seção Model API na documentação de Wakanda.

Pode definir licenças específicas para Wakanda Server para o modelo remoto e/ou em forma individual para cada classe. Para obter mais informação sobre este ponto, consulte a seção Atribuição de licenças de grupos da documentação Wakanda.

 
 



Ver também 

Configuração da base de dados 4D

 
PROPRIEDADES 

Produto: 4D
Tema: Configuração da aplicação Wakanda

 
HISTÓRIA 

 
ARTICLE USAGE

4D Mobile ( 4D v16)