Construir um diálogo personalizado de ligação remota

Tradução automática de Deepl

Precisa de construir um diálogo de ligação 4D personalizado? Interessado em ligar a sua aplicação cliente a diferentes servidores? Estes são dois cenários que 4D v18 lhe permite tratar. Este post de blogue é para si se quiser criar um diálogo de ligação remota personalizado e ligá-lo a servidores 4D fundidos. Continue a ler!

Porque devo escrever o meu próprio diálogo de ligação?

Há vários casos de utilização para modificar o diálogo de ligação 4D incorporado:

  • CUSTOMIZAÇÃO

Pretende-se personalizar o diálogo padrão para ligações remotas ao servidor.

  • MÚLTIPLAS FILIAIS

Ao implantar a sua aplicação e criar várias bases de dados distintas. Por exemplo, uma base de dados diferente para cada filial de um grupo. Na base de dados de ligação, é possível gerir a que servidores e utilizadores de bases de dados se podem ligar e permitir que se liguem directamente.

  • BASE DE DADOS DE ARQUIVO

Outra forma de utilizar um diálogo personalizado é escolher a que utilizadores da base de dados do ano fiscal arquivados podem aceder.

  • PORTAL DE APLICAÇÃO

Se implementar vários produtos e quiser que os seus utilizadores utilizem uma única aplicação “portal” para se ligarem a cada produto.

Caso de utilização

Uma editora de software tem uma quinta de servidores alojada na nuvem, correspondendo cada servidor a uma necessidade empresarial específica. Anteriormente, eles implantaram tantas aplicações remotas como o número de utilizadores que podiam aceder aos servidores. Agora, podem implantar uma única aplicação remota para todos os servidores com uma base de dados “directório”. Utilizando pedidos HTTP ou datastores remotos, cada servidor envia o seu estado e informação de ligação para o servidor de “directório”. A aplicação ligada pode então consultar a base de dados de directório, ver uma lista de servidores disponíveis, e ligar-se a um.

Como fazer isso?

CRIANDO UMA BASE DE DADOS DE LIGAÇÕES

Primeiro, é necessário criar uma base de dados de ligação contendo o seu próprio diálogo de ligação. O OPEN DATABASE foi alargado para permitir a ligação a um Servidor 4D. Gerar um ficheiro 4DLink contendo a localização e porta do servidor, e depois passá-lo como parâmetro para o comando. A aplicação autónoma pára automaticamente o seu código e liga-se ao servidor, tornando-se uma aplicação remota típica.

Aqui está um snippet de código de um diálogo de selecção de servidor onde Form.selectedServer contém a informação do Servidor 4D:

Se (Form.selectedServer#Null)
C_TEXT ($xml)
C_OBJECT ($link)
$xml :="<?xml version=\"1.0\" encoding=\"UTF-8\"?><database_shortcut is_remote=\"true\" server_database_name==\"FA_RemoteConnexionServ=\""+Form.selectedServer.IP+": "+Form.selectedServer.portID+"\"/>"
$link :=Folder(fk user preferences folder).file("server.4dlink")
$link .setText($xml)
OPEN DATABASE ($link.platformPath)
Terminar se

Quando a sua base de dados de ligações estiver pronta, só precisa de construir uma base de dados compilada.

FUNDINDO A BASE DE DADOS DE DESTINO

Apenas as aplicações clientes fundidas podem ligar-se a servidores fundidos. Por conseguinte, desenvolvemos um novo mecanismo no processo de construção da aplicação para permitir a incorporação da base de dados de ligação na aplicação cliente fundida.

Criámos as novas chaves BuildApp, DatabaseToEmbedInClientWinFolder e DatabaseToEmbedInClientMacFolder, para conter os caminhos da base de dados de ligação compilada. Desta forma, ao construir a aplicação cliente/servidor final, o processo de construção da aplicação incorporará a base de dados de ligação compilada na aplicação cliente e alterará o seu nome.

Esta aplicação pode ser executada sem um ficheiro de dados ou qualquer licença. Contudo, se precisar de um ficheiro de dados, pode colocar um ficheiro “Default Data.4DD” numa pasta “Default Data” perto da estrutura compilada. Neste caso, a licença para uma aplicação autónoma fundida é integrada durante o processo de compilação da aplicação.

Trata-se de uma estrutura de aplicação cliente fundida sem uma base de dados incorporada (“cliente antigo”):

Esta é uma amostra de chaves BuildApp para embutir uma aplicação de ligação:
<DatabaseToEmbedInClientMacFolder>
::connectionApp_Build:Base de dados compilada:connectionApp:
</DatabaseToEmbedInClientMacFolder>

Esta é uma base de dados de ligações compilada:
blank

E finalmente, esta é uma estrutura de aplicação de cliente fundida:
blank

COMO É QUE FUNCIONA?

Em tempo de execução, a aplicação cliente fundida abrirá a base de dados de ligação integrada e depois permitirá ao utilizador seleccionar o servidor fundido ao qual se ligar. Se for utilizado um ficheiro de dados predefinido, este está em modo só de leitura.

Note-se que o processo de actualização automática a partir do servidor fundido ainda está disponível. Quando a aplicação de ligação fundida se liga ao servidor, se a sua versão não estiver ao alcance do servidor, é lançada uma actualização automática como se a aplicação fosse uma aplicação cliente padrão fundida!

Avatar
• Proprietário do produto - Damien Fuzeau entrou ao time 4D Product em fevereiro de 2019. Como Proprietário do Produto, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Damien é formado em engenharia de software pela Universidade de Nantes. Trabalhou mais de 23 anos em sua empresa anterior, primeiro como desenvolvedor (descobrindo 4D em 1997), e mais tarde como gerente de engenharia e arquiteto de software. Essa empresa é um Partner OEM de 4D e lançou softwares empresariais baseados em 4D para milhares de usuários em centenas de servidores. Portanto Damien está acostumado ao desenvolvimento e lançamento de 4D em contextos multilinguais.