اسناد فنی

موتور قواعد

آخرین بروزرسانی:

 
موتور قواعد یک چارچوب ساده برای ساخت گردش کارهای مبتنی بر رویداد است. تها با کشیدن و رها کردن بلوک‌های گرافیکی از قبل برنامه‌نویسی شده، می‌توانید گردش کارهای مبتنی بر رویداد را تعریف کنید و دیگر نیازی به ساعت‌ها کد نویسی نیست.
 
موتور قواعد از سه جزء اصلی تشکیل شده است:
  • پیام ورودی از داده تله‌متری، مشخصه و یا RPC Request
  • بلوک‌های قواعد با کارکردهای متفاوت
  • زنجیره قواعد برای تشکیل ارتباط بین بلوک‌ها
 
۵ نوع دسته‌بندی بر اساس کارکرد بلوک‌های گرافیکی موتور قواعد وجود دارند:
  •  Filter
  • Enrichment
  • Transformation
  • Action
  • Externals
 

بلوک‌های قواعد Filter

 

برای فیلتر کردن محتوای داده ورودی بر اساس شرایط خاص و ارسال نتایج مختلف به مسیرهای مختلف، از بلوک‌های این دسته‌بندی استفاده می‌شود.
 
از انواع فیلترهای قابل استفاده در این بخش می‌توان به موارد زیر اشاره کرد:
  • بررسی وضعیت اخطار
  • بررسی فیلدهای موجود
  • بررسی ارتباط میان پیام و سازنده آن
  • فیلتر پیام بر اساس ژئوفنسینگ مبتنی بر GPS
  • بررسی پیام ورودی بر اساس نوع پیام
  • ارسال پیام به مسیرهای متفاوت بر اساس نوع سازنده پیام
  • نوع سازنده پیام
  • فیلتر پیام ورودی با استفاده از جاوااسکریپت
  • ارسال پیام به یک یا چندین مسیر متفاوت
 

بلوک‌های قواعد Enrichment

 

از بلوک‌های این دسته‌بندی برای اضافه کردن داده مازاد یا متادیتا استفاده می‌شود. هدف از افزودن این داده‌های اضافی، شناسایی بهتر پیام ورودی توسط دریافت‌کننده است.
 
انواع داده‌های مازادی که می‌توان با استفاده بلوک‌های قواعد بخش Enrichment به پیام ورودی اضافه نمود، موارد زیر هستند:
  • محاسبه و اضافه کردن مقدار دلتا
  • مشخصه‌های مشتری سازنده پیام
  • فیلدهای جزئیات مشتری
  • مشخصه‌های سازنده پیام
  • فیلدهای سازنده پیام
  • تله‌متری‌های سازنده پیام
  • مشخصه‌های موجودیت‌های مرتبط به سازنده پیام
  • مشخصه‌های دستگاه‌های مرتبط به سازنده پیام
  • مشخصه‌های ناحیه کاربری (Tenant)
  • فیلدهای جزئیات ناحیه کاربری (Tenant)
 

بلوک‌های قواعد Transformation

 

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

بلوک‌های قواعد Action

 

حالا زمان این است که عملیاتی بر اساس داده ورودی انجام شود؛ از طریق بلوک‌های این دسته‌بندی می‌توان عملیات‌های مختلف را تعریف نمود.
 
پیام‌ها می‌تونن از طریق بلوک‌های قواعد این بخش، عملیات‌های زیر را فعال کنند:
  • تایید دریافت پیام
  • ارسال پیام به یک صف دیگر
  • حذف اخطار
  • ایجاد اخطار
  • ایجاد ارتباط میان سازنده پیام و موجودیت مورد نظر
  • ایجاد تاخیر در پیام ورودی
  • حذف ارتباط میان سازنده پیام و موجودیت مورد نظر
  • پردازش پیام دستگاه بر اساس تنظیمات پروفایل دستگاه
  • ایجاد پیام ورودی بر اساس ژئوفنسینگ مبتنی بر GPS
  • شمارش پیام‌های ورودی
  • ارسال پاسخ به درخواست RPC دستگاه
  • ذخیره داده مشخصه
  • ذخیره داده سری زمانی
  • ذخیره پیام در قالب سفارشی
  • لاگ پیام با استفاده از جاوااسکریپت
  • ایجاد پیام به صورت دوره‌ای
 

