این گروه از گره ها برای اجرای عملیات مختلف بر روی پیام های ورودی استفاده می شود.
- گره ایجاد هشدار (Create Alarm)
- گره حذف هشدار (Clear Alarm)
- گره تأخیر (Delay)
- گره تولید کننده (Generator)
- گره ثبت وقایع (Log)
- گره پاسخ به فراخوانی ها RPC یا (RPC Call Reply)
- گره درخواست RPC یا (RPC Request)
- گره ذخیره ساز صفت ها (Save Attributes)
- گره ذخیره داده زمانی (Save Timeseries)
- گره ذخیره در جدول دلخواه (Save to Custom Table)
- گره تخصیص به مشتری (Assign To Customer)
- گره لغو تخصیص از مشتری (Unassign from Customer)
- گره ایجاد رابطه (Create Relation)
- گره رویداد های محیط موقعیت جغرافیایی (GPS Geofencing Events)
گره ایجاد هشدار (Create Alarm) #

این گره تلاش میکند تا آخرین هشدار را با نوع هشدار (Alarm Type) پیکربندی شده برای مولد پیام بار گذاری کند. اگر هشدار Uncleared موجود باشد، این هشدار بروز رسانی میشود در غیر اینصورت هشدار جدید ایجاد میشود.
پیکربندی این گره شامل
- اسکریپت سازنده جزییات هشدار (Alarm Details Builder)
- نوع هشدار (Alarm Type) – هر نوع متن رشته ای که نمایانگر نوع هشدار باشد
- سطح هشدار (Alarm Severity) – یکی از این موارد {CRITICAL | MAJOR | MINOR | WARNING | INDETERMINATE}
- گزینه Propagate – مشخص کننده اینکه آیا این هشدار به تمام موجودیت های مرتبط بالا دستی منتشر شود
- خواندن پیکربندی هشدار از پیام ورودی
- دریافت نوع هشدار به کمک الگو از فیلد های metadata پیام ورودی

- فیلتر کردن انتشار پیام به موجودیت های دارای رابطه بالادستی توسط نوع رابط آن ها

اسکریپت Alarm Details Builder برای ایجاد جزییات هشدار استفاده میشود. این اسکریپت مناسب برای ذخیره پارامتر های اضافی در هشدار است. برای مثال شما میتوانید صفت name/value را از محتوا یا metadata پیام ورودی ذخیره نمایید.
اسکریپت Alarm Details Builder بایستی details object باز گرداند (return کند).

