2.安裝與配置

概述

前面我們提到,URule Pro可(kě)采用的四種運行(xíng)模式,其中一就是嵌入式模式。

嵌入式模式是指規則的設計(jì)、定義、編譯以及實際規則包的運行(xíng)都發生(shēng)在當前運行(xíng)環境中,所以嵌入式應用必須是一個(gè)标準的Java Web應用。嵌入式模式使用起來(lái)相對簡單,這裏我們以嵌入式模式來(lái)介紹如何安裝配置URule Pro。

我們安裝分兩部分:一部分是介紹如何在本地快速安裝一個(gè)URule Pro示例項目,以幫助我們了解URule Pro的功能點;另一部分是介紹如何将URule Pro添加到項目中,以及如何對項目中URule Pro進行(xíng)相關配置。

安裝一個(gè)URule Pro示例項目

在這一部分當中,我們将介紹如何在本地安裝一個(gè)可(kě)以演示URule Pro功能點的示例項目,安裝這個(gè)示例項目,要先保證操作(zuò)系統中已安裝好1.8或以上(shàng)版本JDK,同時(shí)安裝好Tomcat8或以上(shàng)版本。

首先需要我們下載示例項目安裝包,點擊此處下載。 解壓示例項目安裝包,将解壓後其中名為(wèi)“urule-demo”目錄複制(zhì)到Tomcat的webapps目錄下;如果當前操作(zuò)系統為(wèi)windows,那(nà)麽請(qǐng)在D盤根目錄下創建一個(gè)名為(wèi)“repo”的目錄; 如果當前系統為(wèi)非windows,那(nà)麽則需要用文本編輯器(qì)打開(kāi)webapps目錄下的urule-demo下WEB-INF目錄中的config.properties文件,修改其中名為(wèi)“urule.repository.dir”的屬性值。 可(kě)以看到urule.repository.dir屬性默認值為(wèi)“D:/repo”,所以我們隻需要将其改成一個(gè)當前系統中存在的可(kě)訪問的空(kōng)目錄即可(kě)。

上(shàng)述這些(xiē)工作(zuò)完成後,就可(kě)以運行(xíng)Tomcat,然後打開(kāi)浏覽器(qì)(除IE以外的浏覽器(qì),不支持IE),訪問URL:http://localhost:8080/urule-demo,即可(kě)進入URule Pro示例項目操作(zuò)主界面(這裏的8080為(wèi)Tomcat默認端口,如果你(nǐ)修改了這個(gè)端口,那(nà)麽請(qǐng)采用你(nǐ)修改的端口)。

到這一步,我們可(kě)以創建自己的項目,體(tǐ)驗URule Pro中提供的各種規則設計(jì)器(qì)的使用方式。 如果您不想自己在本地配置項目,那(nà)麽也可(kě)以在http://urule.bstek.com中在線體(tǐ)驗URule Pro的操作(zuò)風格(需要注意的是,在線DEMO僅供體(tǐ)驗,如需配置自己的業務規則請(qǐng)在本地搭建環境)。

如果想在項目中使用URule Pro,那(nà)麽就需要将URule Pro安裝到項目當中,在下面的內(nèi)容當中我們将介紹如何把URule Pro安裝到項目中,這裏提供了安裝到基于Maven的項目以及安裝到标準Web項目兩種方式。

基于Maven的Web項目安裝

首先我們需要創建了個(gè)标準的基于Maven的Java Web項目,然後打開(kāi)項目的pom.xml文件,在其中添加URule Pro相關Jar包的依賴信息。

<dependency>
    <groupId>com.bstek.urule</groupId>
    <artifactId>urule-console-pro</artifactId>
    <version>3.0.3</version>
</dependency>

URule Pro自己的Jar有(yǒu)兩個(gè):一個(gè)是urule-console-pro;另一個(gè)是urule-core-pro。urule-console-pro這個(gè)Jar包中包含了URule Pro的各種規則設計(jì)器(qì)、打包編譯工具、仿真測試環境等;urule-core-pro這個(gè)Jar中則包含了URule 規則包的核心執行(xíng)引擎。所以urule-console-pro依賴于urule-core-pro,對于Maven環境來(lái)說,隻需要依賴urule-console-pro包即可(kě)。

上(shàng)面的Maven配置中,依賴的版本為(wèi)3.0.3,實際使用時(shí)可(kě)以到https://search.maven.org上(shàng)查詢關鍵字“urule-console-pro”找到當前最新的發行(xíng)版本,這裏的pom.xml依賴信息改成對應的最新的版本号即可(kě)。

在實際的使用過程當中,如果需要用到某個(gè)版本的SNAPSHOT,那(nà)麽就需要在pom.xml當中添加一個(gè)repository信息,告訴Maven該到這裏去下載SNAPSHOT版本的包,配置如下:

<repository>
    <id>sonatype</id>
    <url>https://oss.sonatype.org/content/groups/public/</url>
</repository>

具體(tǐ)的SNAPSHOT的版本信息,我們可(kě)以到https://oss.sonatype.org上(shàng)查詢。

到這裏,在基于Maven的标準Web項目中加載URule Pro的配置就完成了,我們再來(lái)看看一個(gè)标準的非Maven的Web項目如何将URule Pro添加進去。

安裝到标準Web項目

Maven項目可(kě)以通(tōng)過配置依賴來(lái)加載Jar包,非Maven項目則需要直接将Jar包複制(zhì)到/WEB-INF/lib目錄下。據此,我們可(kě)以首先點擊此處下載urule-console-pro模塊與urule-core-pro模塊所需要的第三方Jar包,将它們放到我們項目中的/WEB-INF/lib目錄下,然後再到https://search.maven.org/上(shàng)查詢最新的urule-core-pro與urule-console-pro版本,下載下來(lái)放到/WEB-INF/lib目錄中即可(kě)。這樣,一個(gè)傳統的的Web項目中添加URule Pro相關Jar包的工作(zuò)也就完成了。

如果是将URule Pro添加到一個(gè)已存在的标準Web項目,那(nà)麽在添加第三方Jar包時(shí)要注意這些(xiē)Jar包在當前項目中是否已存在,如果已經存在,這時(shí)通(tōng)常的做(zuò)法是保留高(gāo)版本,切不可(kě)放多(duō)個(gè)版本不同的相同Jar包,否則運行(xíng)可(kě)能會(huì)出現錯誤。

接下來(lái)我們開(kāi)始進行(xíng)web應用層面配置,對于Web層面的配置,無論是Maven項目還(hái)是标準項目都是一樣的。

項目配置

因為(wèi)urule-console-pro模塊架構在Spring之上(shàng)的,所以需要加載urule-console-pro模塊中提供的Spring配置文件,這個(gè)配置文件位于urule-console-pro對應的jar的classpath根下,名為(wèi)urule-console-context.xml,所以如果我們的項目也是基于Spring的,那(nà)麽可(kě)以打開(kāi)一個(gè)項目中的Spring配置文件,在其中通(tōng)過下面的代碼導入urule-console-context.xml文件:

<import resource="classpath:urule-console-context.xml"/>

如果你(nǐ)的項目不是基于spring,那(nà)麽就不能采用上(shàng)面的import方式加載urule-console-pro中所需要的spring配置文件,這時(shí)我們需要打開(kāi)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>

前面說過,因為(wèi)urule-console-pro模塊依賴于urule-core-pro模塊,所以也需要加載urule-core-pro模塊中的spring配置文件,這個(gè)文件也位于urule-core-pro對應jar包的classpath根下,名為(wèi)urule-core-context.xml,但(dàn)我們這裏在配置時(shí)卻不需加載它,原因是這個(gè)名為(wèi)urule-core-context.xml的spring配置文件在urule-console-context.xml中已經導入了,所以在有(yǒu)urule-console-pro的項目當中,就不需要再加載urule-core-context.xml,隻需要加載urule-console-pro中的urule-console-context.xml文件即可(kě)。

通(tōng)常情況下,我們建議在/WEB-INF目錄下創建一個(gè)名為(wèi)context.xml的标準的spring配置文件,在這個(gè)context.xml中導入urule-console-pro模塊中的spring配置文件,這個(gè)context.xml的內(nèi)容如下所示:

<?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>

這樣就需要将上(shàng)面在web.xml中添加到listener做(zuò)些(xiē)修改,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中有(yǒu)一些(xiē)默認的允許外部覆蓋的屬性,比如用于指定當前知識庫存放目錄的urule.repository.dir屬性等,對于這些(xiē)屬性我們可(kě)以在項目的WEB-INF目錄下新建一個(gè)名為(wèi)configure的properties文件,在添加設置這些(xiē)屬性值,然後在我們的context.xml文件中通(tōng)過如下方法加載即可(kě):

<context:property-placeholder location="/WEB-INF/configure.properties" ignore-unresolvable="true" order="1"/>

如果你(nǐ)的項目中已有(yǒu)Properties文件,那(nà)麽直接在這個(gè)Properties文件裏配置這些(xiē)屬性即可(kě)。

如果你(nǐ)是将URule Pro配置到一個(gè)已存在的Spring項目中,同時(shí)項目也要加載自己的Spring Properties文件,比如通(tōng)過下面的方式加載自己的Properties文件

<context:property-placeholder location="/WEB-INF/app.properties"/>

這時(shí)啓動應用,我們會(huì)發現啓動過程中系統會(huì)報各種屬性找不到的異常,解決辦法就是在上(shàng)面配置中加上(shàng) ignore-unresolvable="true" 以及 order="1"兩個(gè)屬性即可(kě),其中ignore-unresolvable屬性表達忽略當前配置的Properties文件中沒有(yǒu)配置的屬性,order屬性值表示加載優先級,值越小(xiǎo),優先級越高(gāo)。

當然如果你(nǐ)的項目中Properties文件的加載是通(tōng)過配置PropertyPlaceholderConfigurer為(wèi)bean的方式加載,那(nà)麽同樣需要為(wèi)這個(gè)bean添加如下兩個(gè)屬性,作(zuò)用也是一樣。

最後我們還(hái)需要在項目的web.xml當中添加URule Pro中的一個(gè)Servlet,這個(gè)Servlet負責控制(zhì)台中所有(yǒu)頁面與服務端的交互,配置信息如下:

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

