Drools workbench和kie-server部署和简单使用

Drools workbench和kie-server部署和简单使用

  1. 安装Drools workbench
    拉取镜像到本地
    docker pull jboss/drools-workbench-showcase
    官方的操作文档:
    官方文档

执行运行命令:

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

配置
进入容器

docker exec -it 容器id /bin/bash

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

我们现在要做的是进入/opt/jboss/wildfly/standalone/configuration目录,打开standalone-full-drools.xml文件新增一条配置

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

在这里插入图片描述
然后退出容器之后重启一下容器

docker restart 容器id或容器名称

紧接着你就可以去浏览器访问了:ip:8080/business-central

在这里插入图片描述

workbench相关的账号密码在官方文档有

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

接下来就可以创建项目和规则了。

点击项目
在这里插入图片描述
点击Ass Space可以创建自己的空间

在这里插入图片描述

2.kie-server安装

kie-server 安装也是先拉取镜像

docker pull jboss/kie-server-showcase

然后kie-server启动 和workbench 关联

这里需要注意的是 官方的文档地址:https://hub.docker.com/r/jboss/kie-server-showcase

启动命令 -link 的是 drools-wb:kie-wb

因为之前 -name drools-workbench 所以 我们 -link 应该是 drools-workbench:kie_wb

启动kie-server的命令是

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状态

3.应用
先在workbench中创建一个project
在这里插入图片描述
项目创建完成后,我们增加两个软件包 分别为 存储实体对象的bean和存储规则的rule

在这里插入图片描述
在这里插入图片描述

展示界面也要设置一下,定义好了规则文件要按保存
在这里插入图片描述
定义数据对象,然后再保存
在这里插入图片描述

设置kie base
在这里插入图片描述

在这里插入图片描述

再设置ksession
在这里插入图片描述
设置了之后按保存,再去查看kmodule.xml
在这里插入图片描述
然后保存

build 和 deploy 项目

在这里插入图片描述
在这里插入图片描述
然后查看 kie-server
在这里插入图片描述
在这里插入图片描述
进程配置如下:
在这里插入图片描述
要与刚刚设置kmodule.xml的名称保持一直

服务器信息:http://localhost:8180/kie-server/services/rest/server/
在这里插入图片描述

容器信息:http://localhost:8180/kie-server/services/rest/server/containers
在这里插入图片描述
container-id 和 KSession 在java 代码中都有用

java端编码
pom 引入 (因为我获取的是最新版 目前是 7.55,如果jar 找不到 去中央仓库 下载到本地仓库中)

<properties><maven.compiler.source>8maven.compiler.source><maven.compiler.target>8maven.compiler.target><drools.version>7.55.0.Finaldrools.version>properties><dependencies><dependency><groupId>junitgroupId><artifactId>junitartifactId><version>4.11version><scope>testscope>dependency><dependency><groupId>org.droolsgroupId><artifactId>drools-coreartifactId><version>${drools.version}version>dependency><dependency><groupId>org.droolsgroupId><artifactId>drools-compilerartifactId><version>${drools.version}version>dependency><dependency><groupId>org.kie.servergroupId><artifactId>kie-serverartifactId><version>7.54.0.Finalversion>dependency><dependency><groupId>org.slf4jgroupId><artifactId>slf4j-apiartifactId><version>1.7.22version>dependency><dependency><groupId>com.alibabagroupId><artifactId>fastjsonartifactId><version>1.2.76version>dependency>dependencies>

在调用 Rest 接口前,需要先在本地定义一套与 WorkBench 中完全一致的数据对象,可以通过拷贝 Workbench 里面生成的源代码来快速实现,远程规则调用实现代码如下:

package com.test.drools.test;import com.alibaba.fastjson.JSONObject;
import com.zhubayi.pro1.Person;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.api.command.Command;
import org.kie.api.command.KieCommands;
import org.kie.api.runtime.ExecutionResults;
import org.kie.server.api.marshalling.MarshallingFormat;
import org.kie.server.api.model.ServiceResponse;
import org.kie.server.client.KieServicesClient;
import org.kie.server.client.KieServicesConfiguration;
import org.kie.server.client.KieServicesFactory;
import org.kie.server.client.RuleServicesClient;import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;/*** @author test*/
public class WorkBenchTest {public static final String SERVER_URL = "http://192.168.0.159:8180/kie-server/services/rest/server";public static final String PASSWORD = "kieserver1!";public static final String USERNAME = "kieserver";public static final String KIE_CONTAINER_ID = "pro1";public static void main(String[] args) {// KisService 配置信息设置KieServicesConfiguration kieServicesConfiguration =KieServicesFactory.newRestConfiguration(SERVER_URL, USERNAME, PASSWORD, 10000L);kieServicesConfiguration.setMarshallingFormat(MarshallingFormat.JSON);// 创建规则服务客户端KieServicesClient kieServicesClient = KieServicesFactory.newKieServicesClient(kieServicesConfiguration);RuleServicesClient ruleServicesClient = kieServicesClient.getServicesClient(RuleServicesClient.class);// 规则输入条件Person person = new Person();person.setAge(30);// 命令定义,包含插入数据,执行规则KieCommands kieCommands = KieServices.Factory.get().getCommands();List<Command<?>> commands = new LinkedList<Command<?>>();commands.add(kieCommands.newInsert(person, "Person"));commands.add(kieCommands.newFireAllRules());ServiceResponse<ExecutionResults> results = ruleServicesClient.executeCommandsWithResults(KIE_CONTAINER_ID,kieCommands.newBatchExecution(commands,"ksession1"));// 返回值读取Person value = (Person) results.getResult().getValue("Person");System.out.println(JSONObject.toJSON(value).toString());}}

调用成功返回信息打印:

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部