مستندات ویرالینک

گره های فیلتراسیون (Filter Nodes)

گره های فیلتراسیون برای فیلتر کردن و مسیریابی پیام های ورودی استفاده می شود.

گره بررسی رابطه (Check Relation Filter) #

این گره به بررسی رابطه موجودیت انتخاب شده با مولد پیام از نظر نوع و جهت آن بررسی می نماید.

اگر رابط قید شده وجود داشته باشد پیام از طریق زنجیر True و در غیر اینصورت از طریق زنجیر False به گره بعدی ارسال می گردد.

همچنین با این گره میتوانید به بررسی موجودیت رابطه با یک موجودیت خاص یا هر موجودیت بر اساس جهت و نوع رابطه با غیر فعال سازی گزینه زیر در صفحه پیکربندی گره قاعده.

در صورتی که گزینه بررسی رابطه با موجودیت خاص (Check relation to specific entity) غیر فعال کنید و هر گونه رابطه ای با هر موجودیت موجود باشد پیام از طریق زنجیر True و در غیر اینصورت از طریق زنجیر False به گره بعدی ارسال می شود.

گره بررسی موجودیت فیلد (Check Existence Fields) #

گره بررسی موجودیت فیلد (Check Existence Fields Node) به بررسی موجود بودن کلید انتخاب شده در پیام ورودی و metadata می پردازد.

اگر گزینه بررسی کن تمام کلید های انتخاب شده موجود باشد (Check that all selected keys are present) فعال باشد و تمام کلید های یاد شده در پیام موجود باشد پیام از طریق زنجیر True و در غیر اینصورت پیام از طریق زنجیر False به گره بعدی ارسال می شود.

اگر گزینه فوق غیر فعال باشد و حداقل یکی از کلید های یاد شده در پیام موجود باشد پیام از طریق زنجیر True و در غیر اینصورت پیام از طریق زنجیر False به گره بعدی ارسال می شود.

گره فیلتراسیون نوع پیام (Message Type Filter) #

در پیکربندی این گره مدیر میتواند لیستی از انوع پیام های مجاز در پیام های ورودی را تعریف می نماید. چندین نوع پیام از قبل تعریف شده در سیستم وجود دارد مانند Post attributes، Post telemetry، RPC Request و غیره. یک مدیر میتواند در پیکربندی گره انوع پیام دلخواه تعریف نماید.

اگر نوع پیام ورودی وجود داشته باشد پیام از طریق زنجیر True و در غیر اینصورت از طریق زنجیر False به گره بعدی ارسال می شود.

گره جدا کننده نوع پیام (Message Type Switch) #

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

اگر از انواع پیام های سفارشی استفاده می کنید، می توانید آن پیام ها را از طریق زنجیره Other در Message Type Switch Node به گره Switch Node  یا به گره Message Type Filter Node برای مسیریابی منطق مد نظر خود ارسال نمایید

گره فیلتراسیون نوع مولد (Originator Type Filter) #

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

اگر نوع مولد پیام در لیست وجود داشته باشد پیام از طریق زنجیر True و در غیر اینصورت از طریق زنجیر False به گره بعدی ارسال می شود.

گره جدا کننده نوع مولد پیام (Originator Type Switch) #

مسیریابی پیام های ورودی بر اساس نوع موجودیت مولد پیام

گره فیلتر اسکریپت (Script Filer) #

پیام های ورودی را با شرایط نوشته شده در JavaScript مقایسه می کند

توابع JavaScript 3 پارامتر را ورودی می گیرد

  • msg – محتوای پیام است
  • metadata – metadata پیام است
  • msgType – نوع پیام است

اسکریپت بایستی یک مقدار منطقی (Boolean) باز گرداند. در صورتی که True باشد پیام از طریق زنجیر True و در غیر اینصورت از طریق زنجیر False به گره بعدی ارسال می شود.

محتوای پیام از طریق متغییر msg قابل دسترس است. برای مثال ;msg.temperature < 10

metadata پیام از طریق متغییر metadata قابل دسترس است. برای مثال ;metadata.customerName === ‘John’

