Atributo derivado
Introdução
Os atributos derivados permitem definir atributos para seu objeto do Chakra com base em cálculos automáticos. Confira abaixo os tipos compatíveis:
- Com base em fórmula
- Com base em consulta
- Baseado em Chakra Script
Como o nome sugere, não é possível definir o valor de um atributo derivado: ele será calculado pelo sistema com base na lógica fornecida por meio de uma consulta, fórmula ou script.
Os dados dos atributos derivados aparecem na chave derivedData do seu objeto, como neste exemplo:
{ "_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 }, ... }}Nos dados de processo de exemplo mostrados acima, os atributos em dados derivados — lead_score, lead_priority e lead_score — são os atributos derivados. Os atributos em data são os atributos padrão.
Tipo de atributo
Os atributos derivados seguem o mesmo sistema de tipos dos atributos normais. Portanto, ao definir um atributo derivado como lead_priority_score , você também precisará definir o tipo do atributo, como int, real, ... , e garantir que a fórmula ou os scripts retornem dados no mesmo formato.
Atributo derivado baseado em Chakra Script
Os atributos derivados baseados em Chakra Script executam um script definido pelo usuário para derivar os dados finais do script.
Runtime
O script deve ser escrito em JavaScript e baseado no runtime Nodejs 10.0. Ele deve gerar um valor após a execução. O script precisa ser síncrono; todas as tentativas assíncronas serão ignoradas.
Como estão estritamente vinculados à criação e às atualizações do objeto, esses scripts devem ser leves. A prática recomendada é manter o tempo de execução abaixo de 100 ms.
Require
Não é possível usar require para carregar módulos externos. Alguns módulos utilitários já estão incluídos no contexto e podem ser usados diretamente:
- ```_``` - Lodash - biblioteca utilitária de JS
- ```moment``` - moment - biblioteca de data e hora para JS
- ```moment_tz``` - moment-timezone - biblioteca de data e hora para JS com plugins de fuso horário
Console.log
Console.log está desabilitado e não funcionará como esperado durante as execuções reais. No entanto, os logs do script retornarão a saída de console.log durante as execuções de teste .
Payload
O script recebe um objeto JSON chamado PAYLOAD como parte do contexto global. Esse objeto contém o objeto Chakra para o qual os cálculos devem ser feitos.
Exemplos
Todos os exemplos de script a seguir são válidos
- ```1+2```
- ```PAYLOAD.data.duplicate? true: false```
- ```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