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:
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.
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.