2017-08-04 7 views
0

KIE Workbenchバージョン6.5.0とKIE実行サーバー6.5.0で、同じローカルのWildfly 10それは正常に動作しています。 私は、ステートレスKieSessionで実行されている単純なルールを持っていますが、プロセスはありません。ルールが基本情報を検証し、発生した検証の情報をグローバル変数に追加することを期待しています。私がテストしている例では、動作しているかどうかを確認するためにグローバル変数を変更するだけですが、何らかの理由でサービスから結果が得られません。ServiceResponse結果は常にnullです(JAXB、KIE WorkbenchおよびKIE Server 6.5.0)

これは私が送っJAXB要求である:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<batch-execution lookup="kieSessionStateless"> 
    <insert disconnected="false" entry-point="DEFAULT" return-object="false" out-identifier="myorganization.myproject.bom.MyObject"> 
     <object xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="myObject"> 
      <myDescription>description</myDescription> 
      <myID>0</myID> 
     </object> 
    </insert> 
    <set-global out-identifier="globalList" identifier="globalList"> 
     <object xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaxbListWrapper"> 
      <type>LIST</type> 
     </object> 
    </set-global> 
    <get-objects out-identifier="globalList"/> 
    <fire-all-rules max="-1"/> 
</batch-execution> 

実行されたルールは非常に簡単です:

rule "MY FIRST RULE" 

    when 
     myorganization.myproject.bom.MyObject(myID == 0) 
    then 
     myorganization.myproject.bom.GlobalResponses globalResponses = new myorganization.myproject.bom.GlobalResponses(); 
     globalResponses.setRuleName("MY FIRST RULE"); 
     globalResponses.setRuleResponse("MY ID IS 0"); 
     globalList.add(globalResponses); 
     System.out.println("MY ID IS 0"); 

end 

そしてWildflyコンソールで、私は(追加情報なしで印刷された行を参照してくださいエラーのスタックトレースのように)、私はすべてがうまくいきます:

13:04:36,315 INFO [stdout] (default task-39) MY ID IS 0 

しかし、私はいつも同じ応答を得る:それは、 "プロセス"が正しく終了していることを示しているので(最初の視点であると思われる)、結果には何かがあることを期待しています(空のxml応答、 ...):

System.out.println("Message: "+response.getMsg()); 
System.out.println("Result: "+response.getResult()); 
System.out.println("Type: "+response.getType()); 

Message: Container KieContainer successfully called. 
Result: null 
Type: SUCCESS 
Response: ServiceResponse[SUCCESS, msg='Container KieContainer successfully called.'] 

クライアントがKieServicesClientと呼ばれる:

KieServicesConfiguration config = KieServicesFactory. 
       newRestConfiguration(urlKieServer, 
        name, 
        password); 
config.setMarshallingFormat(MarshallingFormat.JAXB); 
KieServicesClient client = KieServicesFactory.newKieServicesClient(config); 

JAXBContext jaxbContext = DroolsJaxbHelperProviderImpl.createDroolsJaxbContext(classNames, null); 
Marshaller marshaller = jaxbContext.createMarshaller(); 
StringWriter xml = new StringWriter(); 
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

marshaller.marshal(command, System.out); 
marshaller.marshal(command, xml); 

ServiceResponse<String> response = client.executeCommands("instances/"+containerName, xml.toString()); 

私が何かをしないのですが、私は本当に何を知りません。

すべての関連プロジェクトはGitHubです。 2つ以上のリンクを投稿することはできないので、コメントに直接リンクを追加します。

この質問は上にもある:私はライフサイクルを完了し、有効な要求を送信し、有効な回答を得ることができた Drools User group

+0

GitHubのWorkbenchプロジェクト:https://github.com/eggsandbutter/kieworkbench // GitHubのサービスプロジェクト:https://github.com/eggsandbutter/kieservices // GitHubのプロジェクトテスト:https:// github。 com/eggsandbutter/kietesting //このエラーをテストするには、TestStateless.testJaxBというテストを実行します – Ruurd

+0

私が遭遇する問題は、WorkbenchとKie実行サーバーを使用することです。私が単純なカスタムJavaアーキテクチャーを使用する場合、私はこの問題を何の問題もなく解決することができます。 – Ruurd

答えて

0

。私の問題の一部は、XMLを構築するために使用されたコードでした。有効なJAXBリクエストを構築する最も良い方法は、KIEが提供するAPIを使用することです。例は hereです。

一般的なクライアントプロジェクトを使用してKIE Server 6.5.0に接続することに関心があれば、my GitHubのコードを参照できます。

関連する問題