安装和使用
Drools提供了一个基于eclipse的IDE(可选),但其核心只需要Java 1.5(Java SE)。
开始的一种简单方法是下载并安装Eclipse插件 — 这还需要安装Eclipse GEF框架(如果你还没有安装Eclipse GEF框架,请参见下面)。这将为你提供所需的所有依赖项:你可以简单地创建一个新的规则项目,一切都会为你完成,请参阅规则工作台和IDE的一章,以获得关于此的详细说明,安装Eclipse插件通常非常简单,只需将文件解压缩到Eclipse插件目录中。
使用Eclipse插件不是必须的,规则文件只是文本输入(或电子表格),IDE(也称为规则工作台)只是一种便利,人们在很多方面集成了规则引擎,没有“一刀切”。
或者,你可以下载二进制发行版,并在项目类路径中包含相关的jar。
依赖和JAR
Drools被分解为几个模块,一些在开发/编译期间需要,一些在运行时需要。在许多情况下,人们只想在运行时包含所有的依赖项,这是比较好的方法,它让你拥有最大的灵活性。然而,有些人可能更喜欢将他们的“运行时”缩减到最低限度,因为他们将以二进制形式部署规则 — 这也是可能的,核心运行时引擎可以非常紧凑,并且只需要在3个JAR文件中使用几个100kb。
下面是组成JBoss Drools的重要库的描述:
- knowledge-api.jar - 这提供了接口和工厂,它还有助于清楚地显示什么是用户API,什么是引擎API。
- knowledge-internal-api.jar - 这提供了内部接口和工厂。
- drools-core.jar - 这是核心引擎,运行时组件。包含RETE引擎和LEAPS引擎,如果你正在预编译规则(并通过包或RuleBase对象部署),这是惟一的运行时依赖项。
- drools-compiler.jar - 它包含编译器/构建器组件以获取规则源,并构建可执行的规则库,这通常是应用程序的运行时依赖项,但如果你正在预编译规则,则不需要,这个依赖于drools-core。
- drools-jsr94.jar - 这是兼容JSR-94的实现,本质上是drools-compiler组件的上一层,注意,由于JSR-94规范的性质,并不是所有的特性都可以通过这个接口轻松公开。在某些情况下,直接访问Drools API会更容易,但是在某些环境中JSR-94是强制性的。
- drools-decisiontables.jar - 这是决策表的“编译器”组件,它使用drools-compiler组件,它同时支持excel和CSV输入格式。
上面的组件还需要一些其他的依赖项,其中大部分是针对drool-compiler、drool-jsr94或drool-decisiontables模块的,需要注意的一些关键内容是提供电子表格解析能力的“POI”和为规则语言本身提供解析的“antlr”。
如果你在J2EE或servlet容器中使用Drools,并且遇到“JDT”的类路径问题,那么你可以切换到janino编译器,设置系统属性“drool.compiler”:例如:-Ddrools.compiler=JANINO
。
有关发布版中依赖项的最新信息,请参阅发布的POM,该POM可以在Maven存储库中找到。
使用Maven、Gradle、Ivy、Buildr或Ant
jar包也可以在中央Maven存储库中获得(也可以在JBoss Maven存储库)。
如果你使用Maven,请在项目的pom.xml中添加KIE和Drools依赖项,像这样:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-bom</artifactId>
<type>pom</type>
<version>...</version>
<scope>import</scope>
</dependency>
...
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<scope>runtime</scope>
</dependency>
...
<dependencies>
这与Gradle、Ivy和Buildr一样,要识别最新版本,请检查Maven存储库。
如果你仍然在使用Ant(没有Ivy),请从下载zip的二进制目录中复制所有jar,并手动验证类路径不包含重复的jar。
runtime
这里提到的“runtime”需求是如果你将规则部署为二进制形式(作为KnowledgePackage对象或KnowledgeBase对象等),这是一个可选的特性,允许你保持运行时非常轻,你可以使用drools-compiler来生成“进程外”的规则包,然后将它们部署到运行时系统中,这个运行时系统只需要drools-core.jar和knowledge-api来执行,这是一种可选的部署模式,许多人不需要“削减”他们的应用程序这么多,但它是某些环境下的理想选择。
安装IDE(规则工作台)
规则工作台(用于Eclipse)要求你具有Eclipse 3.4或更高版本,以及Eclipse GEF 3.4或更高版本,你可以通过下载插件或使用更新站点来安装它。
另一种选择是使用JBoss IDE,它附带了预先打包的所有插件需求,以及其他独立于规则的工具,你可以选择只从JBoss IDE附带的“包”中安装规则。
安装GEF(必需的依赖项)
GEF是Eclipse图形编辑框架,用于在插件中查看图形组件。
如果你没有安装GEF,你可以使用内置的更新机制安装它(或者从Eclipse.org网站下载GEF,不建议),JBoss IDE已经有了GEF, Eclipse的许多其他“发行版”也是如此,因此这一步对某些人来说可能是多余的。
从Help菜单打开Help→Software updates…→Available Software→Add Site…,Location是:http://download.eclipse.org/tools/gef/updates/releases/
。
接下来选择GEF插件:
点击next,并同意安装插件(可能需要Eclipse重新启动),完成之后,你就可以继续安装规则插件了。
从zip文件安装GEF
要从zip文件安装,请下载并解压该文件,在zip中,你将看到一个插件目录和插件JAR本身,将插件JAR放到Eclipse应用程序插件目录中,然后重新启动Eclipse。
从zip文件安装Drools插件
从下面的链接下载Drools Eclipse IDE插件,在你的主eclipse文件夹中解压缩下载的文件(不要只是复制文件,将其解压缩,以便特性和插件jar最终位于eclipse的特性和插件目录中)并(重新)启动eclipse。
https://www.drools.org/download/download.html
要检查安装是否成功,请尝试打开Drools透视图:单击Eclipse窗口右上角的“Open Perspective”按钮,选择“Other…”并选择Drools透视图。如果你找不到Drools透视图作为可能的透视图之一,那么安装可能未成功。检查是否正确地执行了所需的每个步骤:你有Eclipse的正确版本(3.4.x)吗?是否安装了Eclipse GEF(检查org.eclipse.gef_3.4..jar存在于eclipse根文件夹的插件目录中)?你是否正确地提取了Drools Eclipse插件(检查org.drools.eclipse_.jar存在于eclipse根文件夹的插件目录中)?如果你找不到问题,请尝试联络我们(例如在irc或在用户邮箱列表上),更多资料可在此网页找到:
Drools runtime
Drools runtime是文件系统上的JAR集合,代表Drools项目JAR的一个特定版本,要创建一个runtime,你必须将IDE指向你选择的版本,如果你想基于插件本身中包含的最新Drools项目jar创建一个新的runtime,你也可以很容易地做到这一点,你需要为你的Eclipse工作区指定一个默认的Drools runtime,但是每个单独的项目都可以覆盖默认值,并为特定的项目选择适当的runtime。
定义Drools runtime
你需要使用Eclipse首选项视图定义一个或多个Drools runtime,要打开你的首选项,请在“菜单”窗口中选择“Preferences”菜单项,一个新的首选项对话框将显示你的所有首选项,在对话框的左侧,在Drools类别下,选择“Installed Drools runtimes”。右边的面板应该显示当前定义的Drools runtimes,如果你还没有定义任何runtimes,它应该如下图所示。
要定义一个新的Drools runtime,单击add按钮,弹出如下所示的对话框,需要你的runtime名称和文件系统上可以找到它的位置。
一般来说,你有两个选择:
- 如果你只想使用Drools Eclipse插件中包含的默认JAR,你可以通过单击“Create a new Drools 5 runtime …”按钮自动创建一个新的Drools runtime,会出现一个文件浏览器,要求你选择文件系统上要创建此runtime的文件夹,然后插件会自动将所有需要的依赖项复制到指定的文件夹中,选择此文件夹后,对话框应如下图所示。
- 如果你想使用Drools项目的一个特定版本,你应该在你的文件系统上创建一个包含所有必需的Drools库和依赖项的文件夹,与其如上所述创建一个新的Drools runtime,不如给runtime一个名称并选择包含所有所需jar的文件夹的位置。
单击OK按钮后,runtime应该显示在已安装的Drools runtime表中,如下所示。单击新创建的runtime前面的复选框,使其成为默认的Drools runtime,默认的Drools runtime将用作所有没有选择特定于项目的runtime的Drools项目的runtime。
你可以根据需要添加任意数量的Drools runtime,例如下面的屏幕截图显示了一个配置,其中定义了三个runtime:一个Drools 4.0.7 runtime,一个Drools 5.0.0 runtime和一个Drools 5.0.0.SNAPSHOT runtime,Drools 5.0.0 runtime被选择为默认runtime。
请注意,如果更改了默认runtime,则需要重新启动Eclipse,并且需要确保所有使用默认runtime的项目都相应地更新了它们的类路径。
为Drools项目选择runtime
每当你创建Drools项目时(使用“New Drools Project”向导或使用“Convert to Drools Project”操作将现有Java项目转换为Drools项目,当你在Drools透视图中右键单击现有Java项目时,会显示此操作),插件将自动将所有需要的jar添加到项目的类路径中。
当创建一个新的Drools项目时,插件将自动为该项目使用默认的Drools runtime,除非你指定了一个特定于项目的runtime。你可以在“New Drools Project”向导的最后一步中完成这项工作,如下所示,方法是取消“Use default Drools runtime”复选框,并在下拉框中选择适当的runtime。如果单击“Configure workspace settings …”链接,将打开显示当前安装的Drools runtime的工作区首选项,以便在其中添加新的runtime。
你可以随时更改Drools项目的runtime,方法是打开项目属性(右键单击项目并选择“properties”)并选择Drools类别,如下所示。选中“Enable project specific settings”复选框,并从下拉框中选择适当的runtime。如果单击“Configure workspace settings …”链接,将打开显示当前安装的Drools runtime的工作区首选项,以便在其中添加新的runtime。如果取消选中“Enable project specific settings”复选框,它将使用全局首选项中定义的默认runtime。
从源代码构建
获取源代码
在JBoss Maven存储库中,每个Maven工件的源代码都可以作为源代码JAR文件使用,下载的zip文件中也包含了相同的源代码jar文件,但是,如果你想从源代码构建,强烈建议从源代码控制中获取源代码。
Drools和jBPM使用Git进行源代码控制,blessed git存储库位于GitHub上:
Git允许你对我们的代码进行fork,独立地对其进行个人更改,但仍然会定期合并我们的最新更改,并有选择地与我们共享你的更改,要了解更多关于git的信息,请阅读免费书籍Git Pro。
构建源代码
在本质上,从源代码构建非常简单,例如,如果你想构建guvnor项目:
$ git clone git@github.com:kiegroup/guvnor.git
...
$ cd guvnor
$ mvn clean install -DskipTests -Dfull
...
但是,这里有很多潜在的缺陷,所以如果你真的想从源代码构建并可能为项目做出贡献,请遵循droolsjbpm-build-bootstrap中README文件中的说明。
Eclipse
导入Eclipse项目
通过生成Eclipse项目文件,现在可以将它们导入Eclipse,启动Eclipse时,在subversion检出的根目录中打开工作区。
在调用mvn install
时,下载了所有项目依赖项并将其添加到本地Maven存储库,Eclipse无法找到这些依赖项,除非你告诉它存储库在哪里,为此,设置一个M2_REPO
classpath变量。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。