【问题标题】:Drools : How to get String in List<String>Drools:如何在 List<String> 中获取字符串
【发布时间】:2014-04-02 07:31:45
【问题描述】:

我想在 List 中获取 String 但没有成功。

Drools 规则

import schedule.Schedule
import schedule.Control_Exam_List

rule "People"
    salience 5
    when
        $controlExamList : Control_Exam_List( ) from accumulate( $scheduleCheck : Schedule( $scheduleCECheck1 : control1 , $scheduleCECheck2 : control2 , $scheduleCECheck3 : control3 ) ,
                              init( Control_Exam_List CEL = new Control_Exam_List(); ),
                              action( CEL.addData($scheduleCECheck1); CEL.addData($scheduleCECheck2); CEL.addData($scheduleCECheck3); ),
                              result( CEL ) )
    then
        System.out.println("Test1: "+$controlExamList);
end

结果返回列表,但我从该列表中获取所有字符串。

结果:静止列表

Test1: schedule.Control_Exam_List@22916a

Control_Exam_List 类:列表

import java.util.ArrayList;
import java.util.List;

public class Control_Exam_List {
    private List<String> code = new ArrayList<String>();

    public void addData(String code){
        if(this.code.contains(code) != true && !code.equals(""))
            this.code.add(code); 
    }

    public List<String> getCode() {
        return code;
    }
}

调度类:从这个类中累积

public class Schedule {

    private String control1 = "", control2 = "", control3 = "";

    public String getControl1() {
        return control1;
    }

    public String getControl2() {
        return control2;
    }

    public String getControl3() {
        return control3;
    }

    public void setControlExam1(String ce_code) {
        this.control1 = ce_code;
    }

    public void setControlExam2(String ce_code) {
        this.control2 = ce_code;
    }

    public void setControlExam3(String ce_code) {
        this.control3 = ce_code;
    }
}

【问题讨论】:

    标签: string list drools


    【解决方案1】:

    这几乎就像你在 Java 中所做的那样,$controlExamList 被绑定到 Control_Exam_List 对象;不过,在 Drools 中,您可能需要转换:

    then
      for( Object obj: $controlExamList.getCode() ){
        System.out.println( (String)obj );
      }
    end
    

    不过你也可以试试:

    then
      for( String str: $controlExamList.getCode() ){
        System.out.println( str );
      }
    end
    

    【讨论】:

    • 可以在drools中比较Array String和String吗?
    • 运算符 contains 用于检查 Collection 或数组的字段是否包含指定的值。请参阅 Drools“专家”手册。
    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2014-01-24
    • 2022-07-31
    • 1970-01-01
    • 2012-04-06
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多