بلوک‌های قواعد Analytics

 

اگر می‌خواهید بر روی داده دستگاه‌ها و دارایی‌ها محاسبات خاصی انجام شود، از بلوک‌های قواعد Analytics استفاده کنید که برای شما امکان انجام محاسبات و تحلیل داده را به اشکال زیر فراهم می‌کنند:
  • محاسبات ریاضی؛ جمع، تعیین حداقل و حداکثر، میانگین‌گیری و ...
  • شمارش هشدارها
 

دسته‌بندی بلوک‌ها؛ Externals

 

تینگزپاد امکان ارسال اطلاعات موتور قواعد به سیستم‌های خارجی مثل kafka و یا از طریق REST API به سیستم‌های استاندارد دیگر فراهم کرده است. کافی است، سرویس خارجی خود را انتخاب کرده و آن را با کشیدن یک خط، به پیام متصل کنید.
 
انواع سرویس‌های خارجی‌ای که می‌توانید اطلاعات پردازش شده پلتفرم را مستقیما به آن‌ها ارسال کنید، شامل موارد زیر هستند:
  • سرویس AWS SNS
  • سرویس AWS SQS
  • سرویس Azure IoT Hub
  • سرویس GCP Pubsub
  • صف Kafka
  • بروکر MQTT
  • صف RabbitMQ
  • ارسال پیام به سرویس خارجی از طریق Rest API
  • سرویس‌های پیامکی
  • سرویس‌های ایمیلی
 

اتصال زنجیره قواعدها به یکدیگر

 

اگر داده‌ای برای پردازش به گردش کارهای سنگین و طولانی احتیاج دارد، لازم نیست تمام چارچوب پردازشی را در یک زنجیره قواعد تعریف کنید؛ می‌توانید هر بخش از پردازش را در یک زنجیره متفاوت و تفکیک شده تعریف کرده و برای ایجاد ارتباط بین موتورهای قواعد، آن‌ها را با استفاده از بلوک قواعد Rule Chain به یکدیگر متصل کنید.
 

موارد کاربردی معمول

 

موتور قواعد تینگزپاد یک چارچوب قابل تنظیم برای پردازش رویدادهای پیچیده است. در اینجا، چند مثال کاربردی رایج وجود دارد که می‌توان آن‌ها را از طریق زنجیره قواعد تینگزپاد پیکربندی کرد:
  • بررسی صحت و اصلاح داده‌های تله‌متری یا مشخصه‌های ورودی، قبل از ذخیره در پایگاه داده.
  • کپی کردن داده تله‌متری یا مشخصه‌ها از دستگاه‌ها به دارایی‌های مرتبط؛ به عنوان مثال، داده‌های چند دستگاه را می‌توان در دارایی مرتبط جمع‌آوری کرد.
  • ایجاد، به‌روزرسانی و پاک کردن هشدارها بر اساس شرط‌های تعریف شده.
  • راه‌اندازی اقداماتی بر اساس رویدادهای چرخه عمر دستگاه؛ به عنوان مثال، ایجاد هشدار در صورت آنلاین یا آفلاین بودن دستگاه.
  • بارگذاری داده اضافی مورد نیاز برای پردازش؛ به عنوان مثال، مقدار آستانه دما برای دستگاهی که در مشخصه مستاجر یا دستگاه مشتری تعریف شده است.
  • ارسال فراخوان‌های REST API به سیستم‌های خارجی.
  • ارسال ایمیل هنگام ایجاد رویداد پیچیده و استفاده از مشخصه موجودیت‌های دیگر در قالب ایمیل.
  •  اعمال ترجیحات کاربر در طول پردازش رویداد.
  • فراخوانی‌های RPC بر اساس شرایط تعریف شده.
  • یکپارچه شدن با سرویس‌های Kafka، Spark، AWS.
 

