2017-06-05 87 views
0

我是新來的口水。我正在寫一個新的rule.But我收到錯誤如下:「」不匹配的輸入'。'在規則

不匹配的輸入在模式規則 「StopTextRule」

我的規則是

package com.******.*****; 

import java.lang.Number; 

rule "StopTextRule" 
    dialect "mvel" 
    salience 20 
    lock-on-active true 
    when 
     RoutingData(messageBody != null && (
         (messageBody.trim().equalsIgnoreCase("stop") || messageBody.trim().equalsIgnoreCase("\"stop\"") || messageBody.trim().equalsIgnoreCase("stop.") || messageBody.trim().equalsIgnoreCase("\"stop.\"")) 
          || (messageBody.trim().equalsIgnoreCase("quit")|| messageBody.trim().equalsIgnoreCase("\"quit\"") || messageBody.trim().equalsIgnoreCase("quit.")|| messageBody.trim().equalsIgnoreCase("\"quit.\"")) 
          || (messageBody.trim().equalsIgnoreCase("cancel")|| messageBody.trim().equalsIgnoreCase("\"cancel\"") || messageBody.trim().equalsIgnoreCase("cancel.")|| messageBody.trim().equalsIgnoreCase("\"cancel.\"")) 
          || (messageBody.trim().equalsIgnoreCase("UNSUBSCRIBE")|| messageBody.trim().equalsIgnoreCase("\"UNSUBSCRIBE\"") || messageBody.trim().equalsIgnoreCase("UNSUBSCRIBE.")|| messageBody.trim().equalsIgnoreCase("\"UNSUBSCRIBE.\""))) 
          && incomingMessageProtocol != null && incomingMessageProtocol.trim().equalsIgnoreCase("X")) 
     routingResp : RoutingRuleResponse(isStop == false) 
    then 
     modify(routingResp) { 
       setIsStop(true) 
     } 
end 
+0

流口水哪個版本您使用的? – laune

回答

0

這將編譯使用Drools的6.4.0。我認爲你使用的是舊版本,其中Java表達式必須包含在eval中。

這將是在任何情況下簡單改寫這個模式就像這樣:

rule x 
when 
    X(messageBody != null && 
     messageBody matches "\\s*(\"?)(?i:stop|quit|cancel|unsubscribe)\\.?\\1\\s*" && 
     incomingMessageProtocol != null && 
     incomingMessageProtocol matches "\\s*(?i:X)\\s*")) 
then 
    // ... 
end