2016-04-05 9 views
0

Droolsのドキュメントから次のコードを参照して、Kie-serverのファクトを変更しています。kie-serverのファクトを変更する際の問題

1 BatchExecutionCommand command = new BatchExecutionCommand(); 
2 command.setLookup("ksession1"); 
3 ModifyCommand modifyCommand = new ModifyCommand(); 
4 modifyCommand.setFactHandleFromString("123:234:345:456:567"); 
5 List<Setter> setters = new ArrayList<Setter>(); 
6 setters.add(new SetterImpl("age", "30")); 
7 modifyCommand.setSetters(setters); 
8 command.getCommands().add(modifyCommand); 

6行目では、文字列ではなくオブジェクトに属性を設定したいと考えています。例えば、

6 setters.add(new SetterImpl("id", UUID.randomUUID()); 

しかし、SetterImpl(文字列アクセサ、文字列値)APIは、文字列パラメータを受け付けます。

Stringの代わりにオブジェクトをKie-serverに送るために使用できるSetterImplの実装はありますか?

Public class Test{ 
    UUID id; 

    public UUID getId(){ 
     return id; 
    } 

    public void setId(UUID id){ 
     this.id = id; 
    } 

} 

答えて

0

あなたにMVEL式を使用してみてください、私はオブジェクトがコンテナ内のJavaモデルは、例えば、タイプの非プリミティブな属性が含まれていることです送信したい理由、セッターの価値。 ModifyCommandのコードは、実装されているかのように見えます。したがって、おそらく:

6 setters.add(new SetterImpl("id", "UUID.randomUUID()"); 

これはセッションのコンテキストで評価されます。 DRLでUUIDをインポートするか、完全なクラス名を使用する必要があります。

(私はこれのいずれかを試したことがありません、年のためのコマンド・インタフェースを使用していない。私は、ソースコードを読んだ。)

+0

ラウン、あなたの提案は動作しません!問題は、Drools-CoreエンジンのModifyCommandクラス内のgetMvelExpr()関数が常にパラメータをStringに変換することです。あなたの提案に対して、エンジンは単に引用符を削除し、キーストリングで値を追加します。 – APatel

関連する問題