1. AviatorScript介紹
AviatorScript是一個高性能的規(guī)則引擎,并且提供了豐富的API來操作Java對象。
1.1 AviatorScript特點介紹
AviatorScript具有以下特點:
2. AviatorScript使用
2.1 引入依賴
2.2 編寫代碼
例子1
通過以上代碼就完成了第一個AviatorScript腳本的運行。
例子2
接下來我們通過一段代碼實現(xiàn)一個條件表達式的計算。
例子3
下面我們通過定義一個稍微復雜的條件表達式來實現(xiàn)自動的計算從而得到比較結果
通過以上三個例子可以看到Aviator可以通過調(diào)用compile()方法傳入對應的腳本文本,得到一個Expression對象,最終會由這個對象去調(diào)用execute()方法去進行運算得到結果,這個方法有個好處就是可以接收一個Map對象來給腳本中的變量賦值,可以實現(xiàn)根據(jù)用戶填報的條件給變量進行不同賦值獲取動態(tài)的運算結果,這樣就極大給我們省了很多的代碼編寫,條件的比較過程我們可以交給Aviator來幫我們實現(xiàn)。同樣的,我們也可以通過構建不同的Map對象,復用Expression對象,對一個表達式進行反復求值。下面在例子3的基礎上構建一個新的Map對象,對同一個表達式進行多次求值,可以看到根據(jù)不同的賦值,得到不同的運算結果。
例子4
在實際的開發(fā)場景中我們可能往往不會清楚的知道條件表達式中會有多少未初始化的變量,這個時候我們可以通過調(diào)用Expression的getVariableNames()方法。還是通過上面這個例子的條件表達式進行變量的打印來舉例說明,
例子5
AviatorScript也支持對邏輯運算符&&和||起別名,在設置別名后原來的運算符也還可以繼續(xù)使用。
例子6
以上就是AviatorScript的基本使用,除此之外AviatorScript還支持很多其他的功能,比如:
3.應用場景
AviatorScript通過靈活的表達式配置可以應用在規(guī)則判斷、公式計算、動態(tài)腳本控制以及數(shù)據(jù)ETL場合中,也能夠應用在一些邊緣計算的場景,根據(jù)提前定義好的條件規(guī)則對數(shù)據(jù)進行提前一步的處理。AviatorScript可以滿足我們絕大多數(shù)場景下的使用需求,它非常的輕量,支持靈活的擴展,應用在項目中可以提高業(yè)務的靈活性,降低開發(fā)的工作量。