نوع پیام از طریق متغییر msgType قابل دسترس است. برای مثال ;msgType === ‘POST_TELEMETRY_REQUEST’

اسکریپت زیر میتواند نمونه مناسبی از ترکیبات فوق باشد

if(msgType === 'POST_TELEMETRY_REQUEST') {
    if(metadata.deviceType === 'vehicle') {
        return msg.humidity > 50;
    } else if(metadata.deviceType === 'controller') {
        return msg.temperature > 20 && msg.humidity > 60;
    }
}

return false;

شرایط JavaScript میتواند از طریق تست کردن تابع JavaScript اعتبار سنجی شود.

برای مثال های کامل میتوانید آموزش های زیر را مطالعه نمایید

  • ایجاد و حذف هشدار 
  • پاسخگویی به فراخوانی های RPC

گره جدا کننده (Switch) #

مسیریابی پیام های ورودی به یک یا چندین زنجیر خروجی. گره با تابع JavaScript پیکربندی می شود. 

تابع JavaScript سه پارامتر ورودی می گیرد

  • msg – محتوای پیام است
  • metadata – metadata پیام است
  • msgType – نوع پیام است

اسکریپت هم بایستی آرایه ای از نام رابطه های بعدی که پیام بایستی ارسال شود بازگرداند. در صورتی که آرایه خالی بازگردانده شود پیام به هیچ گرهی ارسال نخواهد شد و دور انداخته میشود.

محتوای پیام از طریق متغییر msg قابل دسترس است. برای مثال ;msg.temperature < 10

metadata پیام از طریق متغییر metadata قابل دسترس است. برای مثال ;metadata.customerName === ‘John’ 

نوع پیام از طریق متغییر msgType قابل دسترس است. برای مثال ;msgType === ‘POST_TELEMETRY_REQUEST’

اسکریپت زیر میتواند نمونه مناسبی از ترکیبات فوق باشد

if (msgType === 'POST_TELEMETRY_REQUEST') {
    if (msg.temperature < 18) {
        return ['Low Temperature Telemetry'];
    } else {
        return ['Normal Temperature Telemetry'];
    }
} else if (msgType === 'POST_ATTRIBUTES_REQUEST') {
    if (msg.currentState === 'IDLE') {
        return ['Idle State', 'Update State Attribute'];
    } else if (msg.currentState === 'RUNNING') {
        return ['Running State', 'Update State Attribute'];
    } else {
        return ['Unknown State'];
    }
}
return [];

تابع JavaScript جدا کننده را میتوانید با تست تابع JavaScript تست و اعتبار سنجی نمایید.

گره فیلتراسیون محیط موقعیت جغرافیایی (GPS Geofencing Filter) #

به کمک این گره میتوانید پیام های ورودی را بر اساس پارامتر های موقعیت جغرافیایی فیلتر نمایید. طول و عرض جغرافیایی را از پیام های ورودی استخراج نمایید و بررسی نمایید که آیا آن ها در داخل محیط پیکربندی شده هستند یا خیر؟ (geo fence)

این گره به صورت پیشفرض اطلاعات محیط جغرافیایی را از پیام و metadata ورودی استخراج مینماید. اگر گزینه استخراج اطلاعات محیط از metadata پیام (Fetch perimeter information from message metadata) غیرفعال باشد، بایستی اطلاعات محیط موقعیت جغرافیایی پیکربندی شود.

  1. استخراج محیط جغرافیایی از 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).
  1. استخراج داده های محیط از پیکربندی گره

دو امکان برای پیکربندی محیط بر اساس نوع شکل وجود دارد

  • چند ضلعی (Polygon)
  • دایروی (Circle)

در صورتی که طول و عرض جغرافیایی در داخل محیط پیکربندی شده باشد از طریق زنجیر True و در غیر اینصورت از طریق زنجیر False به گره بعدی ارسال میشود.

پیام از طریق زنجیر Failure به گره بعدی ارسال خواهد شد اگر:

  • در متن یا metadata پیام ورودی کلید های طول جغرافیایی (longitude) یا عرض جغرافیایی (latitude) را نداشته باشد
  • محیط تعریف نشده باشد