Skip to main content

Introduction

Derived attributes allow you to define attributes for your Chakra Object based on automatic calculations. Following are the supported types:

  1. Formula Based

  2. Query Based

  3. Chakra Script Based

As the name suggests, you cannot set the value of a derived attribute - it will be computed by the system based on the logic provided either in the form of a query, formula or script.

Derived attribute data shows up under the derivedData key of your object like:

{
"_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
},
...
}

In the sample process data shown above, the attributes under derived data - lead_score, lead_priority and lead_score are the derived attributes. The attributes under data are the standard attributes.

Attribute Type

Derive attributes follow the same type system as normal attributes. So when you define a derived attribute like lead_priority_score you will also need to define the attribute type like int, real, ... and ensure that the formula/scripts returns data in the same format.

Chakra Script Based DA

Chakra Script based derived attributes execute a user defined script to derive the final Script data. The attribute page for these attributes look something like below:

![image-20200812115316160](/Users/sahoo/Library/Application Support/typora-user-images/image-20200812115316160.png)

Runtime

The script must be a javascript script based on Nodejs 10.0 runtime. It should output a value after execution. The script has to be synchronous all async attempts are ignored.

Because they are strictly tied to Object creation and updates - these scripts would be kept light-weight. Recommended practice is to keep execution time under 100 ms.

Require

You cannot require external modules. A few utility modules are pre-included in the context and can be used directly:

  1. _ - Lodash - JS utility lib
  2. moment - moment - JS datetime lib
  3. moment_tz - moment-timezone - JS datetime lib with timezone plugins

Console.log

Console.log is disabled and will not work as intended during actual runs. However the script logs will return console.log output during test runs.

Payload

The script is provided a json object called PAYLOAD as part of the global context that contains the chakra object for which the calculations are to be made.

Examples

All the following are valid examples of scripts

  1. 1+2

  2. PAYLOAD.data.duplicate? true: false

  3. function calculateNormalScore(payload) {
    return _.get(payload, 'data.lead_score') / 100
    }
    calcualteNormalScore(PAYLOAD);

Logs

The Chakra Scripts page gives you access to logs of previous executions with the payload info as well.

![image-20200812120308218](/Users/sahoo/Library/Application Support/typora-user-images/image-20200812120308218.png)

Log data legend:

  1. Started At - The time at which the script started running
  2. Script - Name of the script
  3. Status - Success/Error - Completion status of the script
  4. Payload - the input data provided to the script during the execution
  5. Response - The response output provided the script
  6. Log - The log outputted by the script during a test execution
  7. Exception Log - Exception log if any when the script errors out
  8. Duration(ms) - Duration in Millie's taken for the script to be executed
  9. Debug - false indicates the execution happened in-situ whule true indicates a test run initiated by the user

Test

You 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