在(Drools)中抛出自定义异常

时间:2013-12-03 10:42:31

标签: java drools

我们是否有可能在drools中抛出自定义异常

所以,我有一些规则,需要使用重要数据抛出自定义异常。

Drools Rule:

import com.statest.aifmd.etl.validator.data.ValidationException 

  rule "Linking Rule"

  when   
      $dictionary: Dictionary()
      $fileName: String()   
  then   
      queryFundMasterTable("String", $dictionary, $fileName);
  end


  function void queryFundMasterTable(String sourceFieldName Dictionary dictionary, String fileName) {  

     String result = dictionary.findRecord(sourceFieldName);  
     if ((result == null) || result.isEmpty()) { 

            throw new ValidationException(new ValidationMessage(fileName, Level.WARNING));

     }   
  }

爪哇:

public void process(ExtractRow row, ValidRecord validRecord, String extractFilename) throws ValidationException {      
            session.execute(Arrays.asList(new Object[] { filename, dictionary}));

}

1 个答案:

答案 0 :(得分:1)

你可以做到这一点。您将不得不尝试捕获fireAllRules调用,期望包含自定义异常的org.drools.runtime.rule.ConsequenceException。

但这是从引擎退出的一种相当粗鲁的方式,它永远不应该被用来表示常规或甚至不寻常的控制流。但是,如果您的ValidationException将导致正常关闭,那么就可以了。