- محتوای پیام از طریق متغییر msg قابل دسترس است. برای مثال msg.temperature
- metadata پیام از طریق متغییر metadata قابل دسترس است. برای مثال metadata.customerName
- نوع پیام از طریق متغییر msgType قابل دسترس است. برای مثال msgType
اختیاری: جزییات هشدار قبلی را میتوان با metadata.prevAlarmDetails دریافت کرد. اگر هشدار قبلی وجود نداشته باشد این فیلد در metadata موجود نخواهد بود. به خاطر داشته باشید که metadata.prevAlarmDetails یک فیلد متن رشته ای (String) است که نیاز دارد تا به object تبدیل شود. میتوانید برای اینکار از این سازنده استفاده نمایید:
var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
}
اسکریپت Alarm Details Builder را میتوان با Test JavaScript function تست و ارزیابی کرد.
مثالی برای تابع Details Builder
این تابع متغییر count را از هشدار قبلی دریافت و آن را یک واحد افزایش میدهد. همچنین صفت temperature را از محتوای پیام ورودی استخراج و آن را در جزییات هشدار قرار میدهد.
var details = {temperature: msg.temperature, count: 1};
if (metadata.prevAlarmDetails) {
var prevDetails = JSON.parse(metadata.prevAlarmDetails);
if(prevDetails.count) {
details.count = prevDetails.count + 1;
}
}
return details;
هشدار با مشخصات زیر ایجاد یا بروز رسانی میشود:
- جزییات هشدار (Alarm Details) – object باز گردانده شده از اسکریپت Alarm Details Builder
- وضعیت هشدار (Alarm Status) – اگر هشدار جدید باشد مقدار ACTIVE_UNACK و اگر هشدار از قبل وجود داشته باشد تغییر نمیکند.
- شدت هشدار (Alarm Severity) – مقدار پیکربندی گره
- سطح انتشار هشدار (Alarm Propagation) – مقدار پیکربندی گره
- نوع هشدار (Alarm Type) – مقدار گره
- زمان شروع هشدار (Alarm start time) – اگر هشدار جدید باشد مقدار زمان سیستم و اگر هشدار از قبل وجود داشته باشد تغییر نمیکند.
- زمان پایان هشدار (Alarm end time) – زمان فعلی سیستم
پیام خروجی ساختار زیر را خواهد داشت:
- Message Type – ALARM
- Originator – همان مولد پیام ورودی
- Payload – متن به فرمت json که محتوای هشدار جدیدی است که ایجاد یا بروز رسانی شده است
- Metadata – تمام فیلد ها از metadata پیام اصلی
بعد از اینکه هشدار جدید ایجاد شد، پیام خروجی شامل متغییر های بیشتری در metadata خود خواهد بود – مقدار متغییر isNewAlarm به صورت True خواهد بود. پیام از طریق زنجیر Created ارسال می شود.
بعد از اینکه هشدار موجود بروز رسانی شد، پیام خروجی شامل متغییر های بیشتری در metadata خود خواهد بود – مقدار متغییر isExistingAlarm به صورت True خواهد بود. پیام از طریق زنجیر Updated ارسال می شود.
مثالی از محتوای (Payload) پیام خروجی:
{
"tenantId": {
"entityType": "TENANT",
"id": "22cd8888-5dac-11e8-bbab-ad47060c9bbb"
},
"type": "High Temperature Alarm",
"originator": {
"entityType": "DEVICE",
"id": "11cd8777-5dac-11e8-bbab-ad55560c9ccc"
},
"severity": "CRITICAL",
"status": "ACTIVE_UNACK",
"startTs": 1526985698000,
"endTs": 1526985698000,
"ackTs": 0,
"clearTs": 0,
"details": {
"temperature": 70,
"ts": 1526985696000
},
"propagate": true,
"id": "33cd8999-5dac-11e8-bbab-ad47060c9431",
"createdTime": 1526985698000,
"name": "High Temperature Alarm"
}
برای جزییات بیشتر در رابطه با هشدار ها به آموزش اینجا مراجعه فرمایید
برای دیدن موارد های استفاده از این گره در مثال های عملی به لینک زیر مراجعه فرمایید
- ایجاد و حذف هشدارها
گره حذف هشدار (Clear Alarm) #

این گره تلاش میکند تا آخرین هشدار را با نوع هشدار (Alarm Type) پیکربندی شده برای مولد پیام بار گذاری کند و آن هشدار را در صورت موجود بودن حذف نماید.
پیکربندی گره:
- اسکریپت سازنده جزییات هشدار (Alarm Details Builder)
- نوع هشدار (Alarm Type) – هر نوع متن رشته ای که نمایانگر نوع هشدار باشد
- دریافت نوع هشدار به کمک الگو از فیلد های metadata پیام ورودی

اسکریپت Alarm Details Builder برای بروز رسانی جزییات هشدار استفاده میشود. این اسکریپت مناسب برای ذخیره پارامتر های اضافی در هشدار است. برای مثال شما میتوانید صفت name/value را از محتوا یا metadata پیام ورودی ذخیره نمایید.
اسکریپت Alarm Details Builder بایستی details object باز گرداند.

- محتوای پیام از طریق متغییر msg قابل دسترس است. برای مثال msg.temperature
- metadata پیام از طریق متغییر metadata قابل دسترس است. برای مثال metadata.customerName
- نوع پیام از طریق متغییر msgType قابل دسترس است. برای مثال msgType
اختیاری: جزییات هشدار قبلی را میتوان با metadata.prevAlarmDetails دریافت کرد. اگر هشدار قبلی وجود نداشته باشد این فیلد در metadata موجود نخواهد بود. به خاطر داشته باشید که metadata.prevAlarmDetails یک فیلد متن رشته ای (String) است که نیاز دارد تا به object تبدیل شود. میتوانید برای اینکار از این سازنده استفاده نمایید:
var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
}
اسکریپت Alarm Details Builder را میتوان با Test JavaScript function تست و ارزیابی کرد.
مثالی برای تابع Details Builder
این تابع متغییر count را از هشدار قبلی دریافت و آن را یک واحد افزایش میدهد. همچنین صفت temperature را از محتوای پیام ورودی استخراج و آن را در جزییات هشدار قرار میدهد.
var details = {temperature: msg.temperature, count: 1};
if (metadata.prevAlarmDetails) {
var prevDetails = JSON.parse(metadata.prevAlarmDetails);
if(prevDetails.count) {
details.count = prevDetails.count + 1;
}
}
return details;
این گره هشدار فعلی را به صورت زیر بروز رسانی میکند:
- اگر هشدار تصدیق شده باشد (Acknowledged) وضعیت هشدار (Alarm Status) به CLEARED_ACK تغییر می کند در غیر اینصورت وضعیت هشدار به CLEARED_UNACK
- تغییر مقدار Clear Time به زمان فعلی سیستم
- بروز رسانی جزییات هشدار با object جدید باز گردانده شده از اسکریپت Alarm Details Builder
در صوتی که هشدار موجود نباشد و یا هشدار جدید ایجاد شده باشد، پیام از طریق زنجیر False ارسال میشود. در غیر اینصورت پیام جدید از طریق زنجیر Cleared ارسال می شود.
پیام خروجی ساختار زیر را خواهد داشت:
- Message Type – ALARM
- Originator – همان مولد پیام ورودی
- Payload – متن به فرمت json که محتوای هشدار جدیدی است که ایجاد یا بروز رسانی شده است
- Metadata – تمام فیلد ها از metadata پیام اصلی
مثالی از محتوای (Payload) پیام خروجی:
{
"tenantId": {
"entityType": "TENANT",
"id": "22cd8888-5dac-11e8-bbab-ad47060c9bbb"
},
"type": "High Temperature Alarm",
"originator": {
"entityType": "DEVICE",
"id": "11cd8777-5dac-11e8-bbab-ad55560c9ccc"
},
"severity": "CRITICAL",
"status": "CLEARED_UNACK",
"startTs": 1526985698000,
"endTs": 1526985698000,
"ackTs": 0,
"clearTs": 1526985712000,
"details": {
"temperature": 70,
"ts": 1526985696000
},
"propagate": true,
"id": "33cd8999-5dac-11e8-bbab-ad47060c9431",
"createdTime": 1526985698000,
"name": "High Temperature Alarm"
}
برای جزییات بیشتر در رابطه با هشدار ها به آموزش اینجا مراجعه فرمایید
برای دیدن موارد های استفاده از این گره در مثال های عملی به لینک زیر مراجعه فرمایید
- ایجاد و حذف هشدارها
گره تأخیر (Delay) #

پیام های دریافتی را برای مدت زمان مشخص به تأخیر می اندازد.

- زمان در ثانیه (Period in seconds) – مقدار زمانی ای را که پیام ورودی باید به حالت تعلیق درآید. این مقدار را میتوان از metadata پیام ورودی هم تنظیم کرد.
- حداکثر پیامهای در انتظار (Maximum pending messages) – حداکثر تعداد پیامهایی میتوانند در صف منتظر بمانند.
زمانی که دوره تاخیر برای یک پیام ورودی سپری شده آن پیام از صف خارج شده و از طریق زنجیر Success به گره بعدی ارسال میشود.
در صورتی که صف به حداکثر تعداد خود رسید پیام های جدید از طریق زنجیر Failure ارسال میشود.
گره تولید کننده (Generator) #

