2.安装与配置
2.安装与配置
概述
前面我们提到,URule Pro可采用的两种运行模式:一种是客户端服务器模式;另一种是嵌入式模式。客户端服务器模式是指规则的设计、定义以及编译都在服务器上,而客户端只是负责从服务器上获取编译好的规则包运行,所以对于客户端来说即可以是标准的Java Web应用,也可以是非Web的Java应用,但对于服务器来说则必须是一个标准的Java Web应用。
嵌入式模式是指规则的设计、定义、编译以及实际规则包的运行都发生在当前运行环境中,所以嵌入式应用必须是一个标准的Java Web应用。嵌入式模式使用起来相对简单,这里我们以嵌入式模式来介绍如何安装配置URule Pro。
我们安装分两部分:一部分是介绍如何在本地快速安装一个URule Pro示例项目,以帮助我们了解URule Pro的功能点;另一部分是介绍如何将URule Pro添加到项目中,以及如何对项目中URule Pro进行相关配置。
安装一个URule Pro示例项目
在这一部分当中,我们将介绍如何在本地安装一个可以演示URule Pro功能点的示例项目,安装这个示例项目,要先保证操作系统中已安装好1.7或以上版本JDK,同时安装好Tomcat7或以上版本。
首先需要我们下载示例项目安装包,点击此处下载。 解压示例项目安装包,将解压后其中名为“urule-demo”目录复制到Tomcat的webapps目录下;如果当前操作系统为windows,那么请在D盘根目录下创建一个名为“repo”的目录;如果当前系统为非windows,那么则需要用文本编辑器打开webapps目录下的urule-demo下WEB-INF目录中的config.properties文件,修改其中名为“urule.repository.dir”的属性值。 可以看到urule.repository.dir属性默认值为“D:/repo”,所以我们只需要将其改成一个当前系统中存在的可访问的空目录即可。
上述这些工作完成后,就可以运行Tomcat,然后打开浏览器(除IE以外的浏览器,不支持IE),访问URL:http://localhost:8080/urule-demo,即可进入URule Pro示例项目操作主界面(这里的8080为Tomcat默认端口,如果你修改了这个端口,那么请采用你修改的端口);在操作主界面右侧“项目列表”节点上点击右键,在弹出的菜单中选择“导入项目”,在弹出的窗口中选择第2步解压下来的两个示例项目(以.bak结尾的两个文件)中的某一个,依次导入即可查看示例项目。
到这一步,我们的示例项目安装就完成了,通过这个示例项目,我们可以感受URule Pro的操作风格以及功能特点,实际上,这个示例项目在http://112.124.15.63:8084中可以直接浏览。
如果想在项目中使用URule Pro,那么就需要将URule Pro安装到项目当中,在下面的内容当中我们将介绍如何把URule Pro安装到项目中,这里提供了安装到基于Maven的项目以及安装到标准Web项目两种方式。
基于Maven的Web项目安装
首先我们需要创建了个标准的基于Maven的Java Web项目,然后打开项目的pom.xml文件,在其中添加URule Pro相关Jar包的依赖信息。
<dependency>
<groupId>com.bstek.urule</groupId>
<artifactId>urule-console-pro</artifactId>
<version>2.2.3</version>
</dependency>
URule Pro自己的Jar有两个:一个是urule-console-pro;另一个是urule-core-pro。urule-console-pro这个Jar包中包含了URule Pro的各种规则设计器、打包编译工具、仿真测试环境等;urule-core-pro这个Jar中则包含了URule 规则包的核心执行引擎。所以urule-console-pro依赖于urule-core-pro,对于Maven环境来说,只需要依赖urule-console-pro包即可。
上面的Maven配置中,依赖的版本为2.2.3,实际使用时可以到https://search.maven.org上查询关键字“urule-console-pro”找到当前最新的发行版本,这里的pom.xml依赖信息改成对应的最新的版本号即可。
在实际的使用过程当中,如果需要用到某个版本的SNAPSHOT,那么就需要在pom.xml当中添加一个repository信息,告诉Maven该到这里去下载SNAPSHOT版本的包,配置如下:
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
具体的SNAPSHOT的版本信息,我们可以到https://oss.sonatype.org上查询。
到这里,在基于Maven的标准Web项目中加载URule Pro的配置就完成了,我们再来看看一个标准的非Maven的Web项目如何将URule Pro添加进去。
安装到标准Web项目
Maven项目可以通过配置依赖来加载Jar包,非Maven项目则需要直接将Jar包复制到/WEB-INF/lib目录下。据此,我们可以首先点击此处下载urule-console-pro模块与urule-core-pro模块所需要的第三方Jar包,将它们放到我们项目中的/WEB-INF/lib目录下,然后再到https://search.maven.org/上查询最新的urule-core-pro与urule-console-pro版本,下载下来放到/WEB-INF/lib目录中即可。这样,一个传统的的Web项目中添加URule Pro相关Jar包的工作也就完成了。
如果是将URule Pro添加到一个已存在的标准Web项目,那么在添加第三方Jar包时要注意这些Jar包在当前项目中是否已存在,如果已经存在,这时通常的做法是保留高版本,切不可放多个版本不同的相同Jar包,否则运行可能会出现错误。
接下来我们开始进行web应用层面配置,对于Web层面的配置,无论是Maven项目还是标准项目都是一样的。
项目配置
因为urule-console-pro模块架构在Spring之上的,所以需要加载urule-console-pro模块中提供的Spring配置文件,这个配置文件位于urule-console-pro对应的jar的classpath根下,名为urule-console-context.xml,所以如果我们的项目也是基于Spring的,那么可以打开一个项目中的Spring配置文件,在其中通过下面的代码导入urule-console-context.xml文件:
<import resource="classpath:urule-console-context.xml"/>
如果你的项目不是基于spring,那么就不能采用上面的import方式加载urule-console-pro中所需要的spring配置文件,这时我们需要打开web.xml,在其中添加下面的代码以加载urule-console-pro的spring配置文件:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:urule-console-context.xml</param-value>
</context-param>
前面说过,因为urule-console-pro模块依赖于urule-core-pro模块,所以也需要加载urule-core-pro模块中的spring配置文件,这个文件也位于urule-core-pro对应jar包的classpath根下,名为urule-core-context.xml,但我们这里在配置时却不需加载它,原因是这个名为urule-core-context.xml的spring配置文件在urule-console-context.xml中已经导入了,所以在有urule-console-pro的项目当中,就不需要再加载urule-core-context.xml,只需要加载urule-console-pro中的urule-console-context.xml文件即可。
通常情况下,我们建议在/WEB-INF目录下创建一个名为context.xml的标准的spring配置文件,在这个context.xml中导入urule-console-pro模块中的spring配置文件,这个context.xml的内容如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
">
<import resource="classpath:urule-console-context.xml"/>
</beans>
这样就需要将上面在web.xml中添加到listener做些修改,contextConfigLocation的值改成/WEB-INF/context.xml,如下面代码所示:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/context.xml</param-value>
</context-param>
在URule Pro中有一些默认的允许外部覆盖的属性,比如用于指定当前知识库存放目录的urule.repository.dir属性等,对于这些属性我们可以在项目的WEB-INF目录下新建一个名为configure的properties文件,在添加设置这些属性值,然后在我们的context.xml文件中通过如下方法加载即可:
<context:property-placeholder location="/WEB-INF/configure.properties" ignore-unresolvable="true" order="1"/>
如果你的项目中已有Properties文件,那么直接在这个Properties文件里配置这些属性即可。
如果你是将URule Pro配置到一个已存在的Spring项目中,同时项目也要加载自己的Spring Properties文件,比如通过下面的方式加载自己的Properties文件
<context:property-placeholder location="/WEB-INF/app.properties"/&
这时启动应用,我们会发现启动过程中系统会报各种属性找不到的异常,解决办法就是在上面配置中加上 ignore-unresolvable="true" 以及 order="1"两个属性即可,其中ignore-unresolvable属性表达忽略当前配置的Properties文件中没有配置的属性,order属性值表示加载优先级,值越小,优先级越高。
当然如果你的项目中Properties文件的加载是通过配置PropertyPlaceholderConfigurer为bean的方式加载,那么同样需要为这个bean添加如下两个属性,作用也是一样。
最后我们还需要在项目的web.xml当中添加URule Pro中的一个Servlet,这个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>
在上面的servlet配置当中,需要注意的是servlet-mapping中的url-pattern的值必须是/urule/*。
到这里,在项目中添加URule Pro的操作就完成了,接下来,需要打开我们放在/WEB-INF目录下的configure.properties文件,在其中添加一个名为urule.repository.dir属性,用于指定URule的资源库存放的目录,比如设置urule.repository.dir=D:/repo,表示采用D盘repo目录来作为URule的资源库目录,这时我们需要在D盘中创建一个名为repo的空目录,否则启动时会产生找不到目录的错误。
配置完成后,运行项目,浏览地址:http://localhost:\[port\]/\[contextPath\]/urule/frame,就可以看到URule Pro的操作控制台页面。
项目启动过程当中,会看到在控制台有个关于日志信息的警告,这是因为项目中采用了sl4j-log4j的日志框架,但项目的classpath中却没有定义log4j.properties文件,所以我们还需要在项目的classpath目录下添加一个名为log4j.properties文件,在其中定义好日志输出方式。
一个定义好的向控制台输出日志的log4j.properties文件内容如下:
```
log4j.rootLogger=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[URULE] %p [%t] %C.%M(%L) | %m%n
> 我们可以直接采用上面的内容作为log4j.properties文件内容,当然也可以根据需要自己定义。
## 参数
在前面我们添加的configure.properties中,已经添加了一个名为urule.repository.dir参数,用于指定URule Pro资源库存储的目录,除此之外,URule Pro还提供了下面这些常用参数可供配置:
| 参数名 | 描述 |
| :--- | :--- |
| urule.repository.dir | 配置当前知识库存放目录,该参数值与下面的urule.repository.xml参数值至少要有一个不为空,否则系统启动会报错。在URule Pro当中,引擎支持两种存储知识库方式:一种就是在这里通过配置urule.repository.dir参数指定目录,将资源存储到具体的目录当中;另一种通过配置urule.repository.xml参数来指定一个可存储到数据库的配置文件,这样知识库就可以存储到数据库当中。默认urule.repository.dir参数为空,所以如果我们不想用数据库来存储规则相关的知识库,那么我们就需要配置好该参数。在配置这个目录时,我们可以给出一个绝对路径作为其资源库存储目录,也可以是一个相对于当前WEB目录的相对路径;如“D:/repo”就表示将采用D盘下repo目录为资源库目录,需要注意的是,这里repo目录必须要存在,如果不存在那么将会产生错误。如果要采用相对于当前WEB应用的相对路径,那么可以设置成“/repo”,那就表示在当前WEB应用根下使用repo目录为资源库存储目录,如果repo目录不存在,系统将会自动创建。 |
| urule.repository.xml | 通过该参数在外部指定一个将资源库存储到数据库的配置文件,这样系统启动时就会按照这个文件中定义的数据库信息自动创建存储库所需要的各种表,从而实现将URule Pro知识库存储到数据库的目的,后面章节中会有专门的内容介绍如何将知识存储到数据库。如果在配置了urule.repository.xml参数后,又配置了urule.repository.dir参数指定了目录,那么这个目录就用于存储与数据库相关的缓存信息。如果没有配置urule.repository.dir参数,那么缓存信息默认将在Jvm的临时目录中存储(通过System.getProperty\("java.io.tmpdir"\)获取到的目录) |
| urule.resporityServerUrl | 客户端上配置的服务器地址,用于获取在服务器上的知识包信息,详细描述见“客户端服务器配置”章节。 |
| urule.knowledgeUpdateCycle | 值为一个数字,用来指定客户端多久到服务端检查当前知识包有没有更新。如果为0则每次都检查,为1则永不检查,为1以上的值,则表示每隔多少毫秒检查一次,比如10000,就表示每隔10000毫秒检查一次。默认值是0,表示每次都检查,详细描述见“客户端服务器配置”章节。 |
| urule.welcomePage | 一个URL,用于替换URule Pro主界面第一次看到的工作区内容,我们可以配置个URL,这样默认就会显示这个URL对应的内容。 |
| urule.console.title | 一个字符串,用来替代URule控制台页面的title,默认值是“URule Pro Console”。 |
| urule.authority.type | 用于定义权限配置里权限配置主体的类型,默认为“用户”,如果我们需要修改这个属性,那么需要将中文先转换为uniocde。 |
| urule.debug | 调试信息是否输出,默认为true,设置成false的时候,规则运行时所有的调试信息都不会输出。 |
更多建议: