0

我正在尝试编写用于处理消息的 DSL。我有几种构造与以下构造一起使用会导致错误-

从 DSL - [结果] []字段 {bit} 验证失败将字段 {bit2} 设置为 "{field_value}"=System.out.println("Test");

在 DSLR 中 - 在字段 2 的验证失败时将字段 39 设置为“181”

奇怪的是,以下工作正常

从 DSL - [结果][]字段 {bit} 验证失败将字段 {bit2} 设置为 {field_value}=System.out.println("Test");

在 DSLR 中 - 在字段 2 的验证失败时将字段 39 设置为 181(请注意“field_value”上已删除的双引号)

难道我做错了什么?. 我正在使用 Drools 5.4.0 Final。

谢谢!

Rule Compilation error : [Rule name='handle authorization transactions for validation failures'] defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (21:1344) : on cannot be resolved to a type defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (21:1358) : Syntax error on token “失败”, ; 预期的 defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (21:1366) : of 无法解析为 defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c418914aa7fb71:14bcc5b78 类型 重复的局部变量字段 defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (21:1375):令牌“2”的语法错误,;expected defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (22:1450) : on cannot be resolved to a type defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (22:1453) : Duplicate local variable validation defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (22:1464) : Syntax error on token "失败”, ; 预期 defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (22:1472):of cannot be resolved to a type defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (22:1475) : Duplicate local variable field defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (22:1481) : Syntax error on token "3", ; expected defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (23:1556) : on cannot be resolved to a type defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (23:1559) : Duplicate local variable validation defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (23:1570) : Syntax error on token " 重复的局部变量字段 defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (23:1587):令牌“4”的语法错误,;预期的 重复的局部变量字段 defaultpkg/Rule_handle_authorization_transactions_for_validation_failures_bea353bc1d7c4114aa7fb7548bcc7b83.java (23:1587):令牌“4”的语法错误,;预期的

4

1 回答 1

0

看起来 drools 以递归方式应用规则!我将 DSL 中的条目设为 [consequence][]on 字段 {bit} 的验证失败,将字段 {second_bit} 设置为“{val}”=...

但还有另一个这样的 - [consequence][]set field {bit} to "{field_value}"= ...

所以流口水将第一个条目的最后一部分与第二个条目的 RHS 匹配!。感谢 drools.dump.dir 选项,我可以看到发生了什么!

于 2012-07-27T09:01:10.793 回答