私は drools の初心者です。Tomcat7 で実行されている Drools kie サーバー 6.4.0.Final で単純な CEP ルールを実行しようとしていますが、kie コンテナーを起動しようとすると次のエラーが発生します。
[localhost-startStop-1] DEBUG KieModule Lookup. ReleaseId com.realtech:stdout:1.0-SNAPSHOT was not in cache, checking classpath
[localhost-startStop-1] DEBUG KieModule Lookup. ReleaseId com.realtech:stdout:1.0-SNAPSHOT was not in cache, checking maven repository
[localhost-startStop-1] ERROR Unable to build KieBaseModel:kbase1
Unable to Analyse Expression speed == 200:
[Error: unable to resolve method using strict-mode: com.realtech.flight.FlightStatus.speed()]
[Near : {... speed == 200 ....}]
^
[Line: 15, Column: 4] : [Rule name='flight print']
私のコードは次のようなものです:
FlightStatus.drl
package com.realtech.flight;
//import com.realtech.flight.FlightStatus;
declare FlightStatus
@role(event)
end
rule "flight print"
no-loop true
when
$flight : FlightStatus( speed == 200 ) // over window:time(1m)
then
System.out.println("test");
end
FlightStatus.java
package com.realtech.flight;
/**
* This class was automatically generated by the data modeler tool.
*/
public class FlightStatus implements java.io.Serializable
{
static final long serialVersionUID = 1L;
public java.lang.Float speed;
public FlightStatus()
{
}
public java.lang.Float getSpeed()
{
return this.speed;
}
public void setSpeed(java.lang.Float speed)
{
this.speed = speed;
}
public FlightStatus(java.lang.Float speed)
{
this.speed = speed;
}
}
kie-workbench のナレッジベース設定: ここに画像の説明を入力します
そして、kie-server でコンテナーを開始するときに例外が発生しました。
しかし、宣言を削除すると成功します:
declare FlightStatus
@role(event)
end
または削除しspeed == 200
ます。
私の悪い英語でごめんなさい。