Urule视频教程资源如下:
链接:https://pan.baidu.com/s/1xfQqcLVlzf1t9oYyFsG0qg
提取码:7we9

如需通过邮件发送,请联系 sph1573@163.com,鄙人看到会及时发送


1.把urule的jar包导入项目中lib下

资源中下载到的 urule-jar.zip


2.applicationContext.xm加入urule配置文件
在项目spring配置文件applicationContext.xml中,引入urule-console的spring配置文件

 <!-- 2.导入urule-console的spring配置文件 --><import resource="classpath:urule-console-context.xml"/>

3.新建configure.properties

Configure.properties
#用于指定当前知识库存放目录,必须存在
urule.repository.dir=D:/repo
#制定管理员用户
urule.admin.username=susu

然后在项目spring配置文件applicationContext.xml中,引入

<!-- 3.引入configure.properties --><context:property-placeholder ignore-unresolvable="true" order="1" location="classpath:configure.properties"/>

4.web.xml配置urule的servlet

<!-- urule的servlet配置 --><servlet><servlet-name>uruleServlet</servlet-name><servlet-class>com.bstek.urule.console.servlet.URuleServlet</servlet-class></servlet><servlet-mapping><servlet-name>uruleServlet</servlet-name><url-pattern>/urule/*</url-pattern></servlet-mapping>

5.在urule控制台创建动作库用到
在urule控制台创建动作库,需要引入bean_id,因此需要创建一个,并在applicationContext.xml为这个创建一个bean_id;

MethodTest.java
public class MethodTest {@ExposeAction("打印Student")public void printUser(String  stuName){System.out.println("Hello "+stuName);}
}

配置文件中,创建bean_id

<!-- 5.创建动作库时,需要引入bean_id --><bean id="methodTest" class="com.su.test.MethodTest"></bean>

6.具体创建变量库、常量库、参数库、动作库方式,可参照视频


7.以上配置完后,运行项目
运行项目,输入http://localhost:8081/ProjectName/urule/frame,即可进入urule控制台


8.操作
在“项目列表”右键,创建新项目,然后在“”上创建变量库、常量库、参数库、动作库等,在“决策集”上创建向导式决策集、脚本式决策集等。


9.仿真测试
在以上步骤完后,即可在“知识包”中进行仿真测试


10.urule在代码中调用
创建一个InvokeTest.java

package com.su.test;import com.bstek.urule.Utils;
import com.bstek.urule.runtime.KnowledgePackage;
import com.bstek.urule.runtime.KnowledgeSession;
import com.bstek.urule.runtime.KnowledgeSessionFactory;
import com.bstek.urule.runtime.service.KnowledgeService;
import com.su.domain.Student;
/*** @author su1573* @since 2018年8月29日*/
public class InvokeTest {public  void doTest() throws Exception{//从Spring中获取KnowledgeService接口实例KnowledgeService service=(KnowledgeService)Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID);//通过KnowledgeService接口获取指定的资源包"projectName/知识包编码"KnowledgePackage knowledgePackage=service.getKnowledge("SSMDemo/xiangdemo");//通过取到的KnowledgePackage对象创建KnowledgeSession对象KnowledgeSession session=KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage);Student stu = new Student();stu.setStuAge(30);stu.setStuName("su");//将业务数据对象Employee插入到KnowledgeSession中session.insert(stu);//执行所有满足条件的规则session.fireRules();}}

再创建一个invoke.jsp,用于调用代码,进行规则测试

<%@page import="com.su.test.InvokeTest" %>
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title>
</head>
<body>
<%InvokeTest invoke = new InvokeTest();invoke.doTest();
%>
</body>
</html>

11.在代码中调用,并返回结果

public class InvokeTest {public  Student doTest() throws Exception{//从Spring中获取KnowledgeService接口实例KnowledgeService service=(KnowledgeService)Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID);//通过KnowledgeService接口获取指定的资源包"projectName/知识包编码"KnowledgePackage knowledgePackage=service.getKnowledge("SSMDemo/xiangdemo");//通过取到的KnowledgePackage对象创建KnowledgeSession对象KnowledgeSession session=KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage);   Student stu = new Student();stu.setStuAge(50);//将业务数据对象Employee插入到KnowledgeSession中session.insert(stu);//执行所有满足条件的规则session.fireRules();Student ss = (Student)session.getParameter("stu");System.out.println(ss.getStuName());return ss;    }
}

上面代码:

