问题标签 [rules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
13067 浏览

postgresql - PostgreSQL 的规则和 nextval()/serial 问题(非常 PostgreSQL-specific)

当我使用重写规则将插入到一个表中拆分为插入到其他两个表中时,其中一个插入的值默认为 nextval('some_sequence'),并且两个表的序列相同,那么插入的默认值在两张桌子。这可能是由于重写规则的简单文本替换。相反,我希望首先解析默认值,然后将相同的值写入两个表。

这是一个示例(您可能猜到了,我正在尝试使用规则实现专业化/泛化):

特定于第一类儿童的数据保存在

接下来,我定义了一个视图 Children1,它连接了上面的两个表(我通过明确说明 PostgreSQL 根据文档定义视图所做的事情来重写视图)

最后是我遇到问题的重写规则:

尝试插入数据

产生错误消息

解决此问题的一种方法是将重写规则的第二个插入替换为

但这依赖于属性 1 的唯一性,我不想强​​加。另一种解决方案是首先将值插入到临时表中,然后从那里选择两次以插入到两个表中。但由于性能原因,我不喜欢它。

有谁知道如何在两个表中获得相同的默认值(仅使用规则而不是触发器)?

0 投票
0 回答
1443 浏览

visual-studio - StyleCop 特定配置 / MSBuild & Visual Studio 各种行为

这是特定 StyleCop 配置的问题。

我的 Visual Studio .Net 解决方案文件夹中共有两个 Settings.StyleCop 文件。

第一个放置在文件夹根目录中,其中包含为团队选择的规则。

由于我想禁用特定项目的某些规则,因此我在相应的项目文件夹中放置了另一个 Settings.StyleCop 文件。

结果是:

  • 从 Visual Studio IDE(运行 StyleCop)启动分析时,会考虑项目特定文件并且不会发生违规。
  • 从 StyleCopCmd(命令工具)启动分析时,项目特定文件似乎被忽略并且发生了一些违规行为。
  • 从 MSBuild 目标启动分析时,项目特定文件似乎也被忽略了,并且发生了一些违规行为。

我是否错过了与 StyleCop 配置不同的结果?

我正在使用: Windows XP StyleCop 4.3 MSBuild 3.5 SP1 MSBuild 扩展包 3.5.0.0 StyleCopCmd 0.2.1.0

StyleCop 4.3.1.3 和 MSBuild Extension Pack 3.5.3.0 的问题似乎相同

问候,

奥利维尔。

0 投票
1 回答
506 浏览

.net - WF 规则和 CodeTypeReferenceExpression

我将一些变量移到工作流程中的类中。

不幸的是,现在规则失败了,我一直在尝试设置类型,但不断收到此错误。

活动“ifRequestComplete”验证失败:属性“条件”具有无效值。条件表达式无效。无法解析指定的类型名称(“Request, ApprovalWorkflow”)。

没有 'ns0:CodeTypeReferenceExpression Type=".."/>' 我收到此错误

活动“ifRequestComplete”验证失败:属性“条件”具有无效值。条件表达式无效。类型“ApprovalWorkflow.ApprovalFlow”的字段“gReq”不存在或不可访问。

Request 类是在与工作流相同的项目中的 ApprovalWorkflow 命名空间中创建的,也称为 ApprovalWorkflow。

.rules 文件包含这个

我尝试了几种不同的方法来编写类型“Request”、“ApprovalWorkflow.Request”、“ApprovalWorkflow.Request、ApprovalWorkflow”,似乎没有任何效果。

请帮忙。

0 投票
1 回答
2245 浏览

build - 通配符 % 如何在 makefile 规则中工作

我有一个生成文件。

我需要从 src1 和 src2 下的源文件在 C:/bin/ 下构建一组目标。

让他们按顺序说

${DEST_DIR}/ao ${DEST_DIR}/bo ${DEST_DIR}/co ${DEST_DIR}/do

在makefile的某些部分

DEST_DIR = C:/bin

SRC_DIR1 = C:/src1

SRC_DIR2 = C:/src2

我有他们的规则如下

#规则1

${DEST_DIR}/%.o : ${SRC_DIR1}/%.c

#规则#2

${DEST_DIR}/%.o : ${SRC_DIR2}/%.c

让 ac 和 bc 在 SRC_DIR1 中, cc 和 dc 在 SRC_DIR2 中

当我构建它时,它构建得很好,为 ao 和 bo 执行规则#1,然后为 co 执行规则#2 并执行

我没想到会没事。因为我期待它适用于 co 的规则#1 并抛出一个错误,说“没有规则来制作目标 cc”。但它适用于规则#2,并从 SRC_DIR2 中的 cc 构建 co。

有人可以解释一下它是如何工作的吗?在这种情况下,通配符如何%工作以及规则匹配如何发生?

0 投票
1 回答
374 浏览

design-patterns - 持久性模式 - 基于规则的观察者

我正在尝试向应用程序添加功能,用户可以在其中订阅所做的更改:

  • 到另一个实体(由任何用户)
  • 由另一个用户(对任何其他实体)
  • 两者的组合(最后一个是可选的,但使问题更具挑战性)

我想知道如何最好地将这些规则保存到数据库中。

我自然倾向于每个给定的实体(包括用户本身),我添加了一个额外的 UserSubscription 表/实体(例如,PublisherUserSubscription、BookUserSubscription、UserUserSubscription)

这意味着订阅将保持完整性并强制执行。但是,如果我以后更改订阅模型,这似乎会迅速增加我需要的表数量,并且可能导致非常脆弱的设计。(可能需要更新每个现有表)。

鉴于这是一个相当普遍的现实世界场景,我预计会有一些模式。谁能推荐一些?

0 投票
2 回答
816 浏览

parsing - 解析规则——如何让它们一起玩得很好

所以我正在做一个解析器,我更喜欢灵活性而不是速度,我希望它易于编写语法,例如没有棘手的变通规则(解决冲突的假规则等,就像你在 yacc/bison 等中必须做的那样.)

有一个手动编码的 Lexer,带有一组固定的标记(例如 PLUS、DECIMAL、STRING_LIT、NAME 等),现在有三种类型的规则:

  • TokenRule:匹配特定的令牌
  • SequenceRule:匹配一个有序的规则列表
  • GroupRule:匹配列表中的任何规则

例如,假设我们有 TokenRule 'varAccess',它匹配令牌 NAME(大致 /[A-Za-z][A-Za-z0-9_]*/)和 SequenceRule 'assignment',它匹配 [表达式,TokenRule(PLUS),表达式]。

表达式是与“assignment”或“varAccess”匹配的 GroupRule(我正在测试的实际规则集更完整,但对于示例来说就是这样)

但现在假设我要解析

假设解析器以规则表达式开头(定义它们的顺序无关紧要 - 稍后将解决优先级)。假设 GroupRule 表达式将首先尝试“赋值”。然后由于“表达式”是“赋值”中要匹配的第一个规则,它会尝试再次解析表达式,依此类推,直到堆栈被填满并且计算机 - 正如预期的那样 - 只是在一个闪亮的段错误中放弃。

所以我所做的是 - SequenceRules 将自己作为“叶子”添加到他们的第一条规则中,并成为非根规则。根规则是解析器首先尝试的规则。当其中一个被应用并匹配时,它会尝试一个接一个地子应用它的每个叶子,直到一个匹配。然后它尝试匹配叶子的叶子,依此类推,直到不再匹配。

这样它就可以解析表达式

恰到好处 =) 现在有趣的东西。这段代码:

