Drools 6.2.0 workbench编辑来自drl规则的jbpm变量

时间:2015-06-05 01:27:33

标签: drools jbpm business-rules kie-wb

我尝试将我的流程变量放入业务规则任务并在此任务中更改此变量,但值保持不变。我究竟做错了什么?过程是在kie workbench中开发的,不使用eclipse。

我的变量在规则触发之前在脚本任务中初始化,如

kcontext.setVariable("triggers",new   com.embeddedwireless.healthdesk.InitialTriggers(false,false,false,false));
kcontext.setVariable("answers",new   com.embeddedwireless.healthdesk.InitialAnswers("not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","twice","not"));

规则看起来像

   package com.embeddedwireless.healthdesk;

    import com.embeddedwireless.healthdesk.InitialAnswers
    import com.embeddedwireless.healthdesk.InitialTriggers



rule "BehavioralHealth" ruleflow-group "InitialCheck"
no-loop
lock-on-active     
salience 1
        when
            answers : InitialAnswers( q9a in ( "always", "most", "some" ) || q10a in ( "always", "most", "some" ) || q12a in ( "always", "most", "some" ) )
        triggers_out : InitialTriggers()
     then
        System.out.println("Beh!!!!");
            triggers_out.setBehavioral( true );
           update( triggers_out );

end

rule "OccupationalRule" ruleflow-group "InitialCheck"
no-loop
lock-on-active   
salience 2 
        when
            answers : InitialAnswers( q3a in ( "some", "rare", "not" ) || q3b in ( "some", "rare", "not" ) || q4a in ( "some", "rare", "not" ) || q7b in ( "always", "most", "some" ) )
        triggers_out :  InitialTriggers()
        then

          System.out.println("Occupation!!!!");
                triggers_out.setOccupational( true );
              update( triggers_out );

    end

    rule "PhysicalRule" ruleflow-group "InitialCheck"
    no-loop
      lock-on-active
    salience 3
        when
            answers : InitialAnswers( q1a in ( "some", "rare", "not" ) || q1b in ( "some", "rare", "not" ) || q2a in ( "some", "rare", "not" ) || q2b in ( "some", "rare", "not" ) || q11a in ( "always", "most", "some" ) || q11b in ( "once", "twice", "more", "often" ) )
        triggers_out:InitialTriggers()
        then
        System.out.println("Phys!!!!");
            triggers_out.setPhysical( true );
            update( triggers_out );

    end

    rule "Speech Rule" ruleflow-group "InitialCheck"
        no-loop
       lock-on-active
    salience 4
        when
            answers : InitialAnswers( q7a in ( "always", "most", "some" ) )
        triggers_out : InitialTriggers()
        then
             System.out.println("Speech!!!!");
            triggers_out.setSpeech( true );
            update( triggers_out );

    end 

我等待触发变量被更改,但它仍然像

InitialTriggers{physical=false, occupational=false, speech=false, behavioral=false}

数据分配正常,tomcat日志包含“Phys !!!!”等调试消息。 我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

嗯,一切都很好。我查看变量历史记录并且看不到变化。 kie-wb有一个问题。我的变量发生了变化,但是在kie-wb中显示了旧值。