标签: rules

我为什么要使用Drools?

我不是Drools专家.不过,我对它有一些熟悉,通过试验它.我无法理解,为什么我需要它.

我的典型应用是商业Web应用程序.是的,他们确实有一些规则.但这些是使用数据库表,SQL查询和一个很好的用户界面实现的,以便业务用户修改规则.规则不是任意的,它们在投入生产之前都经过仔细考虑.

我的商业用户永远不会使用(Drools)脚本语言来修改任何东西.单独修改规则.他们非常高兴使用UI屏幕来修改规则.另外,如果我让它们靠近它,它们可以在Drools文件中产生无数的语法错误.

再次
- 为什么我应该在这种情况下使用Drools?
- 我见过的Drools狂热分子坚持认为我应该改变我的所有代码以利用Drools.

那么,Drools有用吗?我不确定.

java scripting rule-engine rules drools

31
推荐指数
3
解决办法
2万
查看次数

具有多个规则的Makefile共享相同的配方

我想知道是否可以编写一个包含多个规则的Makefile,每个规则都定义了自己的先决条件,并在不重复配方的情况下执行所有相同的配方.例:

TARGETS= file1 file2 file3

all: $(TARGETS)

file1: dep1 dep2
file2: dep2 dep3 dep4
file3: dep2 dep1
    cat $^ > $@
Run Code Online (Sandbox Code Playgroud)

谢谢!

makefile rules

26
推荐指数
1
解决办法
1万
查看次数

.NET的规则引擎

我们有业务要求让高级用户编辑保险费率和注册规则.我们需要一个web ui,让他们说"这个产品只适用于人们<55,除非他们来自德克萨斯州并拥有一只贵宾犬"或其他什么.编辑澄清:保险是疯了.规则因产品,州与州而异,并且不断变化.

我们查看了几个规则引擎,但商业规则引擎是100K +,开源代码似乎不是,完成了.如果我们提前创建规则,Windows Workflow会起作用,但在运行时构建它们似乎需要绕过代码访问安全性.那太可怕了.

我们难以重新发明这个轮子吗?对.net有更好的选择吗?

c# rules drools

24
推荐指数
2
解决办法
1万
查看次数

为什么 eslint 考虑 JSX 或某些 react @types 未定义,因为将 typescript-eslint/parser 升级到版本 4.0.0

上下文是一个相当大的项目,使用 ReactJs 构建,基于 eslint 规则,具有这个 eslint 配置

const DONT_WARN_CI = process.env.NODE_ENV === 'production' ? 0 : 1

