4D v16

Atributo Ejecutar en servidor

Inicio

 
4D v16
Atributo Ejecutar en servidor

Atributo Ejecutar en servidor  


 

 

El atributo dle método de proyecto "Execute on Server" puede definirse en la siguiente caja de diálogo de modificación global de los atributos o en la caja de diálogo de las propiedades del método:

Cuando se selecciona esta opción, el método de proyecto siempre se ejecuta en el servidor, sin importar cómo se llama el método.

Nota: este atributo sólo se tiene en cuenta para una aplicación 4D ejecutada en cliente/servidor.

Cuando este atributo está seleccionado, el contexto de ejecución del método de proyecto es comparable con el de los triggers (ver la sección 4D Server y el lenguaje 4D): el método en el servidor comparte el mismo contexto de base de datos para el bloqueo de registros y para las transacciones que el contexto correspondiente del lado del cliente, pero no el mismo contexto de lenguaje (variables proceso, conjuntos, selecciones actuales). Sin embargo, a diferencia de un trigger, el método ejecutado en el servidor no comparte el registro actual con el contexto del cliente.
Todos los parámetros del método ($1, $2, etc.) se envían en el servidor y el valor del parámetro $0, si se utiliza, se devuelve al cliente.

A diferencia del comando Execute on server, esta opción no provoca la creación del proceso en el servidor. 4D Server utiliza el proceso "gemelo" del proceso cliente que solicitó la ejecución.
Además, esta opción simplifica el principio de delegación de la ejecución de un método en el servidor ya que la transferencia de parámetros se efectúa automáticamente en los dos sentidos, como para una llamada de método "normal".
El comando Execute on server, funciona asincrónicamente y por lo tanto requiere más programación y uso de semáforos para la lectura de los resultados.

Los métodos que tienen el atributo "Execute on Server" están sometidos a las mismas reglas que los procedimientos almacenados en materia de uso de los comandos del lenguaje 4D. La ejecución de ciertos comandos no está permitida en el servidor, la ejecución de otros no es recomendable. Para mayor información, consulte el párrafo "¿Qué no puede hacer un procedimiento almacenado (ejecutado en el servidor)?" en la sección Procedimientos almacenados.

Si pasa un puntero a una variable (variable simple, array o elemento de array), el valor apuntado también se envía al servidor. Si el valor apuntado es modificado en el servidor por el método, el valor modificado se devuelve al cliente para actualizar la variable correspondiente del lado del cliente.
Los punteros en una tabla o campo se envían como referencia (número de tabla, número de campo). El valor del registro actual no se intercambia automáticamente.

Nota: esta opción funciona igual en modo interpretado y en modo compilado.

Ejemplo  

Este es el código para el método de proyecto Myappli que tiene el atributo "Execute on Server":

 C_POINTER($1`Puntero a tabla
 C_POINTER($2`Puntero a campo
 C_POINTER($3`Puntero a array
 C_TEXT($4`Valor a buscar
 C_LONGINT($0`Resultado
 
  `Buscar y 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->)

Del lado del cliente, la llamada al método se hace así:

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

 
PROPIEDADES 

Producto: 4D
Tema: 4D Server y el lenguaje 4D

 
HISTORIA 

 
ARTICLE USAGE

Manual de 4D Server ( 4D v16)