VProcess

Hereda de: VObjectInstance.

La clase VProcess representa un proceso en ejecución. Nos permite ejecutar procesos. Construimos un objeto VProcess pasándole el objeto VRoot en curso y le indicamos el proceso a ejecutar con la función setProcess. Una vez inicializado el objeto ya podemos usar el resto de funciones (salvo result): le pasamos un registro (setRegisterIn) o una lista de registros (setRegisterListIn) en función del tipo de entrada del proceso y también el contenido a las variables locales del proceso con setVarLocal (si lo requiere) y la ejecutamos con la función exec. Ahora ya podemos recoger los resultados con la función result, que nos devuelve un objeto nulo, un objeto de la clase VReigster o un objeto de la clase VRegisterList en función del tipo de salida del proceso.

Esta clase se ha incorporado al API en la versión 7.15.

Funciones

Constructor

Función

VProcess( VRoot root )

De operaciones

Retorno

Función

Boolean

exec( Number nRunIn = VProcess::RunInThisThread, String szIdRefCola )

Objeto

Inicialización

Retorno

Función

void

setProcess( String szIdRefProcess )

Boolean

setRegisterIn( VRegister registerIn )

Boolean

setRegisterListIn( VRegisterList registerListIn )

Enumeraciones

Runmode (Modos de ejecución)

  • RunInThisThread = 0

  • RunInNewThread = 1

  • RunInServer = 2

  • RunInServerAsync = 3

Documentación de funciones

Constructor

VProcess( VRoot root )

Crea una instancia de objeto de la clase VProcess. Debe ejecutarse la función setProcess() para asignarle el proceso a ejecutar.

Parámetros:

  • root: VRoot que indica el objeto VRoot en curso del que se hará uso, normalmente theRoot.

Funciones de operaciones

Boolean exec( Number nRunIn = VProcess::RunInThisThread, String szIdRefCola )

Ejecuta el proceso y devuelve true si finaliza correctamente y false en caso contrario. Los parámetros de la función son opcionales. Si no se especifican el proceso se ejecutará en el mismo hilo que el proceso JavaScript que lanza la función. Si deseamos especificar el segundo parámetro para indicar la cola de ejecución, obligatoriamente debemos especificar el primero (modo de ejecución). Si se especifica una cola de ejecución el proceso se lanzará a través de dicha cola, esto es válido para procesos que se ejecuten en segundo plano, RunInNewThread.

Parámetros:

  • nRunIn: Modo de ejecución. Ver enum de modos de ejecución. Por defecto, RunInThisThread.

  • szIdRefCola: Identificador de referencia (Alias/Identificador) de un objeto Cola de procesos.

Los valores del enum de modos de ejecución son:

  • RunInThisThread: Se ejecuta en el mismo hilo en el que está el proceso JavaScript ejecutándose. Equivale a la ejecución en primer plano.

  • RunInNewThread: Se ejecuta en un nuevo hilo. Equivale a la ejecución en segundo plano.

  • RunInServer: Se ejecuta en el servidor. Equivale a la ejecución en tercer plano.

  • RunInServerAsync: Se ejecuta en nuevo hilo en el servidor. Equivale a la ejecución en 4º plano.

Objeto result()

Devuelve Nulo, VRegister o VRegisterList según tipo de salida del proceso.

Inicialización

void setProcess( String szIdRefProcess )

Fija el proceso que se asocia al objeto.

Parámetros:

  • szIdRefProcess: String que contiene el identificador referencia (IdRef=Alias_Proyecto/Id_Proceso) del proceso.

Boolean setRegisterIn( VRegister registerIn )

Añade una ficha o registro al proceso. Esta es la forma de alimentar el registro para un proceso de origen ficha.

Parámetros:

  • registerIn: Objeto de la clase VRegister que alimentará el registro de entrada (theRegisterIn) del proceso.

Boolean setRegisterListIn( VRegisterList registerListIn )

Añade una lista de registros al proceso. Esta es la forma de alimentar la lista de registros para un proceso de origen lista.

Parámetros:

  • registerListIn: Objeto de la clase VRegisterList que alimentará la lista de registros de entrada (theRegisterListIn) del proceso.

Ejemplos

1. Ejecutar un proceso

// ---------------------------------------------------------------------------------------
// Ejemplo de ejecución de un proceso de origen ficha persona y destino lista de películas
// ---------------------------------------------------------------------------------------

importClass("VProcess");

var proceso = new VProcess(theRoot);
proceso.setProcess("CINE/PROCESS1"); // IN: ficha persona. OUT: lista peliculas

var persona = new VRegister(theRoot);
persona.setTable("CINE_DAT/PERSONAS");

if (persona.readFirstRegister("ID"))
{
  if (proceso.setRegisterIn(persona))
  {
    if (proceso.exec())
    theRegisterListOut.append(proceso.result());
  };
};

2. Proceso que calcula el precio de un artículo en base a sus parámetros

// -----------------------------------------------------------------------------------
// Proceso único que calcula el precio del artículo en base a los parámetros recibidos
// -----------------------------------------------------------------------------------

//Se crea el manejador de objeto del proceso
var procesoCalculoPrecio = new VProcess(theRoot);

//Se alimenta con las variables necesarias
procesoCalculoPrecio.setProcess("gestion.dat/CAL_PRE_ART");
procesoCalculoPrecio.setVar("PRM_TRF_TIP", 2);
procesoCalculoPrecio.setVar("PRM_FCH", currentDate());
procesoCalculoPrecio.setVar("PRM_CLF", CLF);
procesoCalculoPrecio.setVar("PRM_ENT_GES", ENT_GES);
procesoCalculoPrecio.setVar("PRM_ART", ART);
procesoCalculoPrecio.setVar("PRM_CNT", 1);

//Se dispara el proceso con los parametros indicados
if (procesoCalculoPrecio.exec())
{
  //Leemos las variables de los resultados de la ejecucion de l proceso
  var precioPRE = procesoCalculoPrecio.varToDouble("PRE");
  var precioDTO_1 = procesoCalculoPrecio.varToDouble("DTO_1");
  var precioDTO_2 = procesoCalculoPrecio.varToDouble("DTO_2");
  var precioDTO_3 = procesoCalculoPrecio.varToDouble("DTO_3");
  var precioDTO_4 = procesoCalculoPrecio.varToDouble("DTO_4");
  var precioDTO_5 = procesoCalculoPrecio.varToDouble("DTO_5");
}
else
{
  var precioPRE = 0;
  var precioDTO_1 = 0;
  var precioDTO_2 = 0;
  var precioDTO_3 = 0;
  var precioDTO_4 = 0;
  var precioDTO_5 = 0;
};

Última actualización