drools将drl转换为pkg不正确的错误信息

时间:2014-08-21 06:41:19

标签: drools

我有一个a.drl文件,它有效。对于a.drl,其标题如下所示:

package com.test.drools; 

import java.util.List; 
import java.util.Map; 
import com.temp.ToDoItemTO; 
import com.util.*; 

我将这些罐子添加到构建路径中。

我想使用以下代码将其转换为.pkg文件:

KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
kBuilder.add( ResourceFactory.newFileResource( drlFile ), ResourceType.DRL ); 
if( kBuilder.hasErrors() ){ 
    for( KnowledgeBuilderError err: kBuilder.getErrors() ){ 
        System.err.println( err.toString() ); 
    } 
    throw new IllegalStateException( "DRL errors" ); 
} 
OutputStream os; 
    try { 
            os = new FileOutputStream( pkgFile ); 
             ObjectOutputStream oos = new ObjectOutputStream( os ); 
                oos.writeObject( kBuilder.getKnowledgePackages() ); 
                oos.close(); 
    } catch (FileNotFoundException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
    } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
    } 

但它给我带来了许多错误,如下:

[Line: 3768, Column: 2] : [Rule name='remove scheduled event_351'] 

Unable to Analyse Expression p.estActionDate2Loc != null: 
[Error: com/icil/service/exception/entity/ApplicationException] 
[Near : {... p.estActionDate2Loc != null ....}] 

第3768行是:

when 
    holder : MultiHolder(p: previousTO, p.estActionDate2Loc != null) 
then 
 ..... 

一次又一次地尝试之后,我添加了这个jar / com / icil / service / exception / entity / ApplicationException来构建路径,然后错误就消失了。

我的困惑是:

  1. a.drl标头不导入com / icil / service / exception / entity / ApplicationException,为什么需要将它添加到构建路径,
  2. 即使我错过了jar / com / icil / service / exception / entity / ApplicationException,为什么错误不是找不到类而不是“无法分析表达式p.estActionDate2Loc ......”
  3. 提前致谢。

0 个答案:

没有答案