این گره در بازه های زمانی پیکربندی شده پیام تولید میکند. تابع JavaScript برای تولید پیام استفاده میشود.
پیکربندی گره:
- تعداد تولید پیام در ثانیه
- مولد پیام
- تابع JavaScript که پیام را تولید میکند
تابع JavaScript سه پارامتر را به عنوان ورودی دریافت میکند:
- prevMsg – محتوای پیام تولید شده قبلی
- prevMetadata – metadata پیام قبلی تولید شده
- prevMsgType – نوع پیام تولید شده قبلی
اسکریپت بایستی ساختار زیر را باز گرداند
{
msg: new payload,
metadata: new metadata,
msgType: new msgType
}

تمام فیلد ها در object نتیجه اختیاری بوده و در صورت تعریف نشدن از پیام قبلی استخراج میشود.
پیام خروجی از این گره یک پیام جدید است که توسط تابع JavaScript ساخته شده است.
تابع JavaScript میتواند توسط تست جاوا اسکریپت ارزیابی و تست شود.
این گره میتواند برای مقاصد ایراد یابی (Debugging) مورد استفاده قرار بگیرد.
گره ثبت وقایع (Log) #

تبدیل پیام ورودی با تابع JavaScript پیکربندی شده به متن و لاگ برداری مقدار نهایی آن در سیستم لاگ ویرالینک.
سطح لاگ برای لاگ برداری INFO است.
تابع JavaScript سه پارامتر را به عنوان ورودی دریافت میکند:
- prevMsg – محتوای پیام تولید شده قبلی
- prevMetadata – metadata پیام قبلی تولید شده
- prevMsgType – نوع پیام تولید شده قبلی
اسکریپت بایستی مقدار متن (String) را باز گرداند.

تابع JavaScript میتواند توسط تست جاوا اسکریپت ارزیابی و تست شود.
برای مطالعه موارد استفاده این گره در مثال های عملی به لینک زیر را مراجعه فرمایید
- پاسخ دادن به فراخوانی های RPC
گره پاسخ به فراخوانی ها RPC یا (RPC Call Reply) #

ارسال پاسخ به مولد فراخوانی های RPC. تمام درخواست های ورودی RPC از زنجیره قواعد به صورت پیام عبور میکنند. همچنین تمام فراخوانی های RPC یک فیلد ID واحد دارند. این ID برای نگاشت (Mapping) درخواست ها (requests) و پاسخ ها (responses) استفاده میشود. موجودیت مولد پیام بایستی دستگاه (Device) باشد چون پاسخ های RPC به سازنده پیام به وجود می آیند.
پیکربندی گره یک فیلد خاص نگاشت request ID دارد. اگر نگاشت (mapping) تعریف نشود، فیلد metadata به نام requestId به عنوان پیش فرض استفاده میشود.

درخواست RPC میتواند به سه روش مختلف دریافت شود:
- MQTT
- HTTP
- CoAP
مثالی از محتوای پیام:
{
"method": "setGpio",
"params": {
"pin": "23",
"value": 1
}
}
پیام در صورت رخ دادن موارد زیر از طریق زنجیر Failure ارسال میشود:
- موجودیت مولد پیام ورودی دستگاه (Device) نباشد
- Request id در metadata پیام نباشد
- محتوای پیام ورودی خالی باشد
برای جزییات بیشتر در مورد نحوه کار کردن RPC لطفاً به لینک قابلیت های RPC مراجعه نمایید.
برای مطالعه موارد استفاده این گره در مثال های عملی به لینک زیر مراجعه نمایید
- پاسخ دادن به فراخوانی های RPC
گره درخواست RPC یا (RPC Request) #

