Nas aplicações 4D, existem quatro tipos de sessões: sessão 4D Remote, sessão Stored Procedure, sessão Mobile e sessão Web.
O comando Session já retornava sessões Web ou Mobile. Isso dá acesso a uma grande quantidade de informação sobre a sessão e um objeto compartilhado por todos os processos na sessão.
Em 4D 20 R5, o comando Session foi estendido para a conexão Cliente/Servidor e procedimento armazenado.
Sessão 4D
Tipo diferente
As definições de uma sessão de procedimento armazenado ou uma sessão remota são:
Sessão de procedimentos armazenados
Quando chamar um método com o comando Execute on server 4D cria um processo “Stored procedure”. Todos os processos “Stored procedure” pertencem à mesma sessão, que é dedicada a procedimentos armazenados.
Sessão remota
Métodos com a propriedade “Execute on server” são executados no processo cliente gêmeo no servidor. Todos os processos gémeos do cliente são executados na mesma sessão.
Classe de sessão
Para uma sessão remota ou uma sessão de procedimento armazenado, o comando Session devolve um objeto 4D.Session que contém as seguintes propriedades:
- id – Identificador único da sessão
- info – Todas as informações sobre a sessão
- storage – Um objeto partilhado que pode ser utilizado para armazenar informações disponíveis para todos os processos da sessão remota
- userName – O nome de usuário associado à sessão
As mesmas funções da sessão Web estão disponíveis para escrever código genérico. Mas não fazem nada e retornam sempre o mesmo valor. Convidamos a consultar a documentação da classe Session.
Exemplo:
{ "id": "B022A91187EF46C6B4D58C2A9BDE3C91", "info":{ "tipo": "remoto", "userName": "Designer", "machineName": "John Computer", "systemUserName": "John Doe", "IPAddress": "localhost", "hostType": "mac", "creationDateTime": "2024-03-27T10:11:31Z", "estado": "ativo", "ID": "B022A91187EF46C6B4D58C2A9BDE3C91", "persistentID": "24336199BADF4BFE945B109E565D1189" }, "storage": { "settings": { "texto": "teste" } }, "userName": "Designer" }
Partilhar dados entre processos
Quando é criada uma nova sessão, a propriedade “Session.storage” deve ser instanciada com um objeto partilhado vazio. Em seguida, pode armazenar quaisquer dados que pretenda partilhar entre processos na mesma sessão.
Use (Session.storage)
Session .storage.settings:=New shared object("property"; $value; "property2"; $value2)
End use
Casos de utilização
Processo de autenticação e verificação do utilizador
Lança-se um procedimento de autenticação e verificação do utilizador quando um cliente se liga ao servidor. Por exemplo, isto pode implicar a introdução na aplicação de um código enviado por correio eletrônico ou SMS. Então adiciona a informação do usuário ao armazenamento da sessão, permitindo que o servidor identifique o usuário. Dessa forma, o servidor 4D pode acessar a informação do usuário para todos os processos do cliente, permitindo que código personalizado seja escrito de acordo com o papel do usuário (por exemplo, gerente, RH, etc.).
Restringir dados
Com este novo tipo de sessão, é possível restringir os dados apresentados ao utilizador ligado. Por exemplo, numa aplicação de gestão de clientes, o representante de vendas só tem acesso aos dados dos seus clientes. Todas as informações sobre esta nova funcionalidade são explicadas neste blogue.
Seguinte
Sinta-se livre para se juntar a nós no Fórum 4D se tiver alguma pergunta ou quiser partilhar sua experiência ou casos de uso.