4D v16

Executar no atributo servidor

Página Inicial

 
4D v16
Executar no atributo servidor

Executar no atributo servidor  


 

 

O atributo do método de projeto "Execute on Server" pode ser definido na seguinte caixa de diálogo de modificação global dos atributos ou na caixa de diálogo das propriedades do método:

Quando se seleciona esta opção, o método de projeto sempre se executa no servidor, sem importar como se chama o método.

Nota: Este atributo só leva em conta para uma aplicação 4D executada em cliente/servidor.

Quando este atributo está selecionado, o contexto de execução do método de projeto é comparado com o dos triggers (ver a seção 4D Server e a linguagem 4D): o método no servidor compartilham o mesmo contexto de banco de dados para o bloqueio de registros e para as transações que o contexto correspondente do lado do cliente, mas não o mesmo contexto de linguagem (variáveis processo, conjuntos, seleções atuais). No entanto, a diferença de um trigger, o método executado no servidor não compartilha o registro atual com o contexto do cliente.
Todos os parâmetros do método ($1, $2, etc.) são enviados no servidor e o valor do parâmetro $0, é utilizado, e devolvido ao cliente.

A diferença do comando Execute on server, esta opção não provoca a criação do processo no servidor. 4D Server utiliza o processo "gêmeo" do processo cliente que solicitou a execução.
Além disso, esta opção simplifica o principio de delegação da execução de um método no servidor como a transferência de parâmetros se realiza automaticamente nos dois sentidos, como para uma chamada de método "normal".
O comando Execute on server, funciona de forma anacrônica e portanto requer maior programação e uso de semáforos para a leitura dos resultados.

Os métodos que têm o atributo "Execute on Server" estão sujeitos as mesmas regras que os procedimentos armazenados em matéria de uso dos comandos da linguagem 4D. A execução de certos comandos não está permitida no servidor, a execução de outros não é recomendável. Para maior informação, consulte o parágrafo " O que um procedimento armazenado não pode fazer (executado no servidor)?" na seção Procedimentos armazenados.

Se passa um ponteiro a uma variável (variável simples, array ou elemento de array), o valor apontado também é enviado ao servidor. Se o valor apontado é modificado no servidor pelo método, o valor modificado se devolve ao cliente para atualizar a variável correspondente do lado do cliente.
Os ponteiros em uma tabela ou campo são enviados como referência (número de tabela, número de campo). O valor do registro atual não é trocado automaticamente.

Nota: Esta opção funciona igual no modo interpretado e em modo compilado.

Exemplo  

Este é o código para o método de projeto Myappli que têm o atributo "Execute on Server":

 C_POINTER($1`Ponteiro a tabela
 C_POINTER($2`Ponteiro a campo
 C_POINTER($3`Ponteiro a array
 C_TEXT($4`Valor a procurar
 C_LONGINT($0`Resultado
 
  `Procurar e enviar valores para cada registro
 QUERY($1->;$2->=$4)
 While(Not(End selection($1->)))
    APPEND TO ARRAY($3->;myFormula($1))
    NEXT RECORD($1->)
 End while
 UNLOAD RECORD($1->)
 $0:=Records in selection($1->)

Do lado do cliente, a chamada ao método é feita assim:

 ARRAY TEXT(myArray;0)
 $vlnum :=MyAppli(->[Table_1] ;->[Table_1]Field_1 ;->myArray;"to find")

 
PROPRIEDADES 

Produto: 4D
Tema: 4D Server e a linguagem 4D

 
HISTÓRIA 

 
ARTICLE USAGE

Manual de 4D Server ( 4D v16)