ChakraHQChakraHQ
نموذج البيانات

سمة مشتقة

مقدمة

تتيح لك السمات المشتقة تحديد سمات لكائن Chakra بالاستناد إلى عمليات حسابية تلقائية. فيما يلي الأنواع المدعومة:

  1. مستندة إلى صيغة
  2. مستندة إلى استعلام
  3. مستندة إلى Chakra Script

كما يوحي الاسم، لا يمكنك تعيين قيمة السمة المشتقة؛ إذ يحسبها النظام استنادًا إلى المنطق المحدد، سواء أكان في صورة استعلام أم صيغة أم نص برمجي.

تظهر بيانات السمات المشتقة ضمن المفتاح derivedData في الكائن، على النحو التالي:

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

في بيانات العملية النموذجية الموضحة أعلاه، تُعد السمات ضمن البيانات المشتقة - lead_score وlead_priority وlead_score - سمات مشتقة. أما السمات ضمن data فهي سمات عادية.

نوع السمة

تتبع السمات المشتقة نظام الأنواع نفسه المتبع في السمات العادية. لذا، عند تعريف سمة مشتقة مثل lead_priority_score ، ستحتاج أيضًا إلى تحديد نوع السمة مثل int, real, ... ، و التأكد من أن الصيغة/النصوص البرمجية تُرجع بيانات بالتنسيق نفسه.

سمات مشتقة مستندة إلى Chakra Script

تنفّذ السمات المشتقة المستندة إلى Chakra Script نصًا برمجيًا يحدده المستخدم لاشتقاق بيانات Script النهائية.

بيئة التشغيل

يجب أن يكون النص البرمجي مكتوبًا بلغة JavaScript ويستند إلى بيئة تشغيل Nodejs 10.0. ويجب أن يُخرج قيمة بعد التنفيذ. كما يجب أن يكون التنفيذ متزامنًا، إذ يتم تجاهل جميع محاولات التنفيذ غير المتزامن.

نظرًا إلى ارتباط هذه النصوص البرمجية ارتباطًا وثيقًا بإنشاء الكائنات وتحديثها، يجب أن تكون خفيفة. ومن الممارسات الموصى بها إبقاء وقت التنفيذ دون 100 ms.

الاستيراد باستخدام Require

لا يمكنك استيراد وحدات خارجية. توجد بعض الوحدات المساعدة مضمّنة مسبقًا في السياق، ويمكن استخدامها مباشرةً:

  1. ```_``` - Lodash - مكتبة أدوات مساعدة لـ JS
  2. ```moment``` - moment - مكتبة للتاريخ والوقت في JS
  3. ```moment_tz``` - moment-timezone - مكتبة للتاريخ والوقت في JS مع إضافات للمناطق الزمنية

Console.log

تم تعطيل Console.log ولن يعمل كما هو متوقع أثناء عمليات التشغيل الفعلية. ومع ذلك، ستعرض سجلات النص البرمجي مخرجات console.log أثناء عمليات التشغيل الاختبارية .

الحمولة

يُتاح للنص البرمجي كائن json يُسمى PAYLOAD ضمن السياق العام، ويحتوي على كائن chakra المطلوب إجراء العمليات الحسابية عليه.

أمثلة

فيما يلي أمثلة صالحة للنصوص البرمجية

  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

في هذه الصفحة