Tag: 规则

实现比较方法的规则

像compareTo,必须是“反身,反对称和传递”,是否有任何规则来实现比较方法? 谢谢

将Java POJO转换为Drools DRL,反之亦然

我在UI上有规则配置,构建到Java POJO。 我怎样才能生成Drools DRL(将被传递给与事实相匹配的其他组件,如果规则匹配则返回true或false)。 我也从数据库接收DRL文件,为了在UI上显示规则,我需要转换回Java POJO。 Basiclly有没有可以在Java POJO和Drools DRL文件之间转换的工具或脚本? 如果没有,最好的方法是什么? 非常感谢!

ANTLR4中的规则变量

我正在尝试将我的语法从v3转换为v4并遇到一些麻烦。 在第3节我有这样的规则: dataspec[DataLayout layout] returns [DataExtractor extractor] @init { DataExtractorBuilder builder = new DataExtractorBuilder(layout); } @after { extractor = builder.create(); } : first=expr { builder.addAll(first); } (COMMA next=expr { builder.addAll(next); })* ; expr returns [List ext] … 但是,随着v4中的规则返回这些自定义上下文对象而不是我明确告诉他们返回的内容,事情都搞砸了。 什么是v4方式来做到这一点?

决策表的本机Java解决方案

我正在与一位受人尊敬的同事讨论一个有趣的讨论,并希望得到一些额外的意见…… 我需要在我的应用程序中实现一些基本的决策表逻辑。 我当时希望使用OpenL Tablets来代表Excel电子表格中的决策数据。 我喜欢它,它易于设置和维护,并且具有较小的内存和处理空间。 我可以轻松添加新表,我有一些表超过100行,最多10个条件。 这些数据非常静态,很少发生变化。 我的同事不希望在混合中引入第三方api,并对与Microsoft文件格式绑定有所保留。 我看到了他的观点,但我能看到通过Java实现决策表的唯一方法是编写一系列丑陋的if或case语句,这对于较小的表来说很好,但是当我到达更大的表时会变得无法管理。 有没有人对论点的双方都有任何评论。 如果有人对可以解决我在本机Java中的问题的模式有任何想法,我会有兴趣听到它。 非常感谢你的时间。

Java方法名称的有效字符是什么?

我读到了Java变量的命名 。 它说除了$和_之外,Java变量不能以任何数字和特殊字符开头。 一些有效的例子: int count; int _count; int $count; 还有一些无效的例子: int %count; int 4count; int #count; 相同的规则是否适用于方法名称?

JUnit @Rule与@Before的生命周期交互

我有一些使用TemporaryFolder @Rule JUnit测试。 他们在@Before方法中使用TemporaryFolder来执行一些设置: @Rule public TemporaryFolder folder = new TemporaryFolder(); @Before public void init() { folder.newFile(“my-file.txt”); } @Test public void myTest() { … } 大部分时间这都很完美。 但是,在使用SpringJUnit4ClassRunner我发现在某些情况下,在应用TemporaryFolder实例中的Statement之前调用init()方法。 因此,在init()使用folder时,临时文件夹位置未设置(即: null init() ,我的文件最终在工作目录中,而不是/tmp 。 所以在某些情况下@Before方法在规则之前执行,但是,我无法建立一个明确的模式。 我偶尔会看到一些与我自己的规则实现类似的问题。 有什么方法可以确保在任何设置方法之前应用我的规则语句?

在Drools 6中以编程方式创建新drools规则的新方法是什么?

简而言之,我想在运行时从规则库创建,编辑和删除规则。 我很难弄清楚如何在流氓6+中做到这一点。 我知道在先前版本的drools(<= 5.6)中,有一个.drl文件的XML表示和一个用于它的API: https ://docs.jboss.org/drools/release/5.6.0 .Final / drools-expert-docs / html / ch04.html#d0e8052 。 从5.6开始的drools文档表明这已被弃用,它似乎在6处被完全删除。我不想使用已知没有直接升级路径的API。 由于工作流程要求以及Web用户界面的复杂性,将Guvnor或Workbench UI公开给用户以进行规则编辑也不太合适。 我想从Java代码创建和管理规则。 我想要一个比.rrl文件的字符串模板更好的方法来创建新规则和修改规则。 从Java以编程方式创建新规则的用途是什么? 我做了很多搜索,但似乎无法为此找到一组Java API调用。

我想,我需要一个简单的规则引擎?

我需要一些关于解决这个问题的最佳方法的建议。 我研究过DROOLS,Java Rule Engine和其他一些。 所有这些都是强大的,并且对它们有好处。 我不知道哪个(如果有的话)对我来说是最好的选择。 我有一个业务对象。 (简化演示) Person firstName:String lastName:String departMent:String hireDate:Date 我需要在Web应用程序中编写一个编辑器,以便围绕这些字段构建复杂的规则。 我需要支持复杂的嵌套AND / OR逻辑。 我只需要基本的运算符,规则应该简单地评估为真或假。 如果规则评估为true或false,则将分别执行一个操作。 例如, firstName CONTAINS“value”AND(lastName EQUALS“input”OR department CONTAINS“input”) 我曾经想过,也许我应该编写自己的解析器并在我自己的代码中评估逻辑。 我不知道该怎么做,任何建议或链接到阅读的东西将不胜感激。 我可以研究一种特定的设计模式吗? 你怎么解决这个问题? 关于规则引擎的一个保留意见是,它们可能过于复杂而不仅仅是一个简单的问题?

Java date iterator factory,其中的规则指定了如何计算间隔

我正在寻找一个Java类,我可以在其中指定一组日期规则,例如“每隔3个星期日”和“每隔一个月第一次出现星期一”。 我希望能够从中获得类似无限迭代器的东西(.next()将返回与规则集匹配的下一个日期)。 我想我自己可以自己构建它 – 但是日历很麻烦,而且感觉类似的东西已经存在了。 我讨厌成为重塑一个更快的轮子的人。 有人知道这样的事吗? 我一直在看JODA,它似乎为它奠定了基础,但似乎没有提供我想要的全部function..

如何在java中validationJSON对象?

我使用sf.json库来映射我的Web应用程序中的传入请求的表单数据。 让我们说传入的请求是http:// localhost:8080 / app / addProfile ,表单数据为: formData: { “name”:”applicant Name”, “Age”:”26″, “academics”:{ “college”:”80″, “inter”:”67″, “matriculation”:”89″ }, “skill”:{ “computer”:”c,c++,java”, “maths”:”limit,permutation,statistics” }, “dateOfBirth”:”09-07-1988″ } 服务器端 : String requestFormData=request.getParameter(“formData”); JSONObject formData = JSONObject.fromObject(requestFormData); String name= formData.getString(“name”); if(name.length>70){ //error message for length validation } if(!name.matches(“regex for name”){ //error message for name validation } … … … 这种方法的主要问题是如果JSON结构中有少许修改,则需要修改整个代码。 […]