0
のいずれかの事実のためにnullを返します確かにそこにあるのですが、私がそれを取り戻そうとすると、factHandle
のオブジェクトはnullです。私はIDベースのアサーションモードでDroolsを使用しようとしています。私の関連する質問は次のとおりです:getFactHandle方法は、私は次のコードを持っているDroolsの
- なぜ私のファクトはnullになりますか?メモリ内の
someFact
の位置がDo something else with someFact, insert it into some db
段階で変更されている可能性があります。問題に影響しますか? - DroolsはIDをどのように比較しますか?私は
@Id
と注釈されたsomeFact
オブジェクトにprivate long id
を提出しました。 - は、次のように私は私の
KieContainer
とKieBase
を作成しています:私は平等に基づく表明に切り替える必要がある場合
`` `
@Bean
public KieServices kieServices() {
return KieServices.Factory.get();
}
@Bean
public KieContainer kieContainer() throws IOException {
final KieRepository kieRepository = kieServices().getRepository();
kieRepository.addKieModule(new KieModule() {
@Override
public ReleaseId getReleaseId() {
return kieRepository.getDefaultReleaseId();
}
});
KieFileSystem kfs = kieServices().newKieFileSystem();
PathMatchingResourcePatternResolver pmrs = new PathMatchingResourcePatternResolver();
Resource[] files = pmrs.getResources("classpath*:com/company/**/rules/*.drl");
for(Resource file : files) {
String myString = IOUtils.toString(file.getInputStream(), "UTF-8");
kfs.write("src/main/resources/"+ file.getFilename(), myString);
}
KieBuilder kieBuilder = kieServices().newKieBuilder(kfs);
kieBuilder.buildAll();
return kieServices().newKieContainer(kieRepository.getDefaultReleaseId());
}
@Bean
public KieBase kieBase() throws IOException {
KieBaseConfiguration kieBaseConfiguration = kieServices().newKieBaseConfiguration();
kieBaseConfiguration.setProperty("assertBehaviour", "equality");
return KnowledgeBaseFactory.newKnowledgeBase(kieBaseConfiguration);
}
` ``
を、私が実装したequals
と私のオブジェクト上のhashCode
メソッドが見つかりましたKieBase
のアサーションをEQUALITY
として定義する方法を見つけることができませんでした。どうやってやるの?