Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
configuracionscripts [2023/10/12 19:09] – [Variables aceptadas para objeto Usuario] scantorconfiguracionscripts [2026/09/02 23:23] (actual) clopez
Línea 3: Línea 3:
 La funcionalidad de scripts se usa para realizar validaciones o llamar a servicios web simples de tipo GET que ejecutan algún tipo de tarea en un sistema externo a Be Aware 360. La funcionalidad de scripts se usa para realizar validaciones o llamar a servicios web simples de tipo GET que ejecutan algún tipo de tarea en un sistema externo a Be Aware 360.
  
-Estos scripts son utilizados como tipo de tareas en las [[configuracionlistachequeo#Configuración de listas de chequeo|listas de chequeo]].+Estos scripts, también permiten modificar directamente los datos del caso y del contacto relacionado. Esta funcionalidad puede utilizarse para actualizar información durante la ejecución de tareas. 
 + 
 +**Nota:** Los scripts son utilizados como tipo de tareas en las [[configuracionlistachequeo#Configuración de listas de chequeo|listas de chequeo]].
  
-**Nota:** Los scripts que se usan para las listas de chequeo corresponden a métodos de solo lectura (no ejecutan acción "save"), por lo que si en el script se ejecuta alguna función que modifique el objeto Caso (update), este no se aplicará. 
  
 Los scripts se realizan en lenguaje JavaScript. Los scripts se realizan en lenguaje JavaScript.
Línea 20: Línea 21:
   * La función **encodeURI(var)** permite utilizar espacios y otros caracteres como ''{}'' ''()'' en un mensaje sin necesidad de modificarlos por su código ASCII correspondiente. Por ejemplo, colocar %20 en lugar de espacio.   * La función **encodeURI(var)** permite utilizar espacios y otros caracteres como ''{}'' ''()'' en un mensaje sin necesidad de modificarlos por su código ASCII correspondiente. Por ejemplo, colocar %20 en lugar de espacio.
   * La función **variable.replace** reemplaza los caracteres especiales que no son soportados en una URL por los que sí son soportados. Por ejemplo, utilizarlo para reemplazar ñ por n, á por a, etc.   * La función **variable.replace** reemplaza los caracteres especiales que no son soportados en una URL por los que sí son soportados. Por ejemplo, utilizarlo para reemplazar ñ por n, á por a, etc.
 +
  
 **Ejemplo de código:** **Ejemplo de código:**
Línea 55: Línea 57:
  }  }
  return jsonResult;  return jsonResult;
 +}
 +</code>
 +
 +**Ejemplo de código Uso avanzado de API:** 
 +
 +El siguiente código hace un llamado a un servicio web de forma avanzada, pudiendo incorporar diferentes métodos, body y headers, para la obtención de un token en Be Aware 360:
 +
 +<code java>
 +function execute(caso,stage,contacto,usuario,cuenta,service){
 + var jsonResult = {}
 + var method = "POST"
 + var urlBase = "https://api.beaware360.com"
 + var urlEndpoint = "/ba360/apir/v10_5/login/auth"
 +
 + var stringHeaders = "{\"Content-Type\":\"application/json\"}"
 + var stringData = "{\"pass\":\"password\", \"user\":\"username\", \"company\":\"ba360\"}"
 +
 + var salidaStr = service.executeServiceUtil(method,stringHeaders,urlBase,urlEndpoint,stringData)
 + jsonResult.MESSAGE = salidaStr.data
 + jsonResult.CODE = salidaStr.status
 + return jsonResult
 } }
 </code> </code>
Línea 68: Línea 91:
     - Para utilizar algún campo de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''. Ejemplo: ''caso.REFNUM''.     - Para utilizar algún campo de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''. Ejemplo: ''caso.REFNUM''.
     - Para utilizar los custom fields de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''. Ejemplo: ''caso.CF.nombre''.     - Para utilizar los custom fields de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''. Ejemplo: ''caso.CF.nombre''.
-    - La función debe respectar el orden de los objetos: +    - La función debe respectar el orden de los objetos. La firma de la función depende de desde dónde se invoque el script
-      <code>function execute(caso, stage, contacto, usuario, cuenta, service){}</code> +            Como tarea de tipo Script en una lista de chequeo: ''function execute(caso, script, contacto, usuario, cuenta, service)''. El segundo parámetro es el registro del script, no el paso del flujo. 
-  - Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.+            - Asociado a un Contacto, una Cuenta, un Usuario o un Caso: ''function execute(usuario, cuenta, contacto, caso, service)''
 +            - **Importante:** los parámetros se enlazan por posición, no por nombre. Un script escrito para una de las dos formas y reutilizado en la otra no falla: recibe los objetos cambiados de lugar y opera sobre datos equivocados. Antes de reutilizar un script del catálogo en otro punto, ajuste el orden de los parámetros. 
 +            - **Nota:** los eventos de paso del flujo —''preIn'', ''postIn'', ''preOut'', ''preSave'' y ''postSave''— son funciones distintas de ''execute'' y sí reciben el paso: ''(caso, stage, contacto, usuario, cuenta, service)''
 +            - **Nota:** cuando el script se asocia a un Contacto, a una Cuenta o a un Usuario, solo llega con datos el objeto que se está creando o modificando. Los demás llegan vacíos. 
 +  -Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.
  
 ===== Modificar un script ===== ===== Modificar un script =====
Línea 263: Línea 290:
   * CF    * CF 
   * GRUPOCONTACTOS   * GRUPOCONTACTOS
 +
 +===== Límites de ejecución =====
 +
 +El script se ejecuta en un entorno restringido:
 +
 +  - No puede acceder a clases de Java. Dispone de JavaScript y de los objetos que recibe como parámetros, entre ellos ''service'' para invocar servicios externos.
 +  - La ejecución se corta a los 60 segundos. Superado el plazo, el paso no avanza.
 +
 +**Importante:** el bloqueo de clases Java es posterior a los ejemplos publicados
 +en esta página. Un script existente que resuelva llamadas externas construyendo
 +objetos de Java en lugar de usar ''service'' deja de funcionar. Revíselos antes
 +de la próxima actualización.
 +