Variables dinámicas
Es el cálculo de una variable específica, que puedes desarrollar por medio del lenguaje de programación JavaScript.
Crea tus propias variables personalizadas sin necesidad de solicitar al área de Soporte hacer el cálculo. Todo se podrá hacer en tu ambiente de prueba y sincronizar al ambiente de producción. Se pueden crear pasos de tipo "variables dinámicas”, es decir, definir las variables que quieren calcular y agregar a su flujo, así como programar el cálculo en javascript desde la página en línea.
La versión de javascript soportada es la 9.0.257.18
Las nuevas variables calculadas estarán disponibles en los datos del workfloos, y se podrán usar en los árboles de decisión como cualquier dato del workfloo.
Para crear un nuevo proyecto de variables dinámicas, haz clic en menú Conectores y luego en VP Dinámica.
Cuando agregues un nuevo proyecto para calcular Variables Personalizadas(VP), podrás observar la siguiente interfaz.
Modifica el nombre del conector de VP Dinámicas a calcular.
En esta sección podrás ver, editar y borrar todas las variables que quieres calcular.
Haz clic en Añadir. Aparecerá una ventana donde podrás elegir el tipo de variable y su nombre. En el menú desplegable de la derecha podrás elegir de entre cuatro opciones: -Numérico -Alfanumérico -Lista -Fecha
Una vez que elijas, haz clic en Aplicar
Puedes añadir las variables que necesites. Una vez terminado, haz clic en Aplicar.
Si deseas borrar o editarlas, haz clic en los tres puntos y verás las opciones Edit y Delete.
Ejemplo del json de un workfloo
Se puede obtener el JSON de un workfloo desde el histórico.
Descargar el json de un flujo
Se puede pegar este .json como ejemplo del proyecto de VP, y así se puede aplicar el código sobre este ejemplo. Eso permite modificar el .json para probar los cálculos con cualquier caso.
Resultado de la ejecución
En la sección Resultados, se mostrará el cálculo de las variables utilizando el workfloo de ejemplo que se proporcionó en la sección de Ejemplo.
En el caso de que el código de alguno de los archivos .json tenga algún error, se mostrará en qué archivo y línea se encontró este error.
Archivos javascript
Del lado superior derecho está la sección Javascript; aquí puedes agregar, renombrar o eliminar los archivos en formato JavaScript (js), que tu proyecto requiera. Una característica que se debe cuidar en esta sección es el orden en el que están los archivos, ya que este es el orden en el que serán ejecutados y si existen dependencias entre archivos mostrará un error.
Archivos JavaScript en el proyecto
Code editor
Aquí podrás escribir todos los cálculos que necesites para tus variables. El lenguaje que se debe utilizar es JavaScript. La variable javascript workfloo está creada por el sistema, y contiene los datos que corresponden al json del workfloo corriente. En el modulo de diseño de VP, la variable workfloo contiene los datos del ejemplo definido en la parte izquierda.
Para poder recuperar las variables calculadas deben ser puestas en una variable llamada vp, en esta variable vp los índices serán los id de cada VP que aparecen en la lista de las variable, y el contenido será el resultado de los cálculos realizados. Si no se pone esta variable marcará un error en la sección de resultados.
Ejemplos al crear una nueva variable
Por default carga un ejemplo de todo un proyecto que crea una nueva variable donde se calcula la edad de una persona en base a la fecha de nacimiento. Para que el ejemplo funcione se debe cambiar idOfVariable por el id que tiene la variable Edad.
Ejemplo JavaScript
var steps = workfloo.steps;
var formSteps = steps.filter(value => value.type == "FORMULARIO"); ////Se filtran los steps que sean de tipo FORMULARIO
var birthDate = "";
for(let i in formSteps ) { ///// Se busca en todos los steps de tipo formulario,
formFields= formSteps[i].formData.data; ///// en todos los campos del formulario si existe el
for(let j in formSteps) { ///// campo birthdate para obtener la fecha de nacimiento
if(formFields[j].apiId == "birthdate"){
birthDate = formFields[j].value;
break;
}
}
}
birthDate= new Date(birthDate); ///// Se obtiene el año, mes y dia de nacimiento
birthYear = birthDate.getFullYear();
birthMonth = birthDate.getMonth();
birthDay = birthDate.getDate();
nowDate = new Date(); //// Se obtiene el año, mes y dia de hoy
nowYear = nowDate.getFullYear();
nowMonth = nowDate.getMonth();
nowDay = nowDate.getDate();
var age = nowYear - birthYear; //// Se calculan los años transcurridos
if (birthMonth > nowMonth ){ /// se verifica si ya se cumplieron los años o aun no
age =age-1;
}else if ((birthMonth == nowMonth ) && (birthDay > nowDay )){
age =age-1;
}
var vp = {};
/*vp[idOfVariable] = valueOfVariable El idOfVariable es el id que se aparece a lado de la variable en el menu de variables
y el valueOfVariable es el valor que tomara, es importante que sea del tipo que se le
asigno.*/
vp[idOfVariable] = age;
Ejemplo Json
{
"idUnykoo": 136,
"created": "2021-07-14T17:43:02.074Z",
"status": "SUCCESS",
"workflooName": "testVP newCreated",
"steps": [
{
"created": "2021-07-14T17:43:13.986Z",
"formData": {
"data": [
{
"apiId": "birthdate",
"fileToSign": false,
"name": "Fecha de Nacimiento",
"type": "DATE",
"value": "1994-07-09"
}
],
"formId": "54",
"formName": "TestVp",
"id": "136-0"
},
"idUnykoo": 136,
"login": "jaime",
"modified": "2021-07-14T17:43:14.016Z",
"origin": "BROWSER",
"status": "SUCCESS",
"stepIndex": 1,
"type": "FORMULARIO",
"userId": "1"
}
]
}
Se puede utilizar la librería JsonPath a continuación se puede ver un ejemplo de código utilizando la librería de JsonPath que también calcula la edad.
var birthDate = jsonpath.query(workfloo,"$..steps[?(@.type=='FORMULARIO')].formData.data[?(@.apiId=='birthdate')].value");
birthDate= new Date(birthDate); ///// Se obtiene el año, mes y dia de nacimiento
birthYear = birthDate.getFullYear();
birthMonth = birthDate.getMonth();
birthDay = birthDate.getDate();
nowDate = new Date(); //// Se obtiene el año, mes y dia de hoy
nowYear = nowDate.getFullYear();
nowMonth = nowDate.getMonth();
nowDay = nowDate.getDate();
var age = nowYear - birthYear; //// Se calculan los años transcurridos
if (birthMonth > nowMonth ){ /// se verifica si ya se cumplieron los años o aun no
age =age-1;
}else if ((birthMonth == nowMonth ) && (birthDay > nowDay )){
age =age-1;
}
var vp = {};
/*vp[idOfVariable] = valueOfVariable El idOfVariable es el id que se aparece a lado de la variable en el menu de variables
y el valueOfVariable es el valor que tomara, es importante que sea del tipo que se le
asigno.*/
vp[15] = age;