Project EvDrift – A data event driven engine

簡介

2015年除左Fortel之外,其實我都寫左個專門做data event engine既tool,project code名為EvDrift。

EvDrift 概念

Concept Graph:

EvDrift Concept Graph

EvDrift既概念係一個generic event engine。

由唔同渠道來源拎data(e.g:掃網頁),做資料整理﹑過濾﹑分析(e.g:檢查股價),然後生成event(e.g:恆指跌穿22000點的event),然後去做event handling(e.g: send notification去mobile)。
EvDrift既特別之處係架構設計上,我將資源來源﹑分析﹑event生成﹑event處理等機制,分開成獨立abstract component,然後再去寫一堆唔同既implementation (我稱之為積木)。有時只需要換一換某個component既積木或者加一兩舊積木,就可以砌到唔同既效果,就好似砌積木咁。

----------------

其他牽涉到既技術/third-party product

  • Drupal
    係一隻PHP based既Content Management System,用黎做content storage﹑UI display。
  • Telegram
    係一隻好似whatsapp既messager app,特別在佢官方有API寫bot可以用黎做service既terminal。
  • Pushbullet
    係一隻cross-platform(mobile﹑web﹑chrome app)既強大notification app。可以好方便咁做到sync既cross platform既send/receive notification。

----------------

Components

主要component有7部份:

  1. Event Engine Core
    成個application既核心,控制住一堆bot去行唔同既job。
  2. Data Source Engine
    由唔同渠道來源(Data Source)去拎資料。
    e.g: 網頁﹑RSS feed
  3. Data Digester
    將由Data Source拎到既原始資料整理成structured既資料(Data Item)。
    e.g:掃網頁拎匯率,再以貨幣為單位分成獨立Data Item。
  4. Data Item Filter
    做資料(Data Item)過濾。
    e.g: 過濾走曾經處理過既舊資料。
  5. Data Item Analyzer
    用資料(Data Item)去做分析,生成events。
    e.g: 檢查股價﹑檢查恆指係咪低過22000點﹑檢查匯率……
  6. Event Bus
    所謂”Event Bus”(我自己作既term)既概念,其實就好似而家有一堆event等緊車,而某隻Event Bus到站俾d event上車,Event Bus既任務就係帶d event去某個目的地,至於點去﹑去做乜,就都係由Event Bus決定。
    簡單d咁講,就係做event handling。
    e.g:

    • Telegram Bot reply:
      我隻Telegram Bot會send個event message俾我。
    • Pushbullet notification:
      send一個pushbullet既event notification俾我。
    • Create Drupal Item:
      o係個CMS(Drupal)上面生成一個event notification item,之後我可以去個網頁睇返晒。
  7. Bot Triggering
    上面既component由拎資料到分析到最後event handling,其實係一個Bot運行既完整流程,Bot Triggering其實就係講緊依個流程最初既triggering point。
    e.g:

    • Schedule job,按每隻bot configuration既schedule setting定時定侯去run。
    • Code level主動觸發。
    • Telegram bot:
      當我隻Telegram bot收到有人send command message就會觸發運行。
    • Pushbullet Command:
      當我隻Pushbullet App account收到有人send command message就會觸發運行。

----------------

實際應用例子

  1. 當我send個查詢股價既message去我隻Telegram bot或者Pushbullet App account,就會自動回覆最新股價。
  2. 每日自動check港元/x元匯率係咪跌穿某兌換率,有就send notification去mobile。
  3. 每日檢查某個blog係咪有新文章,如果有新文章就自動o係一個Content Management System上面create一個對應既item。

----------------

Demo screenshot

  1. 在Mobile上透過Pushbullet send command message查詢股價
    evdrift_demo_pushbullet_mobile
  2. 在Mobile上透過send command去Telegram Bot查詢股價
    evdrift_demo_telegram_mobile
  3. 收到event後在Drupal CMS網頁上create一個item
    evdrift_demo_drupalcms

----------------

Project Status

暫時都係prototype階段,而且inactive developing (我會擺Fortel priority高d)。