規則引擎-Drools

Drools規則引擎

KIE

KIE是一個分組的名字,囊括了多個工程。可以用於多個工程同一構建,部署和運用。
在這裏插入圖片描述

  • Drools是一個業務規則管理系統,具有前向鏈接和後向鏈接的基於推理的規則引擎,允許快速可靠地評估業務規則和複雜的事件處理。規則引擎也是創建專家系統的基本構件,在人工智能中,專家系統是模擬人類專家決策能力的計算機系統。
  • OptaPlanner是一個本地搜索和優化工具,它是從Drools Planner中剝離出來的,現在是一個擁有Drools和jBPM的頂級項目。這是Optaplanner的一種自然演化,儘管擁有強大的Drools集成,但長期以來一直獨立於Drools。
  • UberFire是一個新的基礎業務中心項目,從基礎業務中剝離出來重新編寫。UberFire提供了類似eclipse的工作臺功能,其中包含面板和來自插件的頁面。該項目獨立於Drools和jBPM,任何人都可以將其作爲構建靈活而強大的工作臺(如Business Central)的基礎。UberFire將用於整個JBoss的控制檯和工作臺開發。
  • Guvnor的重點已經縮小到封裝UberFire插件集,這些插件爲構建基於web的IDE提供了基礎。例如用於構建和部署的Maven集成,通過收件箱管理Maven存儲庫和活動通知。
  • Drools和jBPM使用Uberfire作爲基礎構建業務中心發行版,包括一組插件,如Guvnor,以及他們自己的插件,用於決策表、引導編輯器、BPMN2設計器、人工任務等。
  • KIE-WB是一個結合了所有Guvnor、Drools和jBPM插件的超級工作臺。jBPM-WB被廢棄了,因爲它實際上並不存在。

KIE工程概覽圖:
在這裏插入圖片描述

Drools部署架構

Drools資產執行的主要方法

執行方式 描述
KIE Server中執行 如果將Drools項目資產部署到KIE服務器,則可以使用KIE服務器REST API或Java客戶機API來執行並與部署的資產進行交互。還可以使用Business Central或Business Central之外的headless Drools控制器來管理與您部署的資產關聯的KIE服務器實例中的配置和KIE容器。
java應用中嵌入式方式執行 如果您在自己的Java虛擬機(JVM)環境、微服務或應用程序服務器中部署Drools項目資產,則可以使用自定義api或與核心KIE api(而不是KIE服務器api)的應用程序交互來執行嵌入式引擎中的資產。
在本地環境中執行擴展測試 作爲開發週期的一部分,可以在本地執行資產,以確保在Drools中創建的資產能夠正常工作。您可以在部署後使用本地執行來補充或替代執行資產。

部署架構示意圖

核心概念:

  • Drools Workbench:web ui。實現認證,管理功能。
  • Drools Expert:規則引擎
  • Drools Fusion:複雜事件處理機制
  • jBPM: 工作流
  • KIE Execution Server:獨立運行的執行服務器,可以通過Rest,JMS或者java接口調用,執行規則。

三種部署方式:

  • Workbench方式。Workbench管理規則庫,Executor註冊到Workbench,執行規則。
  • 直接調用Executor方式。用戶自己構建應用網站,管理規則、Executor等信息。通過rest或jms調用Executor執行規則。
  • 嵌入式規則引擎。
    在這裏插入圖片描述

Drools

Drools是業務管理系統(Business Rules Management System)解決方案。提供了核心業務規則引擎,web認證和規則管理應用(Drools Workbench),在一致性級別3上對決策模型和符號(DMN)模型的完整運行時支持,以及Eclipse插件。

eclipse插件安裝

插件可以幫助用戶直接創建出drools工程,裏面包含drools依賴以及samples。

  1. 插件下載

地址:https://www.drools.org/download/download.html
下載文件: Drools and JBPM tools
在這裏插入圖片描述

  1. 安裝

解壓下載的文件。

在eclipse的Install中,添加解壓的文件路徑:droolsjbpm-tools-distribution-7.32.0.Final/binaries/org.drools.updatesite/
在這裏插入圖片描述

點擊安裝,完成。

  1. 創建Drools 工程

通過new -》 other-》 drools工程,就可以創建drools工程。
其中包括了drools的依賴,以及簡單的demo。

<?xml version="1.0" encoding="UTF-8"?>

  <properties>
    <runtime.version>7.0.0.Final</runtime.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.kie</groupId>
      <artifactId>kie-api</artifactId>
      <version>${runtime.version}</version>
    </dependency>

    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-core</artifactId>
      <version>${runtime.version}</version>
    </dependency>

    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-decisiontables</artifactId>
      <version>${runtime.version}</version>
    </dependency>

    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-test</artifactId>
      <version>${runtime.version}</version>
    </dependency>

  </dependencies>

Drools依賴jar

  • knowledge-api.jar:這提供了接口和工廠。它還有助於清楚地顯示什麼是用戶API,什麼只是引擎API。
  • knowledge-internal-api.jar:提供了內部接口和工廠。
  • drools-core.jar:這是核心Drools引擎,運行時組件。包含RETE引擎和LEAPS引擎。如果您正在預編譯規則(並通過包或RuleBase對象進行部署),這是惟一的運行時依賴項。
  • drools-compiler.jar:它包含編譯器/構建器組件,用於獲取規則源並構建可執行的規則庫。這通常是應用程序的運行時依賴項,但如果您正在預編譯規則,則這個jar也是必須的。這取決於drools-core。
  • drools-jsr94.jar:這是JSR-94兼容的實現,本質上是drools編譯器組件上的一個層。注意,由於JSR-94規範的性質,並不是所有的特性都可以通過這個接口輕鬆地公開。在某些情況下,直接訪問Drools API會更容易一些,但是在某些環境中JSR-94是強制性的。
  • drools-decisiontables.jar:這是決策表“編譯器”組件,它使用drools編譯器組件。它同時支持excel和CSV輸入格式。

Drools Engine摘要

Drools引擎的基本功能是輸入數據或者fact和rule的條件相匹配,然後決定是否或者怎樣來執行這些rule。
Drools 引擎包括以下幾個組件:

  • Rules:用戶定義的業務規則或者DMN決策。所有的決策最少包含規則觸發條件以及規則的行爲。
  • Facts:輸入引擎的數據。
  • Production memory:Rule在引擎的存儲位置。
  • Working memory:Facts在Drools引擎的存儲位置。
  • Agenda:爲準備執行而對激活的規則進行註冊和排序(如果適用)的位置。
    在這裏插入圖片描述

Drools Engine API核心

  • KieServices:KieServices.Factory獲得。單例,線程安全。
  • KieContainer:KieServices接口創建KieContainer。讀取配置文件/META-INF/kmodule.xml
  • KieSession:KieContainer創建KieSession。
  • KieRepository:單例對象,存放kmodule.xml 中定義的KieModule。
  • KieProject: KieProject 爲物理概念;通過KieProject中的KieModule文件可定義KieBase、KieSession。KieProject包含了一個kmodule.xml文件。其中定義了kmodule、kbase和ksession等屬性。
發佈了41 篇原創文章 · 獲贊 5 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章