在上(shàng)面的servlet配置當中,需要注意的是servlet-mapping中的url-pattern的值必須是/urule/*

到這裏,在項目中添加URule Pro的操作(zuò)就完成了,接下來(lái),需要打開(kāi)我們放在/WEB-INF目錄下的configure.properties文件,在其中添加一個(gè)名為(wèi)urule.repository.dir屬性,用于指定URule的資源庫存放的目錄,比如設置urule.repository.dir=D:/repo,表示采用D盤repo目錄來(lái)作(zuò)為(wèi)URule的資源庫目錄,這時(shí)我們需要在D盤中創建一個(gè)名為(wèi)repo的空(kōng)目錄,否則啓動時(shí)會(huì)産生(shēng)找不到目錄的錯誤。

配置完成後,運行(xíng)項目,浏覽地址:http://localhost:[port]/[contextPath]/urule/frame,就可(kě)以看到URule Pro的操作(zuò)控制(zhì)台頁面。

項目啓動過程當中,會(huì)看到在控制(zhì)台有(yǒu)個(gè)關于日志(zhì)信息的警告,這是因為(wèi)項目中采用了sl4j-log4j的日志(zhì)框架,但(dàn)項目的classpath中卻沒有(yǒu)定義log4j.properties文件,所以我們還(hái)需要在項目的classpath目錄下添加一個(gè)名為(wèi)log4j.properties文件,在其中定義好日志(zhì)輸出方式。 一個(gè)定義好的向控制(zhì)台輸出日志(zhì)的log4j.properties文件內(nèi)容如下:

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

我們可(kě)以直接采用上(shàng)面的內(nèi)容作(zuò)為(wèi)log4j.properties文件內(nèi)容,當然也可(kě)以根據需要自己定義。

參數(shù)

在前面我們添加的configure.properties中,已經添加了一個(gè)名為(wèi)urule.repository.dir參數(shù),用于指定URule Pro資源庫存儲的目錄,除此之外,URule Pro還(hái)提供了下面這些(xiē)常用參數(shù)可(kě)供配置:

參數(shù)名 描述
urule.repository.dir 配置當前知識庫存放目錄,該參數(shù)值與下面的urule.repository.xml參數(shù)值至少(shǎo)要有(yǒu)一個(gè)不為(wèi)空(kōng),否則系統啓動會(huì)報錯。在URule Pro當中,引擎支持兩種存儲知識庫方式:一種就是在這裏通(tōng)過配置urule.repository.dir參數(shù)指定目錄,将資源存儲到具體(tǐ)的目錄當中;另一種通(tōng)過配置urule.repository.xml參數(shù)來(lái)指定一個(gè)可(kě)存儲到數(shù)據庫的配置文件,這樣知識庫就可(kě)以存儲到數(shù)據庫當中。默認urule.repository.dir參數(shù)為(wèi)空(kōng),所以如果我們不想用數(shù)據庫來(lái)存儲規則相關的知識庫,那(nà)麽我們就需要配置好該參數(shù)。在配置這個(gè)目錄時(shí),我們可(kě)以給出一個(gè)絕對路徑作(zuò)為(wèi)其資源庫存儲目錄,也可(kě)以是一個(gè)相對于當前WEB目錄的相對路徑;如“D:/repo”就表示将采用D盤下repo目錄為(wèi)資源庫目錄,需要注意的是,這裏repo目錄必須要存在,如果不存在那(nà)麽将會(huì)産生(shēng)錯誤。如果要采用相對于當前WEB應用的相對路徑,那(nà)麽可(kě)以設置成“/repo”,那(nà)就表示在當前WEB應用根下使用repo目錄為(wèi)資源庫存儲目錄,如果repo目錄不存在,系統将會(huì)自動創建。
urule.repository.xml 通(tōng)過該參數(shù)在外部指定一個(gè)将資源庫存儲到數(shù)據庫的配置文件,這樣系統啓動時(shí)就會(huì)按照這個(gè)文件中定義的數(shù)據庫信息自動創建存儲庫所需要的各種表,從而實現将URule Pro知識庫存儲到數(shù)據庫的目的,後面章節中會(huì)有(yǒu)專門(mén)的內(nèi)容介紹如何将知識存儲到數(shù)據庫。如果在配置了urule.repository.xml參數(shù)後,又配置了urule.repository.dir參數(shù)指定了目錄,那(nà)麽這個(gè)目錄就用于存儲與數(shù)據庫相關的緩存信息。如果沒有(yǒu)配置urule.repository.dir參數(shù),那(nà)麽緩存信息默認将在Jvm的臨時(shí)目錄中存儲(通(tōng)過System.getProperty("java.io.tmpdir")獲取到的目錄)
urule.resporityServerUrl 客戶端上(shàng)配置的服務器(qì)地址,用于獲取在服務器(qì)上(shàng)的知識包信息,詳細描述見“客戶端服務器(qì)配置”章節。
urule.knowledgeUpdateCycle 值為(wèi)一個(gè)數(shù)字,用來(lái)指定客戶端多(duō)久到服務端檢查當前知識包有(yǒu)沒有(yǒu)更新。如果為(wèi)0則每次都檢查,為(wèi)1則永不檢查,為(wèi)1以上(shàng)的值,則表示每隔多(duō)少(shǎo)毫秒(miǎo)檢查一次,比如10000,就表示每隔10000毫秒(miǎo)檢查一次。默認值是0,表示每次都檢查,詳細描述見“客戶端服務器(qì)配置”章節。
urule.welcomePage 一個(gè)URL,用于替換URule Pro主界面第一次看到的工作(zuò)區(qū)內(nèi)容,我們可(kě)以配置個(gè)URL,這樣默認就會(huì)顯示這個(gè)URL對應的內(nèi)容。
urule.console.title 一個(gè)字符串,用來(lái)替代URule控制(zhì)台頁面的title,默認值是“URule Pro Console”。
urule.authority.type 用于定義權限配置裏權限配置主體(tǐ)的類型,默認為(wèi)“用戶”,如果我們需要修改這個(gè)屬性,那(nà)麽需要将中文先轉換為(wèi)uniocde。
urule.debug 調試信息是否輸出,默認為(wèi)true,設置成false的時(shí)候,規則運行(xíng)時(shí)所有(yǒu)的調試信息都不會(huì)輸出。

results matching ""

    No results matching ""