ارسال درخواست های RPC به دستگاه و ارسال پاسخ آن ها به گره های بعدی. موجودیت مولد پیام بایستی یک دستگاه (Device) باشد به دلیل اینکه درخواست های RPC تنها برای یک دستگاه به وجود بیاید.
پیکربندی این گره یک فیلد Timeout دارد که مشخص کننده حداکثر مدت زمان انتظار برای دریافت پاسخ از سمت دستگاه می باشد.

محتوای پیام بایستی به فرمت صحیح یک درخواست RPC باشد. محتوای پیام بایستی دارای فیلد های method و params باشد. برای مثال:
{
"method": "setGpio",
"params": {
"pin": "23",
"value": 1
}
}
اگر محتوای پیام شامل فیلد requestId باشد، مقدار آن در ارسال درخواست RPC به عنوان id استفاده خواهد شد در غیر اینصورت یک مقدار تصادفی تولید و استفاده خواهد شد.
پیام خروجی همان مولد و metadata پیام ورودی را خواهد داشت. پاسخ دریافتی از دستگاه به محتوای پیام ورودی اضافه خواهد شد.
در صورت رخ دادن موارد زیر پیام از طریق زنجیر Failure ارسال میشود:
- موجودیت مولد پیام ورودی یک دستگاه نباشد
- پیام ورودی فیلد ها method یا params را نداشته باشد
- اگر گره در مدت زمان تعیین شده timeout پاسخی از دستگاه دریافت ننماید
در غیر اینصورت پیام از طریق زنجیر Success ارسال میشود.
برای جزییات بیشتر در مورد نحوه کار کردن RPC لطفاً به لینک قابلیت های RPC مراجعه نمایید.
گره ذخیره ساز صفت ها (Save Attributes) #

ذخیره سازی صفت ها از محتوای پیام ورودی در ویرالینک و اختصاص آن ها به موجودیتی که توسط مولد پیام مشخص شده است. پیکربندی Scope برای مشخص نمودن محدوده صفت ها استفاده میشود.
محدوده های پشتیبانی شده:
- صفت های سمت کاربر (Client attributes)
- صفت های مشترک (Shared attributes)
- صفت های سمت سرور (Server attributes)

نوع پیام های ورودی بایستی POST_ATTRIBUTES_REQUEST باشد در غیر اینصورت پیام از طریق زنجیر Failure ارسال میشود. زمانیکه صفت ها به واسطه API های موجود (HTTP , MQTT , CoAP , …) ارسال شد، پیام دارای محتوای با فرمت و نوع صحیح به گره INPUT در Root Rule Chain ارسال میشود. در صورتی که نیاز دارید تا عمل ذخیره صفت ها در زنجیره قواعد انجام شود، زنجیره قواعد بایستی به نحوی پیکربندی شود تا محتوای پیام را به فرمت صحیح و نوع پیام را به POST_ATTRIBUTES_REQUEST تبدیل کند. برای انجام این کار میتوانید از گره اسکریپت تبدیل استفاده نمایید.
مثالی از فرمت صحیح محتوای پیام
{
"firmware_version": "1.0.1",
"serial_number": "SN-001"
}
بعد از ذخیره موفق آمیز صفت، پیام اصلی از طریق زنجیر Success به گره بعدی ارسال میشود. در غیر اینصورت از طریق زنجیر Failure ارسال میشود.
گره ذخیره داده زمانی (Save Timeseries) #

ذخیره سازی داده های زمانی از محتوای پیام ورودی در ویرالینک و اختصاص آن ها به موجودیتی که توسط مولد پیام مشخص شده است. فیلد TTL در ثانیه برای پیکربندی مدت زمان انقضاء داده های زمانی است. مقدار صفر (0) به این معنی است که این داده هیچگاه منقضی نخواهد شد.

نوع پیام های ورودی بایستی POST_TELEMETRY_REQUEST باشد در غیر اینصورت پیام از طریق زنجیر Failure ارسال میشود. زمانیکه داده های زمانی به واسطه API های موجود (HTTP , MQTT , CoAP , …) ارسال شد، پیام دارای محتوای با فرمت و نوع صحیح به گره INPUT در Root Rule Chain ارسال میشود. در صورتی که نیاز دارید تا عمل ذخیره داده های زمانی در زنجیره قواعد انجام شود، زنجیره قواعد بایستی به نحوی پیکربندی شود تا محتوای پیام را به فرمت صحیح و نوع پیام را به POST_ TELEMETRY_REQUEST تبدیل کند. برای انجام این کار میتوانید از گره اسکریپت تبدیل استفاده نمایید.
metadata پیام بایستی شامل فیلد ts باشد. این فیلد برای مشخص کردن زمان timestamp انتشار داده تله متری در واحد میلی ثانیه است.
در صورتی که metadata پیام شامل فیلد TTL باشد، مقدار آن به جای TTL پیکربندی شده استفاده خواهد شد در غیر اینصورت مقدار پیکربندی شده استفاده خواهد شد.
مثالی از فرمت صحیح محتوای پیام
{
"values": {
"key1": "value1",
"key2": "value2"
}
}
بعد از ذخیره موفق آمیز داده های تله متری، پیام اصلی از طریق زنجیر Success به گره بعدی ارسال میشود. در غیر اینصورت از طریق زنجیر Failure ارسال میشود.
گره ذخیره در جدول دلخواه (Save to Custom Table) #

این گره محتوای پیام های ورودی را در یک جدول با نام دلخواه در پایگاه داده های cassandra ذخیره می نماید.
پیکربندی:
نام دلخواه جدول خود را در فیلد مشخص شده وارد نمایید.

مدیر میتواند نگاشت (mapping) بین فیلد های نام پیام ورودی و نام ستون در جدول مد نظر خود را پیکربندی نماید.

در صورتی که نام فیلد های مشخص شده در پیام ورودی وجود نداشته باشد یا در فرمت JSON نباشد پیام خروجی از طریق زنجیر Failure ارسال می شود. در غیر اینصورت از طریق زنجیر Success ارسال می شود.
گره تخصیص به مشتری (Assign To Customer) #

تخصیص موجودیت مولد پیام به مشتری هدف
انواع مولد پشتیبانی شده: دارایی، دستگاه، نمایش موجودیت، داشبورد.
این گره به کمک الگوی نام پیکربندی شده مشتری هدف را پیدا کرده و موجودیت مولد پیام را به مشتری پیدا شده تخصیص می دهد.
پیکربندی:

- الگو نام مشتری (Customer name pattern) – می تواند نام مشتری و یا یک الگو با شد که نام مشتری را از metadata پیام ورودی استخراج می نماید.
- در صورت وجود نداشتن مشتری، مشتری جدیدی ایجاد کن (Create new Customer if not exists) – در صورت فعال و مشتری هدف وجود نداشته باشد، مشتری جدیدی به همان نام ایجاد می کند.
- زمان انقضا حافظه نهان مشتری (Customers cache expiration time) – حداکثر زمان مجاز برای ذخیره سازی حافظه نهان. مقدار صفر به معنی عدم انقضا است. واحد زمان ثانیه است.
پیام از طریق زنجیر Failure به گره بعدی ارسال خواهد شد اگر:
- در صورتی که موجودیت مولد پشتیبانی نشود.
- مشتری هدف وجود نداشته باشد و گزینه ‘در صورت وجود نداشتن مشتری، مشتری جدیدی ایجاد کن’ غیر فعال باشد.
درغیر اینصورت پیام از طریق زنجیر Success به گره بعدی ارسال خواهد شد.
گره لغو تخصیص از مشتری (Unassign from Customer) #