module.exports = {
  extends: [
    'eslint:recommended',
    'plugin:jsx-a11y/recommended',
    'plugin:react/recommended',
    'prettier',
    'prettier/@typescript-eslint'
  ],
  plugins: [
    'react',
    'html',
    'json',
    'prettier',
    'import',
    'jsx-a11y',
    'jest',
    '@typescript-eslint',
    'cypress'
  ],
  settings: {
    'html/indent': '0',
    es6: true,
    react: {
      version: '16.5'
    },
    propWrapperFunctions: ['forbidExtraProps'],
    'import/resolver': {
      node: {
        extensions: ['.js', '.jsx', '.json', '.ts', '.tsx']
      },
      alias: {
        extensions: ['.js', '.jsx', '.json']
      }
    }
  },
  env: {
    browser: true,
    node: true,
    es6: …
Run Code Online (Sandbox Code Playgroud)

javascript rules typescript reactjs eslint

22
推荐指数
3
解决办法
1万
查看次数

我在哪里可以找到"eslint:recommended"的规则定义?

.eslintrc文件中,我们可以使用:

"extends": "eslint:recommended"
Run Code Online (Sandbox Code Playgroud)

扩展eslint提供的推荐规则,并在规则列表中,其中许多被标记为"推荐".

我的问题是什么是它们的确切规则定义?我搜索了eslint的回购,但没找到它.

rules eslint

21
推荐指数
5
解决办法
9016
查看次数

OOP有什么规则吗?

最近我听说OOP(Java)有9条规则.我只知道四个是抽象,多态,继承和封装.OOP还有更多规则吗?

oop rules solid-principles package-design

20
推荐指数
3
解决办法
8448
查看次数

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

我需要一些关于解决这个问题的最佳方法的建议.

我研究了DROOLS,Java Rule Engine和其他一些.所有这些都是强大的,并且对它们有好处.我不知道哪个(如果有的话)对我来说是最好的选择.

我有一个业务对象.(简化演示)

Person
     firstName:String
     lastName:String
     departMent:String
     hireDate:Date
Run Code Online (Sandbox Code Playgroud)

我需要在Web应用程序中编写一个编辑器,以便围绕这些字段构建复杂的规则.我需要支持复杂的嵌套AND/OR逻辑.我只需要基本的运算符,规则应该简单地评估为真或假.如果规则评估为true或false,则将分别执行一个操作.

例如,

firstName CONTAINS"value"AND(lastName EQUALS"input"OR department CONTAINS"input")

我曾想过,也许我应该编写自己的解析器并在我自己的代码中评估逻辑.我不知道该怎么做,任何建议或链接到阅读的东西将不胜感激.我可以研究一种特定的设计模式吗?

你会如何解决这个问题?关于规则引擎的一个保留意见是,它们可能过于复杂而不仅仅是一个简单的问题?

java rule-engine business-logic rules

20
推荐指数
1
解决办法
2万
查看次数

如何设置Outlook规则以对BCC收到的电子邮件进行分类?

我在差异分发列表中,如A,B,C

有很多电子邮件BCC到A,B,C

我想设置"将所有邮件密件抄送到特定分发列表到特定文件夹"的规则

似乎没有关于"BCC"的规则,

outlook rules bcc

20
推荐指数
2
解决办法
4万
查看次数

在Python中实现"规则引擎"

我正在用Python编写日志收集/分析应用程序,我需要编写一个"规则引擎"来匹配日志消息并对其进行操作.

它需要具备以下功能:

  • 消息本身的正则表达式匹配
  • 消息严重性/优先级的算术比较
  • 布尔运算符

我想象一个示例规则可能是这样的:

(message ~ "program\\[\d+\\]: message" and severity >= high) or (severity >= critical)
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用PyParsing或类似实际解析规则并构造解析树.

我想到的当前(尚未实现的)设计是为每个规则类型创建类,并根据解析树构造和链接它们.然后,每个规则都有一个"匹配"方法,可以使消息对象返回它是否与规则匹配.

很快,像:

class RegexRule(Rule):
    def __init__(self, regex):
         self.regex = regex

    def match(self, message):
         return self.regex.match(message.contents)

class SeverityRule(Rule):
    def __init__(self, operator, severity):
         self.operator = operator

    def match(self, message):
         if operator == ">=":
             return message.severity >= severity
         # more conditions here...

class BooleanAndRule(Rule):
    def __init__(self, rule1, rule2):
         self.rule1 = rule1
         self.rule2 = rule2

    def match(self, message):
          return self.rule1.match(message) and self.rule2.match(message)
Run Code Online (Sandbox Code Playgroud)

然后,这些规则类将根据消息的分析树链接在一起,并在最高规则上调用match()方法,该方法将向下级联,直到评估完所有规则. …

python parsing rules

19
推荐指数
2
解决办法
3万
查看次数

phpcs:如何修改PSR2来检查大括号与方法在同一行?

我现在花了2个多小时试图弄清楚如何要求{与方法声明在同一行,而不是默认要求是下一行.我怎么能这样做?我已经将PSR2标准复制到一个名为PSR2的新文件夹,以便根据自己的喜好对其进行修改.所以我正在研究的基础基本上是我想要修改的PSR2标准.

我已经尝试过ruleset.xml,我试图在代码中直接修改它而没有成功.

<rule ref="PEAR.Classes.ClassDeclaration">
    <properties>
        <property name="eolChar" value="{"/>
    </properties>
</rule>
<rule ref="PSR2R.Classes.ClassDeclaration">
    <properties>
        <property name="eolChar" value="{"/>
    </properties>
</rule>
Run Code Online (Sandbox Code Playgroud)

我已经发现这是错的.EOL由phpcs设置.但我无法弄清楚我是否可以通过规则配置一个值.

到目前为止,这对我来说很好用(搞愚蠢的空间!):

<?xml version="1.0"?>
<ruleset name="PSR2R">
    <description>PSR2 with tabs instead of spaces.</description>
    <arg name="tab-width" value="4"/>
    <rule ref="PSR2">
        <exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
    </rule>
    <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
    <rule ref="Generic.WhiteSpace.ScopeIndent">
        <properties>
            <property name="indent" value="4"/>
            <property name="tabIndent" value="true"/>
        </properties>
    </rule>
</ruleset>
Run Code Online (Sandbox Code Playgroud)

但我想补充上面的规则.

php rules codesniffer phpcs

17
推荐指数
2
解决办法
4289
查看次数