基於T SQL的規則引擎 一 背景

2021-06-19 02:59:26 字數 1005 閱讀 9945

從明天起終於可以休息了.停下來休養身體,紮實學習一下技術,順便寫寫這幾年做過的東西.

第乙個,是乙個基於sql server的規則引擎,寫於2023年,

當時不知道有規則引擎這東西,為了實現這樣乙個功能,自己寫了乙個,當時起的名字是"策略引擎",這個名字相當可是想了好久(給自己開發的東西命名是很爽的事)。

背景

我就職於一家聯通**商,是最早的一批聯通3g**商,主營3g業務,並且將公司自有的業務與聯通業務進行包裝發布市場。

2023年初,it部門只有我一名開發,以及一名系統維護人員。

我的工作是基於一套從上個東家帶過來的業務系統,支撐公司所有的業務。系統有delphi和c#.net兩個介面版本。乙個供管理用,功能齊全;一套供營業廳使用,只有部分功能。

從2023年起,公司飛速擴張,快速在廣東省幾個地市建立子公司,業務迅速擴充套件,在

it層面的體現就是業務規則越來越複雜,業務變化越來越快,而很多業務的控制和計算都由

it實現,例如員工績效計算,不同崗位,不同區域,不同營業廳型別,不同政策型別,不同

3g**,不同機型,不同價位段……各種複雜的條件組合下有不同的值,而且這些條件隨時會增加和修改。一開始是將這些規則記錄在規則表中,發生業務時與業務資料匹配後進行計算,但隨著規則越來越複雜,以及有類似複雜規則的專案越來越多,明顯已經不是簡單的規則錶能解決問題的了,很快

it不堪負重,並且系統越來越醜陋,實在難以維護。於是啟動懶人模式,開始著手設計乙個以不變應萬變的模組,並且交給業務部門自己維護,但願這些業務上的事別再找it。

基於以上背景,我的設計目標如下: 1、

足夠靈活,能應對各種複雜的業務規則。可以對各種業務狀態進行複雜的組合判斷,以設定複雜的規則。 2、

足夠簡單,能交給業務部門直接維護,業務規則改變不再需要it。 3、

足夠好的擴充套件性,可以快速應用到系統各個業務模組,並且最少改動現有**。

在現有的開發模式下,只能使用t-sql,不過幸好sql server支援clr擴充套件,一些功能會使用到它。

基於規則的分類

if 條件 then 結論 例子 r if age youth and student yes then buys computer yes 或 r age youth student yes buys computer yes 規則前件 也稱為前提,是由乙個或多個用邏輯連線詞連線的屬性測試組成,r...

帶有規則引擎的Apache NiFi

將apachenifi和ruleengine結合起來很容易,也很有趣。您可以使用資料操作完成一些非常好的工作,我使用drools為此編寫了一些 這目前只適用於json流檔案。許可證 apache 2 nifi rule engine processor github 然後執行以下命令 git clo...

規則引擎的簡單介紹

一 規則引擎的由來 規則引擎由推理引擎發展而來,是一種嵌入在應用程式中的元件,實現了將業務決策從應用程式 中分離出來,並使用預定義的語義模組編寫業務決策。接受資料輸入,解釋業務規則,並根據業務規則做出業務決策。二 應用背景 企業級管理者對企業it系統的開發有著如下的要求 1.為提高效率,管理流程必須...