مثال Hello-World

 

فرض می‌کنیم دستگاه شما از سنسور DHT22 برای جمع‌آوری داده دما و ارسال آن به تینگزپاد استفاده می‌کند. این سنسور می‌تواند دما را از 40- درجه سانتی‌گراد تا 80+ درجه سانتی‌گراد اندازه‌گیری کند.
 
در این آموزش، موتور قواعد تینگزپاد را پیکربندی می‌کنیم تا تمام دماها را در محدوده 40- تا 80+ درجه سانتی‌گراد در داده تله‌متری ذخیره کند و دما‌های نامعتبر را در گزارش سیستم ثبت کند.
 

افزودن بلوک بررسی صحت دما

 

در رابط کاربری تینگزپاد به بخش زنجیره قواعد ( Rule Chains ) رفته و زنجیره قواعد ریشه (Root Rule Chain) را باز کنید.
 
بلوک قاعده فیلتر اسکریپت (Script Filter) را به زنجیره بکشید و رها کنید. پنجره پیکربندی بلوک باز خواهد شد.
 
از این اسکریپت برای بررسی صحت داده‌ها استفاده خواهیم کرد:
 
return typeof msg.temperature === 'undefined' || (msg.temperature >= -40 && msg.temperature <= 80);
 
اگر دما تعریف نشده باشد یا دما معتبر باشد، اسکریپت، True و در غیر این صورت False را برمی‌گرداند. اگر اسکریپت True را برگرداند، پیام ورودی به بلوک‌های بعدی که با رابطه True متصل هستند فرستاده می‌شود.
 
اکنون می‌خواهیم که تمام درخواست‌های تله‌متری از اسکریپت بررسی صحت عبور کنند. برای این کار باید رابطه پست تله‌متری (Post Telemetry) موجود بین بلوک سوئیچ نوع پیام (Message Type Switch) و بلوک ذخیره تله‌متری (Save Telemetry) را حذف کنیم و با استفاده از رابطه Post Telemetry، بلوک Message Type Switch را به بلوک Script Filter متصل کنید.
 
در مرحله بعد، باید بلوک Script Filter را با استفاده از رابطه True به بلوک Save Telemetry متصل کنیم. بنابراین تمام داده‌های تله‌متری معتبر ذخیره می‌شوند.
 
همچنین، با استفاده از رابطه False، بلوک Script Filter را به بلوک ثبت وقایع (Log) متصل می‌کنیم. به طوری که تمام تله‌متری‌های نامعتبر در گزارش سیستم وارد می‌شوند.
 
دکمه ذخیره را فشار دهید تا تغییرات اعمال شود.
 
 

ارزیابی نتایج

 

برای ارزیابی نتایج، باید دستگاهی ایجاد کرده و داده تله‌متری را به تینگزپاد ارسال کنیم. بنابراین به بخش دستگاه‌ها رفته و دستگاه جدیدی را ایجاد می‌کنیم.
 
برای ارسال داده تله‌متری دستگاه، از Rest API استفاده خواهیم کرد. برای انجام این کار، باید کد اعتباری دستگاه ایجاد شده (DHT22) را کپی کنیم.
 
از طریق ترمینال دمای ۹۹ را ارسال می‌کنیم.
 
curl -v -X POST -d '{"temperature":99}' https://thingspod.com/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
 
* شما باید ACCESS_TOKEN$ را با کد اعتباری دستگاه واقعی جایگزین کنید.
 
مشاهده می‌کنید که که داده تله متری در بخش آخرین تله متری (Latest Telemetry) دستگاه اضافه نشده است.
 
اکنون یک پیام با دمای ۲۴ ارسال می کنیم.
 
curl -v -X POST -d '{"temperature":24}' https://thingspod.com/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
 
خواهیم دید که داده تله‌متری با موفقیت ذخیره شده است.
قبلی

نقش‌ها

تمامی حقوق مادی و معنوی این وبسایت متعلق به شرکت ارتباط صنعت رونیکا پارس بوده و هرگونه کپی‌برداری پیگرد قانونی دارد.