لغو تخصیص موجودیت مولد پیام از مشتری
انواع مولد پشتیبانی شده: دارایی، دستگاه، نمایش موجودیت، داشبورد.
این گره به کمک الگوی نام پیکربندی شده مشتری هدف را پیدا کرده و موجودیت مولد پیام را از مشتری پیدا شده لغو تخصیص کند.
پیکربندی:

- الگو نام مشتری (Customer name pattern) – می تواند نام مشتری و یا یک الگو باشد که نام مشتری را از metadata پیام ورودی استخراج می نماید.
- زمان انقضا حافظه نهان مشتری (Customers cache expiration time) – حداکثر زمان مجاز برای ذخیره سازی حافظه نهان. مقدار صفر به معنی عدم انقضا است. واحد زمان ثانیه است.
پیام از طریق زنجیر Failure به گره بعدی ارسال خواهد شد اگر:
- در صورتی که موجودیت مولد پشتیبانی نشود.
- مشتری هدف وجود نداشته باشد.
درغیر اینصورت پیام از طریق زنجیر Success به گره بعدی ارسال خواهد شد.
گره ایجاد رابطه (Create Relation) #

ایجاد یک رابطه از موجودیت انتخاب شده به مولد پیام با نوع و جهت پیکربندی شده.
انواع مولد پشتیبانی شده: دارایی، دستگاه، نمایش موجودیت، داشبورد، مشتری، مدیر.
این گره موجودیت هدف را به کمک الگوی پیکربندی شده از را پیدا کرده و یک رابطه بین موجودیت مولد پیام و موجودیت هدف ایجاد می کند.
پیکربندی:
- اگر موجودیت هدف دستگاه، دارایی و یا مشتری باشد و گزینه در صورت وجود نداشتن موجودیت، موجودیت جدیدی ایجاد کن (Create new Entity if not exists) فعال باشد در صورت وجود نداشتن موجودیت هدف آن را ایجاد می کند.
- اگر موجودیت هدف دستگاه یا دارایی باشد بایستی دو پارامتر الگو نام (Name pattern) و الگو نوع (Type pattern) را وارد کنید. در غیر اینصورت تنها وارد کردن الگو نام (name pattern) کافیست.

- جهت (Direction) – جهت رابطه را مشخص میکند. مقادیر مجاز: از (From) و به (To)
- الگو نوع رابطه (Relation type Pattern) – نوع رابطه را مشخص می کند. می تواند نوع رابطه و یا یک الگو باشد که نوع رابطه را از metadata پیام ورودی استخراج می نماید.
- زمان انقضا حافظه نهان مشتری (Customers cache expiration time) – حداکثر زمان مجاز برای ذخیره سازی حافظه نهان. مقدار صفر به معنی عدم انقضا است. واحد زمان ثانیه است
- حذف رابطه موجودیت (Remove current relations) – حذف رابطه موجود از موجودیت مولد پیام ورودی بر اساس جهت و نوع آن.
- تغییر مولد پیام ورودی به موجودیت هدف (change originator to related entity) – تغییر موجودیت مولد پیام ورودی به موجودیت هدف و پردازش پیام خروجی به عنوان یک پیام از یک موجودیت دیگر.
پیام از طریق زنجیر Failure به گره بعدی ارسال خواهد شد اگر:
- در صورتی که موجودیت مولد پشتیبانی نشود.
- موجودیت هدف وجود نداشته باشد.
- گره حذف رابطه (Delete Relation)

حذف یک رابطه از موجودیت انتخاب شده به مولد پیام با نوع و جهت پیکربندی شده.
انواع مولد پشتیبانی شده: دارایی، دستگاه، نمایش موجودیت، داشبورد، مشتری، مدیر.
این گره موجودیت هدف را به کمک الگوی پیکربندی شده از را پیدا کرده و رابطه بین موجودیت مولد پیام و موجودیت هدف حذف می کند.
پیکربندی:

