Drools是一个专注于自动化智能和决策管理的项目集合, 提供了前向和后向推理的规则引擎,DMN决策引擎等项目。在人工智能中,专家系统就是模拟人类专家决策能力的系统,而规则引擎是搭建一个专家系统的基础模块。

Drools是KIE开源社区的一部分,KIE开源社区是由各种相关项目或项目组组成的,这些项目组完成了业务自动化管理的组合方案。其他最重要的项目和项目组包括:

1、 Kogito(https://kogito.kie.org/)是一个构建智能应用的云原生业务自动化项目,以久经考验的能力为后盾由多个部分组成,包括Drools,UImodeling工具,像VSCode等;
2、 OptaPlanner(https://www.optaplanner.org/)是一个面向开发人员的快速,易用,开源的AI约束求解器是一个轻量级可嵌入的计划引擎;
3、 jBPM(https://www.jbpm.org/)是构建业务应用的工具,用于辅助自动化业务流程和决策;

额外资源

Drools source code

参与

我们经常问-“我如何参与?”回答很简单,就是写一些代码然后上传:)下面是一些我们要求的总体概述,以及一些建议。如果你贡献了一些好的作品,请考虑写一篇关于你作品的博客:)

为了做贡献,你需要有以下要求:

1、 一个JIRA账户如果你没有注册,请在JIRA(https://issues.redhat.com/)上创建一个账户;
2、 一个GitHub账户Drools的源代码在GitHub上为了提交代码贡献,需要有一个GitHub账户;

提交问题或者提交加强请求

我们使用JIRA去跟踪新的特性请求,bugs等。如果你在Drools中发现一个问题,请在DROOLS的JIRA项目下提交该问题。对于代码贡献,你可以自己创建一个JIRA的票据,用来跟踪你的代码贡献。这样可以确保所有的请求都被记下来,并且分配到发布日程表中,而且所有的讨论都被统一到一个地方。错误报告,错误修改,特性请求,特性提交都应到这个统一的地方。一般的问题都在问题列表中回答。少数代码提交,例如格式化和文档修改,不需要创建相关的JIRA问题。

提交贡献的源代码

我们接受在GitHub拉取请求的方式贡献源代码。使用您的贡献拉取请求的步骤如下:

1、 对Drools代码库进行fork操作(github的fork是复制、打分支仓库的意思);
2、 克隆你的fork仓库;
3、 在fork仓库中创建一个新的分支;
4、 在DROOLSJIRA项目下创建一个JIRA,去跟踪你的工作;
5、 在新的分支上执行并提交代码修改;

1、 请不要忘记带上测试去覆盖你的修改我们要求每一个代码的修改都需要一个测试;
2、 提交需要以JIRA的问题ID开始,例如DROOLS-1946这样确保提交可以和JIRA对应上,以至于我们能够看到所有提交在JIRA上对应的问题;
3、 请不要尝试将不相关的问题或者修改合并到一个提交或者拉取请求上如果你想要贡献多个贡献,请将多个贡献分开在不同的拉取请求上;
4、 请确保你的修改不会影响到工程或者测试的其他部分运行所有的测试,请参考下一节“构建一个Drools的源代码”;
6、 在你的fork仓库上推送一个新的分支在推送你的新分支之前,从主要的Drools源代码仓库同步最新的修改到本地,是一个好习惯;
7、 对Drools的主源码仓库创建一个拉取请求当拉取请求正在创建的时候,会有一个描述模板请根据模板将描述填上设置"Alloweditsandaccesstosecretsbymaintainers"会默认为“enabled”,为了允许维护者根据需要在PR上进行协作;
8、 你的拉取请求将会得到维护者的审核,所以如果有什么事情不清楚,请备好提供答案,或者如果有一些代码需要在审核的时候进行修改,求准备更新代码请保持耐心,维护人员可能需要花费一些时间去获得你的拉取请求,因为会有很多的拉取请求等着去审核;
9、 如果你从维护人员处获取了许可,那么你的拉取请求将会被合并到Drools的主源码库中;

构建一个Drools的源代码

Drools是主要是基于java的项目,可以使用Maven进行构建,构建drools仓库,你需要如下内容:

1、 安装javaJDK,至少是版本11.;
2、 安装Maven,至少是版本3.8.6.在构建的过程中会有强制maven版本的规则,所以请尝试尽可能的使用最新的Maven版本;
3、 克隆Drools的源码;
4、 在命令行中运行Maven;

带测试的maven构建命令

mvnclean install

不带测试的maven构建命令

mvnclean install -Dquickly