     Student ss = (Student)session.getParameter("stu");System.out.println(ss.getStuName());return ss;

就是数据经过规则验证后,从KnowledgeSession 中取到的参数,其中”stu”,需要在参数库中配置,如下:


12.把知识包存到数据库
需要在configure.properties配置文件中添加两个属性

#数据源bean的id
urule.repository.datasourcename=dataSource
#指定数据库类型
urule.repository.databasetype=oracle
#上面两个配置连接数据库#用于指定当前知识库存放目录
urule.repository.dir=D:/repo

一个是在spring配置文件中数据库bean的id,一个是数据库类型(mysql、oracle、sql server、Db2)


13.把数据库中用户加入到urule控制台

在URule当中,在外部没有提供EnvironmentProvider接口实现的时候,它采用其内部提供的一个默认EnvironmentProvider接口实现,其源码如下:

//EnvironmentProvider接口的默认实现类源码
package com.bstek.urule.console;
import java.util.ArrayList;
import java.util.List;
import com.bstek.urule.console.servlet.RequestContext;
/*** @author Jacky.gao* @since 2016年5月25日*/
public class DefaultEnvironmentProvider implements EnvironmentProvider {@Overridepublic User getLoginUser(RequestContext context) {DefaultUser user=new DefaultUser();user.setCompanyId("bstek");user.setUsername("admin");user.setAdmin(true);return user;}@Overridepublic List<User> getUsers() {DefaultUser user1=new DefaultUser();user1.setCompanyId("bstek");user1.setUsername("user1");DefaultUser user2=new DefaultUser();user2.setCompanyId("bstek");user2.setUsername("user2");DefaultUser user3=new DefaultUser();user3.setCompanyId("bstek");user3.setUsername("user3");List<User> users=new ArrayList<User>();users.add(user1);users.add(user2);users.add(user3);return users;}
}

在默认的实现类中,getLoginUser返回的是固定的用户名为"admin"的用户,并且它的isAdmin属性为true,表示它是管理员,也就是说默认返回的登录用户是名为admin的管理员,同时他所在的公司ID为"bstek";在getUsers方法中固定返回user1、user2、user3三个用户,他们的公司ID皆为"bstek",与默认返回的登录用户admin的公司ID相同,所以在上面介绍的权限配置页面中我们看到的是user1、user2、user3三个用户。

关于User的公司ID
在URule当中,通过用户的companyId(也就是公司ID)实现在一个URule的存储库中隔离不同公司用户所建的规则项目。
某些时候,你可能只会搭建一个URule
Server,在这个Server中会有很多个用户来创建项目、配置规则,但这些用户有可能来自不同的公司,这个时候就需要有一种机制来隔离不同公司的人创建的项目,这里就是通过用户的companyId属性实现。companyId为A的用户创建的项目,companyId为B的人登录后是看不到的,反之亦然。EnvironmentProvider接口中返回的登录用户如果isAdmin为true,也就是管理员,那么它可以看到并操作其所在companyId下所有项目,而不需要做任何权限配置,相反,进行权限配置的工作也必须要由管理员来操作,否则会显示“无权限”的提示。
某个companyId下的管理员进行权限配置的时候,他能配置的用户也有与其companyId相同的普通用户,同时可配置的项目也只有在当前companyId下创建的项目。

如果我们需要将业务系统中的用户信息引入到URule当中,那么只需要实现一个新的EnvironmentProvider接口,并将其配置到spring的上下文中,让其成为一个标准的bean即可。这样系统启动时会自动检测到该接口实现的存在,从而用它来替换默认的EnvironmentProvider接口实现。

在项目中实现EnvironmentProvider接口

import java.util.ArrayList;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import com.bstek.urule.console.DefaultUser;
import com.bstek.urule.console.EnvironmentProvider;
import com.bstek.urule.console.User;
import com.bstek.urule.console.servlet.RequestContext;
import com.su.service.UserService;
/*** @author su1573* @since 2018年9月7日*/
public class TestEnvironmentProvider implements EnvironmentProvider {@Autowiredprivate UserService userService;@Overridepublic User getLoginUser(RequestContext rec) {DefaultUser user = new DefaultUser();user.setCompanyId("100");user.setUsername("su");user.setAdmin(true);return user;}@Overridepublic List<User> getUsers() {List<com.su.domain.User> list = userService.findAllUser();List<User> luser = new ArrayList<User>();for(com.su.domain.User user : list){DefaultUser du = new DefaultUser();du.setCompanyId("100");du.setUsername(user.getLoginName());luser.add(du);}return luser;}
}

在spring 配置文件中配置bean

<bean id="TestEn" class="com.su.test.TestEnvironmentProvider"></bean>

这样就覆盖了,默认的接口实现

当数据库用户出现后,可以对用户进行配置权限


author:su1573

鄙人记录生活点滴,学习并分享,请多指教!!!

项目配置urule规则引擎教程详解(带视频资源)相关推荐

