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

在Drools Guvnor中使用多个“匹配”语句

拓拔德馨
2023-03-14

我正在通过drools-guvnor创建规则。我已经导入了我的POJO模型,并且一切都设置正确(我已经进行了测试),但我似乎无法弄清楚如何让“匹配”运算符正确工作。这是我到目前为止所拥有的(源代码):

rule "invilidSms"
dialect "mvel"
    when
        invalidSms : Policy( SMS_Area_Code matches "[0-9]{4,}" || matches "^[0-9]{0,2}" || matches "[0-9\\D]+" , SMS_TelNumber matches "[0-9]{4,}" || matches "^[0-9]{0,2}" || matches "[0-9\\D]+" , SMS_nixieindicator == "Y" || == "y" )
    then
        invalidSms.setSms( ""Invalid area code"" );
end

有谁能给我一些关于在drools guvnor中使用多个正则表达式检查的提示,或者一些让它工作的方法。他们的论坛似乎真的很陈腐。我在网上找到的大多数答案都没有答案。

任何帮助都将不胜感激。

共有1个答案

万俟玉书
2023-03-14

您可以尝试仅通过管道传递正则表达式。类似于:

rule "invilidSms"
dialect "mvel"
when
    invalidSms : Policy( SMS_Area_Code matches "[0-9]{4,}|^[0-9]{0,2}|[0-9\\D]+" , SMS_TelNumber matches "[0-9]{4,}|^[0-9]{0,2}|[0-9\\D]+" , SMS_nixieindicator matches "[Yy]"
then
    invalidSms.setSms( ""Invalid area code"" );
end
 类似资料:
  • 问题内容: 我正在使用语句,以便将输入插入到SQL Server数据库表中。如何在块中执行多个条件。请参考下面的代码。 当前,它仅执行此行。如何执行条件中的所有3行()。 前任 : 这就是我的期望。我只想更新旧字段()并将记录插入同一张表。我不能用逗号分隔这些语句。SQL发出 语法错误 谢谢你。 问题答案: 您可以使用 它来实现: 请记住,此方法有一些局限性,更多信息: MS Connect

  • 问题内容: 我正在使用MySQL包含以下各列的表: 表中的数据如下所示: 要查询它,我可以轻松地做到这一点: 结果将是: 我想知道是否有办法做到这一点: 我想在表达式中使用表列,而无需实际手动指定名称(将其键入)。 奖励(+1)问题 : 能否使用Match / Against像这样完成: 谢谢你的时间!:) 问题答案: 您必须使用Prepared Statement,因为您要执行的操作只能通过动态

  • 问题内容: 这对我来说应该是显而易见的,但事实并非如此。以下两个仅匹配第二个阶段(在这种情况下为) 而以下错误发出错误消息 我想匹配包含的所有文件 或者 输入完全相同的词组。 问题答案: 您的第一个查询实际上不是有效的JSON对象,因为您两次使用相同的字段名称。 您可以使用布尔必须查询来匹配两个短语:

  • 我的Cosmos DB中有以下json: 现在我尝试对 Technology.id 和评级应用过滤器。这意味着我想选择所有条目,例如评级为1的C#和评级为2的SQL。 大约 因为技术代表是一个不起作用的数组。 我也玩过,但我没有让它工作。 如何编写这样的查询?

  • 添加注释 获取questiondetails_new/question/_search{“query”:{“bool”:{“should”:[{“match_prace”:{“tags.keyword”:“azure-data-factory”}},{“match_prach”:{“title”:“azure-data-factory”}}],“minimum_should_match”:1,“f

  • 尝试使用FTL模板进行转换时出现异常!freemarker.core.nonNumericalException:对于“-”左手操作数:需要一个数字,但它的计算结果是序列+散列(包装器:f.e.dom.nodelistmodel):==>item.target[在模板“marketing/widgets/freemarker/newblogpost-update.ftl”中,第31行,第105列]