当前位置: 首页 > 知识库问答 >
问题:

我可以在规则触发之前(基本上是在“when”子句之前)在drl文件中添加事实吗?

陆文博
2023-03-14

我正在考虑从一个单独的数据模型中生成(或“编译”)drl文件。理想情况下,我希望drl文件尽可能独立,不需要与相应的java代码进行大量交互(插入事实、设置全局值等)。

declare SomeFact end;

// pseudo code as I dont know if its possible
$listOfStrings = {"one", "two", "three"}; 

rule "some name"

when 
    $someFact:SomeFact($code:code)
    $listOfStrings contains $code

then
    // ...

谢了!

共有1个答案

东方华荣
2023-03-14

如果您希望在DRL文件中包含所有内容,可以使用以下模式:

declare SomeFact
    code: String
end

rule kickoff
  salience 999999999
when
then
  // initialize globals, if necessary
  // insert facts      
  insert( new SomeFact( "one" ) );
end

规则可以写成

rule "some name"
when 
  $someFact: SomeFact( code in ("one", "two", "three") )
then
  // ...
end
 类似资料:
  • 我有一个表单,其中有一条错误消息,如下例所示: http://codepen.io/anon/pen/dYWyEM?editors=101 重现问题的步骤如下: 打开coDepen链接后, 1)专注于输入领域 2) 按提交按钮 3) 由于首先触发模糊事件,因此首先隐藏错误消息,从而更改提交按钮的位置。因此,点击事件根本没有注册,我需要再次点击以提交表单。 有没有办法先发送提交事件? 我需要检测触发

  • 我有一些火花代码来处理csv文件。它对其进行一些转换。我现在想将此RDD保存为csv文件并添加一个标头。此RDD的每一行都已正确格式化。 我不知道怎么做。我想用头字符串和我的RDD进行联合,但头字符串不是RDD,因此无法工作。

  • 我需要添加一个单独的登录页面之前,招摇用户界面的身份验证从另一个服务器。从这个请求中,我将获得一个密钥,我必须将其添加到来自swagger UI的每个req的标头中。 我在swagger 2.0中使用节点服务器和swagger工具。

  • 问题内容: 基本上我有(忽略异常处理等): 如果我理解正确,那应该不会有任何影响,因为它真正所做的只是为GC释放了资源。特别是对于Derby:不再需要语句,结果集和连接时,应明确关闭它们。与Derby的连接是应用程序外部的资源,并且垃圾收集器不会自动关闭它们。 但是,这会导致交易出现任何问题吗?我认为交易不依赖于该声明。有人可以确认吗? 问题答案: 绝对可以关闭它们,应该这样做。

  • 也许有人能帮我澄清一下。 我正在尝试编写一个插入前触发器,如果它留空,可以设置关闭。这可能吗? 没有太多代码可显示。我所做的只是创建了一个带有调试语句的简单的插入前触发器,以确保我的触发器在验证规则之前执行。似乎验证规则是第一位的(我显然无法更改它)。触发器永远不会触发。 这是可行的还是不可能的?

  • 本文向大家介绍对于HTML5拖放事件,dragLeave事件在放置之前触发,包括了对于HTML5拖放事件,dragLeave事件在放置之前触发的使用技巧和注意事项,需要的朋友参考一下 要解决拖放事件的这一问题,有时在拖动之前将dragLeave触发: 在下拉菜单中,您可以设置以下内容: