cerner/clara-rules: Clojure的業務規則引擎與專家系統

banq發表於2022-02-24

Clara 提供了一種更簡單的方法來用程式碼表達領域知識,而無需企業規則系統的重量。Clara 是用 Clojure(Script) 編寫的具有 Java 互操作性的前向連結規則引擎。它旨在通過以開發人員為中心的專家系統方法來簡化程式碼。

Clara 為開發者重新制定規則,規則可以極大地簡化業務邏輯,但通常以有限的迷你語言和複雜工具的形式出現。

簡單的規則保持簡單,但使用者可以在需要時編寫豐富的邏輯或呼叫外部庫。

 

規則只是 Clojure 程式碼,可以像其他任何東西一樣進行管理和重用。

(defrule work-approval
  "Check order approval."
  [WorkOrder (= type :repair)
             (= ?order-id order-id)]
  [:not [ApprovalForm (= ?order-id approved-id)
                      (= formname "27B-6")]]
  =>
  (insert! (->MissingApproval ?id "No 27B-6.")))

 

從 Java 輕鬆使用

只需將您的規則作為資源包含並使用 Java Beans 或 Clojure 記錄作為事實。

List<QueryResult> results =
  RuleLoader.loadRules("clara.examples")
    .insert(facts)
    .fireRules()
    .query("clara.examples/approvals");

for (QueryResult result: results)
  System.out.println(result.getResult("?id"));

Clara 支援您期望從規則引擎獲得的功能,例如支援真相維護 truth maintenance、 永續性、 規則啟用解釋rule activation explanations累加器以跨事實集進行推理accumulators to reason across sets of facts等。

 

Clara 是使用Leiningen構建、測試和部署的。

相關文章