不会解析。发生的情况是,var1 被解析(varAccess),assign 被子应用,它寻找一个表达式,尝试'括号',开始,在'('之后寻找一个表达式,找到 var2,然后在'+ ' 因为它期待一个 ')'。

为什么它不匹配 'var2 + var3' ?(是的,在你问之前有一个“添加”SequenceRule)。因为“添加”不是根规则(以避免使用 parse-expression-beginning-with-expression-etc. 进行无限递归),并且叶子没有在 SequenceRules 中测试,否则它会解析类似

作为

(例如,'1 = 3' 是 add 期望的表达式,varAccess a 的叶子)

而我们希望它是左关联的,例如解析为

所以无论如何,现在我们遇到了这个问题,我们应该能够在 SequenceRules 中解析诸如“1 + 2”之类的表达式。该怎么办?添加一个特殊情况,即当 SequenceRules 以 TokenRule 开头时,它包含的 GroupRules 会被测试是否为叶子?在那个特定的例子之外,这甚至有意义吗?或者是否应该能够在 SequenceRule 的每个元素中指定是否应该对其进行叶子测试?告诉我你的想法(除了扔掉整个系统 - 无论如何这可能会在几个月内发生)

PS:拜托,拜托,请不要回答诸如“去阅读这本 400 页的书,否则您甚至不值得我们花时间”之类的问题,如果您觉得有必要 - 请克制自己并在 reddit 上大肆抨击。好的?提前致谢。