- جهت (Direction) – جهت رابطه را مشخص میکند. مقادیر مجاز: از (From) و به (To)
- الگو نوع رابطه (Relation type Pattern) – نوع رابطه را مشخص می کند. می تواند نوع رابطه و یا یک الگو باشد که نوع رابطه را از metadata پیام ورودی استخراج می نماید.
- الگو نام رابطه (Relation name Pattern) – نام رابطه را مشخص می کند. می تواند نام رابطه و یا یک الگو باشد که نام رابطه را از metadata پیام ورودی استخراج می نماید.
- زمان انقضا حافظه نهان مشتری (Customers cache expiration time) – حداکثر زمان مجاز برای ذخیره سازی حافظه نهان. مقدار صفر به معنی عدم انقضا است. واحد زمان ثانیه است
- حذف رابطه از موجودیت مشخص (Delete relation to specific entity) – با فعال کردن این گزینه میتوانید رابطه را با یک موجودیت مشخص شده حذف کنید و با غیر فعال کردن این میتوایند رابطه را با لیستی از موجودیت های پیدا شده حذف نمایید.
پیام از طریق زنجیر Failure به گره بعدی ارسال خواهد شد اگر:
- در صورتی که موجودیت مولد پشتیبانی نشود.
- موجودیت هدف وجود نداشته باشد.
گره رویداد های محیط موقعیت جغرافیایی (GPS Geofencing Events) #

پردازش پیام های ورودی بر اساس پارامتر های GPS پیکربندی شده. استخراج طول و عرض جفرافیایی از پیام ورودی و ارسال رویداد های متفاوت پس از پردازش پیام.

به صورت پیشفرض این گره اطلاعات محیط را از metadata پیام استخراج میکند که میتوانید با غیر فعال کردن گزینه استخراج اطلاعات محیط از metadata پیام (Fetch perimeter information from message metadata) اطلاعات محیط را به صورت دستی وارد کنید.
- استخراج محیط جغرافیایی از metadata پیام های ورودی
دو امکان برای پیکربندی محیط بر اساس نوع شکل وجود دارد
- چند ضلعی (Polygon)
metadata پیام های ورودی بایستی یک کلید به نام perimeter و ساختار داده ای آن به فرمت زیر باشد
[[lat1,lon1],[lat2,lon2], ... ,[latN,lonN]]
- دایروی (Circle)
"centerLatitude": "value1", "centerLongitude": "value2", "range": "value3"
All values for these keys are in double-precision floating-point data type.
The "rangeUnit" key requires specific value from a list of METER, KILOMETER, FOOT, MILE, NAUTICAL_MILE (capital letters obligatory).
- استخراج داده های محیط از پیکربندی گره
دو امکان برای پیکربندی محیط بر اساس نوع شکل وجود دارد
- چند ضلعی (Polygon)

- دایروی (Circle)

انواع رویداد
- Entered – اگر طول و عرض جغرافیایی پیام ورودی برای اولین بار در داخل محیط پیکربندی شده گزاش شود.
- Left – اگر طول و عرض جغرافیایی پیام ورودی برای اولین بار در خارج محیط پیکربندی شده گزاش شود.
- Inside و Outside – برای اعلام وضعیت فعلی استفاده می شود.
مدیر میتواند حد آستانه مدت زمان گزارش رویداد inside و outside را پیکربندی کنید. برای مثال اگر حداقل زمان داخل (minimal inside time) را به مدت یک دقیقه تنظیم کند مولد پیام ۶۰ ثانیه پس از ورود به محیط پیکربندی شده به عنوان موجودیت داخل محیط در نظر گرفته می شود.
پیام از طریق زنجیر Failure به گره بعدی ارسال خواهد شد اگر:
- پیام ورودی دارای کلید latitude و longitude در متن و یا metadata خود نباشد.
- عدم وجود پیکربندی مناسب برای محیط جغرافیایی