  1. 规则引擎easyRule详解

    规则引擎有许多种:Drools,Aviator,Mvel,EasyRule,这里主要讲解一下EasyRule. easyRule集成了Mvel,而Mvel表达式非常强大,我们可以自己写一些表达式,交给 ...

  2. 优秀课程案例:使用Scratch的画笔积木模块绘制一个时钟,教程详解带并且素材

    今天准备重新排版一下,详细的讲解每个步骤和需要注意的细节,并且分享出来详细的源码和素材. 1:添加时钟背景,这个素材大家可以用我们的,也可以自己网上寻找自己觉得好看的时钟刻度背景,比如我们可以这样使用 ...

  3. pycharm导入python环境是空的_PyCharm导入python项目并配置虚拟环境的教程详解

    PyCharm导入python项目并配置虚拟环境的教程详解 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹: 打开了python项目后,需要配置该项目对应的pyth ...

  4. mysql 安全配置 centos_CentOS下安装MySQL5.6.10和安全配置教程详解

    注:以下所有操作都在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装MySQL之前,请确保已经使用yum安装了以下各类基础组件(如果系统已自带,还可以考虑yum update下基 ...

  5. 检查python是否安装成功的命令是_Python 中的pygame安装与配置教程详解

    安装软件环境及版本说明 OS: Win10 x 64 专业版 Python: 2.7 IDE: PyCharm Community 2018 1. 安装python 1)下载并安装python pyt ...

  6. 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置

    什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...

  7. linux基础配置脚本,Linux中selinux基础配置教程详解

    selinux(Security-Enhanced Linux)安全增强型linux,是一个Linux内核模块,也是Linux的一个安全子系统. 三种模式: Enforcing:强制模式,在selin ...

  8. mysql 5.6.31 配置_MySQL5.6.31 winx64.zip 安装配置教程详解

    #1. 下载 # #2.解压到本地 修改必要配置my*.ini #3.mysql install admin模式启动cmd cd mysql目录/bin 执行安装: mysqld -install 启 ...

  9. mysql5.7.11 linux_CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解...

    MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .rpm)以及二进制通用版安装包(.tar.gz).一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安 ...

  10. URULE规则引擎部署

    简介 urule规则引擎是纯java开发,运行时借鉴Rete了算法的优势,独创了一套自己的规则模式匹配算法,这套算法可以从根本上保证规则运行的效率,实现大量复杂业务规则计算时的毫秒级响应. urule ...

最新文章

  1. 看漫画还是学数学?小孩子才做选择,大人全都要!
  2. shell脚本中的引用
  3. c语言程序段的流程图怎么画,大家帮我看看这个程序的流程图怎么画,谢了
  4. Kafka 压测:3 台廉价服务器竟支撑 200 万 TPS
  5. yii2 java_YII2 自定义日志路径
  6. .net core 集成 sentry 进行异常报警
  7. HDU 6755 Fibonacci Sum(二次剩余 + 二项式展开)
  8. 沉下来,沉下来,别让自己太浮躁
  9. 计算机管理关机在哪,电脑点了关机为什么却关不了
  10. [Unity] ACT 战斗系统学习 7:使用 ScriptableObject 制作角色属性 2
  11. C# 应用Excel条件格式(一)
  12. wps加载失败模板文件损坏_Word中打不开提示模板损坏的解决方法
  13. Cocos野兽派 | 如何创造真正的优秀游戏
  14. 多目标粒子群 无功优化matlab。采用天牛须改进多目标粒子群算法求解含有sst的无功优化程序,程序采用交替迭代法,以网损和电压偏差为目标
  15. 10个T的硬盘都装不下,这几个资源网站的优质资源真的超多
  16. MinGW32编译ffmpeg+libsrt
  17. http与htpps的区别
  18. 鸿蒙应用开发:实现简单的媒体播放器
  19. 用HTML5写ZZULI官网(八)
  20. 小板凳app android,小方桌易家园老师端app

热门文章

  1. 第九届蓝桥杯单片机省赛题‘彩灯控制器’程序实现
  2. 用SmartUpload实现文件上传,下载,删除
  3. 基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源
  4. 下列c语言表达式正确,C语言试题-10(含答案
  5. VS2008安装Qt4.8
  6. python matrix用法_详解使用python绘制混淆矩阵(confusion_matrix)
  7. 个人网站,添加对方为好友,QQ临时对话设置方法
  8. 修改Google桌面搜索索引位置
  9. D触发器实现JK触发器
  10. CHM打不开的解决方法