Workbench 与 kie-server 搭建及使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinrui/article/details/79018351

​ 本篇文章基于 Drools 7.5.0.Final,6.x 版本与7.x在安装上基本类似,但7.x 提供了 docker 镜像,使得 workbench 及 kie-server 的安装比6.x容易了很多倍。

​ 首先需要准备 Docker 环境,Docker 的安装过程不在此赘述,可以参考官网安装教程或者菜鸟教程。安装完成后,由于 Docker 仓库在国外,下载速度可能会很慢,所以可以先配置下 Docker 官方在国内的加速器(其它的镜像加速器,如:阿里、网易等,可能没有 Drools 的镜像),配置方式参考:Docker 中国官方镜像加速

1. Workbench 安装

第一步:从镜像仓库拉取 drools-workbench 的镜像文件:

docker pull jboss/drools-workbench-showcase

第二步:启动 drools-workbench 镜像:

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

当容器与应用都启动完成后,你就可以使用如下用户访问地址 http://localhost:8080/drools-wb 去体验 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

上面是 showcase 中的用户与角色,如果需要自定义用户体系,需要自己创建 Docker 镜像并对 jboss/drools-workbench 镜像进行扩展,这里不做展开,具体操作请参考Extending this image

2. Workbench 使用

2.1. 项目创建

进入主页,点击 Design 中的 projects 链接,进入项目管理界面

010-首页-project

点击右上角的【Add Project】进行添加项目,填写项目名称及 Maven 三件套完成项目创建。

011-项目创建

2.2. 包创建

点击创建好的项目,进入主界面,点击右上角的【Create New Asset】,选择【软件包】,创建数据对象存放的包 com.qchery.harper.fact,再创建规则文件存放的包 com.qchery.harper.rule。

所有有资源都是通过【Create New Asset】进行创建,后面将不再赘述。

012-创建软件包

2.3. 数据对象创建

选择【数据对象】进行 Fact 的创建,首先创建 Address 对象。

013-创建Address

点击【添加字段】为当前对象添加字段,设置字段类型及描述,字段添加完成后,可以点击【源代码】查看生成的对象是否符合自己的要求,如果符合,点击【保存】即可。

014-Address字段明细

创建 ApplyInfo 对象,ApplyInfo 中会包含一个 Address 对象,由此可以看出 Drools 对自定义类型的支持是很好的。

014-ApplyInfo字段明细

2.4. 规则创建

对象定义完成后,我们来创建一个简单规则,同样创建 Asset,选择【Guided 规则】,在配置规则内容前,需要先添加所依赖的数据对象

021-添加数据对象

依靠刚才添加的数据对象,配置一个简单的规则如下:

022-规则编写

配置完成后,同样可以通过【源代码】查看规则的生成情况,另外,还可以点击【校验】去保证规则可以正常编译通过:

023-规则生成

2.5. 场景测试

规则编写完成后,需要测试通过才可以发布生产,在 workbench 中,测试也是可以通过配置完成的。

点击创建 Asset,选择【测试场景】,添加所依赖的数据对象,并配置测试条件与期望结果,这里,为了简单起见,我只配置了正向的测试场景,实际应用的过程中,应该还需要配置反向测试场景,保证规则的正确性。

024-测试场景

2.6. 规则发布

规则发布前,需要先配置 KieBase 与 KieSession,也就是配置 kmodule.xml 文件,在 workbench 里面,kmodule.xml 文件也是通过界面配置,然后自动生成的。

点击项目主页(Create New Asset 所在页面)右上角的【Settings】按钮,再选择【知识库与会话】

031-选择知识库与会话

进入配置界面,即可配置知识库与会话,对规则进行灵活的分组,提高规则的可复用性。

032-配置知识库与会话

配置完成后,即可点击项目主页的【Build&Deploy】进行发布,规则会发布到本地的 maven 仓库中。

033-项目主页功能

3. Kie-server 安装及启动

与 Workbench 的安装方式一样,需要先从仓库拉取最新镜像文件:

docker pull jboss/kie-server-showcase

拉取完成后,启动 kie-server,并链接到一个已经启动的 Workbench 上

docker run -p 8180:8080 -d --name kie-server --link drools-wb:kie_wb jboss/kie-server-showcase:latest

启动完成后,点击 Workbench 首页中【DevOps】下在 【servers】链接,即可看到刚刚发布的规则容器与注册好的 kie-server 服务器,此时只需要选择容器,并点击【启动】就可以将容器与 kie-server 服务器关联起来。

041-启动容器

启动完成后,容器界面与服务器界面上都可以看到彼此的信息,我们可以通过 kie-server 提供的 Rest 接口查看服务器及容器的相关信息,默认的用户名密码为 kieserver/kieserver1!,根据以上配置可以查看到的信息如下:

服务器信息:http://localhost:8180/kie-server/services/rest/server/

042-服务器信息

容器信息:http://localhost:8180/kie-server/services/rest/server/containers

043-容器信息

4. Kie-server 使用

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

import com.qchery.harper.fact.Address;
import com.qchery.harper.fact.ApplyInfo;
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.util.LinkedList;
import java.util.List;

public class Main {

    public static final String SERVER_URL = "http://localhost: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 = "harper_1.0.0";

    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);

        // 规则输入条件
        ApplyInfo applyInfo = new ApplyInfo();
        applyInfo.setAge(19);
        Address familyAddress = new Address();
        familyAddress.setProvince("aa");
        applyInfo.setFamilyAddress(familyAddress);

        // 命令定义,包含插入数据,执行规则
        KieCommands kieCommands = KieServices.Factory.get().getCommands();
        List<Command<?>> commands = new LinkedList<>();
        commands.add(kieCommands.newInsert(applyInfo, "applyInfo"));
        commands.add(kieCommands.newFireAllRules());
        ServiceResponse<ExecutionResults> results = ruleServicesClient.executeCommandsWithResults(KIE_CONTAINER_ID,
                kieCommands.newBatchExecution(commands, "ksessionId"));

        // 返回值读取
        ApplyInfo value = (ApplyInfo) results.getResult().getValue("applyInfo");
        System.out.println(value);
    }
}

参考链接:

  1. drools-workbench 安装说明
  2. kieserver 安装说明
  3. Drools Documention
阅读更多
换一批

没有更多推荐了,返回首页