0 投票
4 回答
3413 浏览

c# - Java 和 C# 环境中基于规则的系统

我需要构建一个“基于规则”的系统,该系统可以在 C# 和 Java 中运行和开发(用于化学应用程序)。系统需要能够(通过现有库)获取对象的计算属性并根据这些值做出决策。我不确定系统会是什么样子,但规则不需要正式一致(我们使用了很多启发式方法)。规则应尽可能外部化,以便用户和开发人员可以修改它们而无需了解引擎(它应该是开源的并在两个平台上运行)。系统可能会通过一组受限的类似自然语言的命令来运行。会有一个适应的元素——可以添加新的对象(或至少是词汇)。

这并不像听起来那么麻烦——30 多年前使用 FORTRAN 取得了很大进展,但该领域已处于闲置状态。我将不胜感激我们可以尝试的方法的指针,其中输入的开销是适度的。可能有效的方法包括:

  1. 序言
  2. OWL本体
  3. 决策树
  4. 规则
  5. 文字游戏

编辑 问题的主要方面是找到一个基于规则的系统(Java C# 提及是次要的,只是为了防止可能会说“Windows 具有内置系统”的答案。)请不要回答转换方法Java 到 C#;我想要一种基于规则的方法 - 原则上 - 可以在任何一个上实施。到目前为止,只有一个(或两个)答案真正解决了规则方面的问题。

0 投票
2 回答
1027 浏览

delphi - 开发 Delphi Windows 7 应用程序的规则

在哪里可以找到开发适用于 Windows 7 的 Delphi 应用程序的最佳规则集?

0 投票
2 回答
2563 浏览

list - 在 Drools Rules 中,如何使用两个不同的 ArrayList 对象,obj1 用于 rule 1 和 obj2 用于 rule2?

我正在做 ksession.insert(list) ,之后我必须在 drl 文件中触发规则 1,然后在 drl 中触发 ksession.insert(list) 和规则 2。

有人可以告诉我如何实现这一目标。我阅读了有关议程过滤器和事实句柄的信息,但并不真正知道如何使其发挥作用

下面是一些代码:

ArrayList 列表 = 新的 ArrayList(); list.add(product1); list.add(product2); list.add(product3);

ksession.insert(列表);
ksession.fireAllRules("drl 中的触发规则 1");

//删除列表?

ArrayList list2 = new ArrayList(); list2.add(str1); list2.add(str2); list2.add(str3);

ksession.insert(list2); ksession.fireAllRules("drl 中的触发规则 2");

0 投票
5 回答
965 浏览

java - 在 web 应用程序中建模用户约束的最佳实践?

我正在使用 Acegi (Spring) 安全性构建具有基于角色的访问控制的 webapp。所以我有不同的用户角色:ROLE_ADMINROLE_USER等等。
但是,我需要实现各种用户约束。

让我们考虑一个例子:

假设有一个用户可以在线观看电影的网站。有具有角色的用户ROLE_STANDARD_USERROLE_VIP_USER. 标准用户每周可以看 3 部电影,vip 用户可以每周看 10 部电影,还有其他一些特权。标准用户组中有一个用户,我想每周向他提供 2 部电影。允许的电影数量有时可能会发生变化。
此外,还有各种类型的电影:奇幻、喜剧、经典、新电影等。我希望某些用户,无论其角色如何,都只能访问某些类别。可以动态创建和删除类别。

是否有实施此类用户约束的标准做法?
可以/应该使用 Spring Security 角色和权限来完成吗?
或者我需要考虑向我的应用程序添加基于规则的引擎?

谢谢你。

编辑:
上面的例子是虚构的,我的项目是关于授予学生远程访问各种网络(和其他)设备的权限。但是,用户约束的类型很可能是相同的。
不幸的是,用户访问和约束的模型并不完整和稳定。在不久的将来,我可能会被告知为用户实施各种额外的约束,这些现在还不知道。
因此,我现在想选择一条路径,以便将来轻松添加或更改新的用户约束,并且不需要对内部模型或数据库结构进行重大改革。如果可能的话。

编辑 2

目前,基本的用户约束是硬编码的(原型系统遗留下来的)。我想我会先尝试将它重构为某种参数化的业务服务对象,然后再思考我可以从那里去哪里。我还将考虑使用 Spring Security Authorization Decision Managers。

感谢您的所有建议!