windows 直接在tomcat 下 放war包總是有這樣那樣的問(wèn)題落剪,而且很讓人束手無(wú)策计寇,我都很懷疑官方自己測(cè)了沒(méi)就放出來(lái)常拓,剛開(kāi)始是tomcat未玻,workbench 能打開(kāi),但是構(gòu)建項(xiàng)目報(bào)錯(cuò)饭寺,后來(lái)?yè)Q了wildfly 部署 workbench 環(huán)節(jié)沒(méi)啥問(wèn)題阻课,輪到kie-sever出毛病,我都無(wú)解艰匙,看大家都講限煞,docker 簡(jiǎn)單方便直接,那就試試了员凝,試完之后都感覺(jué)這個(gè)挺不錯(cuò)的署驻,模擬 linux環(huán)境。
1.docker 安裝
docker 從官網(wǎng)下載,https://www.docker.com/ 我下的是win10版本的,window 下也只有10旺上,和win10的一項(xiàng)技術(shù) "Windows-native Hyper-V virtualization"有關(guān)瓶蚂。安裝包下完之后直接雙擊安裝,一直點(diǎn)確認(rèn)就好宣吱,期間可能會(huì)有幾次重啟窃这,記得保存下代碼。
安裝完之后先別著急征候,右鍵左面右下角的鯨魚(yú)圖標(biāo)點(diǎn)擊setting钦听,然后點(diǎn)擊Advance,適當(dāng)調(diào)整以下虛擬機(jī)的cpu 內(nèi)存等參數(shù)倍奢。
2.workbench 的安裝
先右鍵點(diǎn)擊左下角windows,選擇powershell
先拉鏡像到本地
docker pull jboss/drools-workbench-showcase
然后鍵入這個(gè)命令朴上,這個(gè)命令是jboss官方寫(xiě)的,其實(shí)都挺簡(jiǎn)單的,下面這部分照搬官方卒煞。
docker run -p 8080:8080 -p 8001:8001 -d --name drools-workbench jboss/drools-workbench-showcase:latest
然后呢你就可以訪問(wèn)drools workbench了
以下是workbench相關(guān)的賬號(hào)密碼:
USER PASSWORD ROLE
*********************************************
admin admin admin,analyst,kiemgmt
krisv krisv admin,analyst
john john analyst,Accounting,PM
sales-rep sales-rep analyst,sales
katy katy analyst,HR
jack jack analyst,IT
如果你想看docker 環(huán)境中的相關(guān)日志痪宰,可以鍵入以下命令
docker logs -f drools-workbench
workbench的安裝基本沒(méi)啥事了
http://localhost:8080/drools-wb 點(diǎn)擊這個(gè)登陸workbench
3.kie-server安裝
kie-server 的安裝和 workbench 的安裝差不多,先拉鏡像
docker pull jboss/kie-server-showcase
然后啟動(dòng)kie-server 并且和workbench 關(guān)聯(lián)
docker run -p 8180:8080 -d --name kie-server --link drools-workbench:kie_wb jboss/kie-server-showcase:latest
kie-server也安裝完成 http://localhost:8180/kie-server/services/rest/server/ 查看kie-sever狀態(tài)
下面再介紹workbench 及 kie-server
4.應(yīng)用
首先再workbench中創(chuàng)建一個(gè)project
項(xiàng)目創(chuàng)建完成之后,需要?jiǎng)?chuàng)建一些文件夾畔裕,文件衣撬,下邊是類(lèi)型
先創(chuàng)建軟件包,我創(chuàng)建了兩個(gè),一個(gè)是存放數(shù)據(jù)對(duì)象的bean扮饶,一個(gè)是存放規(guī)則rule具练。
之后,再創(chuàng)建 數(shù)據(jù)對(duì)象 profession
數(shù)據(jù)對(duì)象 person
完成之后開(kāi)始創(chuàng)建規(guī)則“rule_001”甜无,規(guī)則需要import包扛点,同一個(gè)包下面不用,我是放在不同包下面
導(dǎo)入完成岂丘,編輯好規(guī)則
點(diǎn)擊右上角的校驗(yàn)陵究,校驗(yàn)成功就可以了,然后再在rule包下創(chuàng)建場(chǎng)景測(cè)試奥帘。
依舊是先導(dǎo)入數(shù)據(jù)包铜邮,然后編輯測(cè)試場(chǎng)景
保存,運(yùn)行測(cè)試場(chǎng)景寨蹋,沒(méi)問(wèn)題就轉(zhuǎn)到項(xiàng)目設(shè)置修改以下項(xiàng)
kiesession 很重要松蒜,kie session 的 name要記住,項(xiàng)目中要用到
完成之后依次點(diǎn)擊 build deploy.
在主頁(yè)點(diǎn)擊server已旧,啟動(dòng)server服務(wù)
創(chuàng)建一個(gè)空白maven項(xiàng)目秸苗,需要導(dǎo)入kie-server相關(guān)包,及drools包
pom.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>XXX</groupId>//項(xiàng)目名稱(chēng)id评姨,自己定義
<artifactId>kieserver</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>7.12.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.12.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie.server</groupId>
<artifactId>kie-server</artifactId>
<version>7.12.0.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
</dependencies>
</project>
在Java項(xiàng)目中添加workbench中的數(shù)據(jù)對(duì)象难述,可以直接拷貝過(guò)來(lái)萤晴,注意數(shù)據(jù)對(duì)象的包名要和 workbench中的名稱(chēng)一模一樣
進(jìn)這個(gè)網(wǎng)站查看容器id http://localhost:8180/kie-server/services/rest/server/containers
創(chuàng)建一個(gè)啟動(dòng)函數(shù)如下
public class ContainerTest {
public static final String SERVER_URL = "http://localhost:8180/kie-server/services/rest/server";
public static final String PASSWORD = "密碼不給看";
public static final String USERNAME = "密碼不給看";
public static final String KIE_CONTAINER_ID = "demo_1.0.0";
public static void main(String[] args) {
// KisService 配置信息設(shè)置
KieServicesConfiguration kieServicesConfiguration =
KieServicesFactory.newRestConfiguration(SERVER_URL, USERNAME, PASSWORD, 10000L);
kieServicesConfiguration.setMarshallingFormat(MarshallingFormat.JSON);
// 創(chuàng)建規(guī)則服務(wù)客戶端
KieServicesClient kieServicesClient = KieServicesFactory.newKieServicesClient(kieServicesConfiguration);
RuleServicesClient ruleServicesClient = kieServicesClient.getServicesClient(RuleServicesClient.class);
// 規(guī)則輸入條件
Person person = new Person();
person.setAge(30);
person.setSexy("boy");
Profession profession =new Profession();
profession.setTitle("soft");
person.setProfession(profession);
// 命令定義吐句,包含插入數(shù)據(jù)胁后,執(zhí)行規(guī)則
KieCommands kieCommands = KieServices.Factory.get().getCommands();
List<Command<?>> commands = new LinkedList<>();
commands.add(kieCommands.newInsert(person, "person"));
commands.add(kieCommands.newFireAllRules());
ServiceResponse<ExecutionResults> results = ruleServicesClient.executeCommandsWithResults(KIE_CONTAINER_ID,
kieCommands.newBatchExecution(commands, "k2"));
// 返回值讀取
Person value = (Person) results.getResult().getValue("person");
System.out.println(JSONObject.toJSON(value).toString());
}
}
輸出結(jié)果
{"profession":{"grade":18,"title":"soft"},"sexy":"boy","name":"tom","age":123}
以上完成drools workbench 的搭建以及kie-server的搭建
5.注意事項(xiàng)
版本發(fā)布之后,windows 10 版本想更新規(guī)則必須升級(jí)版本號(hào)嗦枢,因?yàn)樯蛇^(guò)的版本刪不掉攀芯,又不能覆蓋(覆蓋有問(wèn)題),所以只能提升版本文虏,但是linux可以在相應(yīng)maven庫(kù)中刪除包侣诺,然后更新