zoukankan      html  css  js  c++  java
  • Drools 使用Spring中的bean

    在某些场合,Drools规则的执行过程中有时不可避免要和外部的类发生交互,例如从外部读取数据或者触发外部的事件。绝大多数应用中Spring会承担起Dependency Inject容器的功能。要如何把一个Spring中的Bean注入到规则Drools的规则引擎中呢?下面这段代码是通过以Drools规则全局变量的形式把Spring bean注入到KnowledgeSession中,然后再Drools的规则文件中加以调用。

    这段Drl规则文件申明并引用了global变量

    package com.acme.app.rules
    import com.acme.app.form.ApplicationForm
    import com.acme.app.model.Applicant
    import com.acme.app.validation.Errors
    import com.acme.app.dao.ApplicantDao
    global ApplicantDao applicantDao
    rule "Check applicant age"
    when
        $a : ApplicationForm()
        $errors : Errors()
        $applicant:Applicant( age < 18 ) from applicantDao.findApplicant($a.getApplicantId())
    then
        $errors.addError( $a, "applicantId", "Applicant age < 18" );
    end

    下面这段java代码是在初始化KnowledgeSession的过程中,把Spring中的Bean设置成global变量

    StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
     ksession.setGlobal("applicantDao", applicantDao);

    Spring中配置bean

    <bean id="applicantDao" class="com.acme.app.dao.impl.ApplicantDaoImpl"></bean>
    </beans>
  • 相关阅读:
    Apache中Cookie长度的设置 414 request-uri too large apache
    URL中文参数,JSON转换,PHP赋值JS
    PHP通过JSON给JS赋值;JS通过JSON给PHP传值
    PHP限制上传文件大小
    PHP 类中使用全局变量和全局常量
    利用span设置文字固定宽度
    Linux用户管理
    DropZone(文件上传插件)
    rest_framework基础
    RESTful规范
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2856146.html
Copyright © 2011-2022 走看看