Drools規則引擎入門指南(三)——使用Docker部署Workbench


其實本來我也是打算使用Tomcat來部署Workbench的,但是在網上看了幾篇文章,超級繁瑣的配置、各種版本。實在看不下去了索性就直接使用Docker來部署了。本次部署的版本是最新穩定版,對應drools的7.14.0.Final版本。

1. 拉取鏡像

1
docker pull jboss/drools-workbench-showcase:latest

鏡像文件比較大,870多M,可能需要一些時間,不要着急。

2. 配置

鏡像拉取完畢后首先通過以下命令啟動

1
docker run  -p 8080:8080 -p 8001:8001 -d --name drools-workbench jboss/drools-workbench-showcase:latest

進入容器

1
docker exec -it 容器id /bin/bash

Workbench的日志存在/opt/jboss/wildfly/standalone/log/目錄

我們現在要做的是進入/opt/jboss/wildfly/standalone/configuration目錄,打開standalone-full-drools.xml文件新增一條配置

1
<property name="org.uberfire.nio.git.dir" value="/opt/jboss/wildfly/mygit"/>

1

然后退出容器之后重啟一下容器

1
docker restart 容器id

緊接着你就可以去瀏覽器訪問了:ip:8080/drools-wb

3. 構建規則文件

使用默認用戶名密碼admin登陸系統,在歡迎頁選擇新建一個projects
2
按照如下操作創建一個項目
3
接着呢,進入drools-test項目,點擊屏幕右方的Add Asset按鈕。我在這里為大家演示一下下方的三個如何操作,剩下就要靠你自己去探索了。
4

  1. 軟件包,這個是跟Java中的package一樣的,上方input是包名,下方是上級包名,我在這里創建一個一個包entity,全路徑是cn.org.zhixiang.entity
    5

  2. 數據對象,這個數據對象其實就是Java中的實體類了,我們這里創建一個名為Dog的對象,然后進入這個數據對象就會發現有一個添加字段的按鈕可以供我們添加各種字段,然后左側的源代碼可以讓我們直觀的感受到創建之后的對象到底為何物。我在這里為Dog添加了name和age屬性

  3. 向導型規則模板,這個就是我們的規則對象,創建一個規則對象hello,進入hello之后有一個事是必須注意的,我們想引用剛才創建的Dog對象,得先去數據對象標簽頁新建一個條目,選擇類型是cn.org.zhixiang.entity.Dog.然后在會的model標簽頁,如果你看了前兩篇文章的話我想你一定知道該如何操作。我在這里是這樣操作的:
    6
    其實源碼就跟我第一篇文章寫的HelloWord差不多
    7

  4. 接下來就可以構建了
    回到這個項目的主頁,單擊build按鈕,然后再單擊Deploy按鈕,這個jar包就被發布到了WorkBench的maven倉庫里,我們可以通過訪問如下地址來得到這個jar包

1
ip:8080/drools-wb/maven2/cn/org/zhixiang/drools-test/0.0.1/drools-test-0.0.1.jar

4. Java獲取規則文件

規則文件既然已經發布了,那么接下來就是Java出場的時候了。

  1. 創建一個實體Dog,這里注意的是包名、類名還有屬性都要與上方在Workbench創建的保持一致。
  2. 創建DroolsApplicationWorkBenchTests測試類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@RunWith(SpringRunner.class)
public class DroolsApplicationWorkBenchTests {
@Test
public void testWorkbench() {
String url = "http://ip:8080/drools-wb/maven2/cn/org/zhixiang/drools-test/0.0.1/drools-test-0.0.1.jar";
KieServices kieServices = KieServices.Factory.get();
KieRepository kieRepository = kieServices.getRepository();
UrlResource resource = (UrlResource) kieServices.getResources().newUrlResource(url);
resource.setBasicAuthentication("enabled");
resource.setPassword("admin");
resource.setUsername("admin");
InputStream is = null;
try {
is = resource.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
KieModule kieModule = kieRepository.addKieModule(kieServices.getResources().newInputStreamResource(is));
KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
KieSession kieSession = kieContainer.newKieSession();
Dog dog = new Dog();
dog.setName("大黃");
kieSession.insert(dog);
kieSession.fireAllRules();
}
}

執行完測試方法以后你的控制台打印出了大黃出場四個字么?

本文所有源碼:https://github.com/shiyujun/drools

本文出自http://zhixiang.org.cn/,轉載請保留


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM