ChakraHQChakraHQ
Modelo de datos

Atributo derivado

Introducción

Los atributos derivados te permiten definir atributos para tu objeto de Chakra mediante cálculos automáticos. Estos son los tipos compatibles:

  1. Basado en fórmulas
  2. Basado en consultas
  3. Basado en Chakra Script

Como su nombre indica, no puedes establecer el valor de un atributo derivado: el sistema lo calculará según la lógica proporcionada, ya sea mediante una consulta, una fórmula o un script.

Los datos de los atributos derivados aparecen en la clave derivedData de tu objeto, como se muestra a continuación:

{  "_data": {    "id": "ecd2f0fe-c755-4deb-9a97-f5bd8d9e9f02",    "createdAt": 1597212692774,    "updatedAt": 1597212693393,    "status": "OPEN",    "data": {      "name": "Lin Liu",      "source": "Form",      "google_coordinates": [        12.323333,        27.188833      ],      "duplicate": true,      "phone_number": "4400000105",    },    "derivedData": {      "lead_source": "google",      "lead_priority": 5,      "lead_score": 50    },    ...    }}

En los datos de proceso de ejemplo que se muestran arriba, los atributos de los datos derivados (lead_score, lead_priority y lead_score) son los atributos derivados. Los atributos de data son los atributos estándar.

Tipo de atributo

Los atributos derivados siguen el mismo sistema de tipos que los atributos normales. Por eso, cuando definas un atributo derivado como lead_priority_score , también deberás definir el tipo de atributo, como int, real, ... , y asegurarte de que las fórmulas o los scripts devuelvan datos en el mismo formato.

Atributos derivados basados en Chakra Script

Los atributos derivados basados en Chakra Script ejecutan un script definido por el usuario para obtener los datos finales del script.

Entorno de ejecución

El script debe estar escrito en JavaScript y basarse en el entorno de ejecución Nodejs 10.0. Debe generar un valor después de ejecutarse. El script debe ser síncrono; se ignorarán todos los intentos de ejecución asíncrona.

Como están estrechamente vinculados a la creación y actualización de objetos, estos scripts deben ser ligeros. Se recomienda mantener el tiempo de ejecución por debajo de 100 ms.

Require

No puedes requerir módulos externos. Algunos módulos de utilidades ya están incluidos en el contexto y puedes usarlos directamente:

  1. ```_``` - Lodash - biblioteca de utilidades de JS
  2. ```moment``` - moment - biblioteca de fecha y hora de JS
  3. ```moment_tz``` - moment-timezone - biblioteca de fecha y hora de JS con complementos de zona horaria

Console.log

Console.log está deshabilitado y no funcionará como se espera durante las ejecuciones reales. Sin embargo, los registros del script mostrarán la salida de console.log durante las ejecuciones de prueba .

Payload

El script recibe un objeto JSON llamado PAYLOAD como parte del contexto global. Este contiene el objeto de Chakra para el que se deben realizar los cálculos.

Ejemplos

Los siguientes son ejemplos válidos de scripts

  1. ```1+2```
  2. ```PAYLOAD.data.duplicate? true: false```
  3. ```javascript
    function calculateNormalScore(payload) {
    return _.get(payload, 'data.lead_score') / 100
    }
    calcualteNormalScore(PAYLOAD);
### LogsThe Chakra Scripts page gives you access to logs of previous executions with the payload info as well.Log data legend:1. Started At - The time at which the script started running2. Script - Name of the script3. Status - Success/Error - Completion status of the script4. Payload - the input data provided to the script during the execution5. Response - The response output provided the script6. Log - The log outputted by the script during a test execution7. Exception Log - Exception log if any when the script errors out8. Duration(ms) - Duration in Millie's taken for the script to be executed9. Debug - false indicates the execution happened in-situ while true indicates a test run initiated by the user### TestYou can modify and test the script by using the test payload option. It is **strongly recommended** to use the payload of previous script executions to test a script before saving modifications

En esta página