Scripts en Trabajos de Finntalk

Scripts en Trabajos

Se explica la funcionalidad que permite ingresar scripts en los trabajos de Finntalk.

Las ventajas en relación a un BPM son las siguientes:

  • No se necesita cargar un caso.

  • Se ejecuta desde el monitor de trabajos o bien se puede configurar para que sea automático.

  • No usa diagrama.

  • No contiene las clases relacionadas con el caso.

Nota: Se asume que el usuario tiene los conocimientos básicos en AppBuilder.

Modo de Uso

Se accede desde AppBuilder → Actualizaciones → Trabajos .

Configurar Trabajo

Se crea o edita un trabajo. En la solapa Pasos, se crea el paso y en la solapa General se configura:

Luego en la pestaña Pull Manager se añade el script en el campo Código Scripting. Además pueden agregarse parámetros asociados al script.

Configurar Script

Los scripts funcionan similar a un BPM pero con algunas modificaciones a saber:

No pueden ser utilizadas en el scripting todas las clases relacionadas con Caso.

Ejemplo:

CasoVO;

CasoBPMAccionVO;

CasoScriptResultado;

Por otro lado, las siguientes tres clases serán reemplazadas:

UtilsHLP → ScriptingUtilsHLP

ConfigHP → ScriptingConfigHLP

XMLManagerHLP → ScriptingXMLManagerHLP

Ejemplo 1: Trabajo de prueba

Se genera un trabajo con Script que genere un error para probar su funcionamiento.

En Código Scripting se agrega la siguiente línea:

throw new FunctionalException(String.valueOf(params.get(“fecha”)));

Y como parámetro se agrega fecha e ingresa un valor:

|602x368.99999999999994

Se guarda. Se activa Finntalk (AppBuilder → Actualizaciones → Activar Trabajos) y accede a AppBuilder → Actualizaciones → Monitor de Trabajos.

Se ejecuta el trabajo creado. El trabajo ejecutado presenta lo siguiente:

Ejemplo 2: Duplicar transacción

Se presenta a continuación, un script para incluir en un trabajo:

//Duplicar una transacción a partir de otra.

import app.bsuite.transacciones.operacion.OperacionHLP;

import app.bsuite.transacciones.operacion.OperacionSubtipoHLP;

import app.bsuite.transacciones.operacion.model.OperacionVO;

import app.bsuite.transacciones.operacion.model.OperacionSubtipoVO;

import app.bsuite.transacciones.operacion.model.OperacionItemProductoVO;

import app.bsuite.configuracion.common.ProductoHLP;

import app.bsuite.configuracion.common.model.ProductoVO;

import app.bsuite.servicios.dimension.model.DimensionTransaccionVO;

import app.bsuite.servicios.dimension.DimensionTransaccionHLP;

import app.bsuite.servicios.dimension.DimensionTransaccionSRV;

import app.bsuite.configuracion.contabilidad.model.CuentaVO;

import app.teamplace.servicios.caso.scripting.helpers.transactions.TransactionHLP;

String sessionID = params.getSessionID();

DBHelper dbh = params.getDBHelper();

//CasoBPMAccionVO accion = params.get(“Accion”);

//CasoScriptResultado result = new CasoScriptResultado();

ScriptingUtilsHLP utils = new ScriptingUtilsHLP(sessionID, dbh);

ScriptingXMLManagerHLP xmlMgr = new ScriptingXMLManagerHLP(sessionID, dbh);

//MailManagerHLP sender = new MailManagerHLP(sessionID, dbh);

//NotifierHLP notifier = new NotifierHLP(sessionID, dbh);

//CaseHLP cases = new CaseHLP(sessionID, dbh);

//BPMServiceHLP bpm = new BPMServiceHLP(sessionID, dbh);

TransactionHLP transaction = new TransactionHLP(sessionID,dbh);

Long DOCUMENTO = new Long(params.get(“idDoc”)); /* Tipo de Documento Destino */

Integer TIPO_PRECIO_SOBRE_CANT_WORKFLOW = new Integer(0);

Integer RELACION_TRANSACCION_ASOCIADA = new Integer(-100);

Long origenID = params.get(“IdTrans”);

String nombre = “”;

OperacionHLP operacionHelper = new OperacionHLP();

OperacionVO destino = new OperacionVO(sessionID);

OperacionVO origen = OperacionHLP.getByPrimaryKey(new OperacionVO(sessionID), origenID, dbh, false);

nombre = origen.getNombre();

destino = operacionHelper.duplicate(origen, dbh);

destino.setNumeroDocumento(“”);

destino.setTransaccionSubtipoID(DOCUMENTO);

destino.setWorkflowID(origen.getWorkflowID());

destino.setOrganizacionID(origen.getOrganizacionID());

destino.setEmpresaID(origen.getEmpresaID());

destino.setDescripcion("Generado por " + nombre);

operacionHelper.doInsert(destino, dbh);

Puede apreciarse que ciertas líneas - propias de un BPM - están comentadas.

Asimismo se ven 2 de las clases que llevan Scripting adelante y otra clase tuvo que ser importada desde teamplace (en rojo).

Se incorporaron 2 parámetros que son tomados luego por el código (en azul).

Al ejecutarse, genera una transacción duplicada de la establecida en idTrans.

Nota: Este caso es a modo de demostrar cómo varía el uso de determinado código en Scripting frente a BPM.