Drools 5.5.0.Final と Guvnor 5.5.0.Final をサンプルの住宅ローン パッケージで使用します。
次のバッチ実行コマンドを使用して REST json リクエストを送信する場合:
{
"batch-execution": {
"lookup":"ksession1",
"commands":[
{
"insert":{
"out-identifier":"outApplicant",
"return-object":"true",
"object": {
"Applicant":{
"age":17
}
}
}
},
{
"fire-all-rules":""
}
]
}
}
戻り値: 500 内部サーバー エラー
com.thoughtworks.xstream.converters.ConversionException: Applicant : Applicant
---- Debugging information ----
message : Applicant
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : Applicant
class : org.drools.command.runtime.rule.InsertObjectCommand
required-type : org.drools.command.runtime.rule.InsertObjectCommand
converter-type : org.drools.runtime.help.impl.XStreamJson$JsonInsertConverter
line number : -1
class[1] : org.drools.command.runtime.BatchExecutionCommandImpl
converter-type[1] : org.drools.runtime.help..XSt...$JsonBatchExecutionCommandConverter
version : null
Applicant クラスは、XSD 内の住宅ローン パッケージで次のように定義されます。
age:Whole number (integer)
applicationDate:Date
creditRating:Text
name:Text
approved:True or False
Applicant クラスの場所を drools に伝えるにはどうすればよいですか? (これは住宅ローンのサンプルで XSD ファイルとして定義されています)
knowledge-services.xml は現在、次のようになっています。
<drools:grid-node id="node1"/>
<drools:kbase id="kbase1" node="node1">
<drools:resources>
<drools:resource type="PKG" source="http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/packages/mortgages"/>
</drools:resources>
</drools:kbase>
Applicant クラスのパッケージ名を完全に指定するように REST json 要求を変更するとうまくいくのではないかと思います。
...
"object": {
"something.somethingelse.Applicant":{
"age":17
}
}
...
しかし、Applicant の完全修飾パッケージ名が宣言されている場所が見つからないようですか?
REST インターフェイスの全体的なポイントは、Web サービス インターフェイスを介して drools にアクセスすることであるため、受け入れ可能な回答は、Java コードを記述しなくても機能する例を示す必要があります。
春の設定、または機能するjsonリクエストを作成する他の方法はありますか?