ステータスなしkiesession使用


目次
  • 1、ルール作成
  • 2、kmodule配置
  • 3、業務ロジック
  • 4、効果表示
  • 1、ルール作成
    resourcesディレクトリの下で、com/stateless/の2階層ディレクトリを作成し、testStateless.drlルールファイルを新規作成し、月収と受信可能額ルールの関係を構成します.
    package com.stateless;
    import com.example.droolsdemo.model.Borrower
    import java.math.BigDecimal
    
    //    [0.5-1) ,   2 
    rule "testBorrower02"
        when
            $b:Borrower($b.getIncome() >= 5000.00 && $b.getIncome() <10000.00)
        then
            $b.setCreditLine(new BigDecimal(20000.00));
    end
    

    2、kmodule配置
    新しいkbasetypestateless無状態属性に設定されました
    	<kbase name="stateless" packages="com.stateless">
            <ksession name="stateless-rules" type="stateless" />
        </kbase>
    

    3、業務ロジック
    ステータスレスセッションStatelessKieSessionを使用して、execute()実行方法を呼び出せばよい.ステータスレスセッションはdispose()を呼び出してセッションを閉じる必要はありません.ルール・エンジンとのインタラクションを分離し、セッションのステータスを維持することはありません.一般的には、データの検証とフィルタリング、計算、メッセージ・ルーティングなどのシーンで使用されます.
    /**
    	  * @Author pandafox
    	  * @Desctription    session
    	  * @Date 2020/7/5 18:09
    	  * @Param []
    	  * @return
    	  */
    	@Test
    	public void testBorrower01Stateless() {
    		//   kie  
    		KieServices kieServices = KieServices.get();
    		KieContainer kieContainer = kieServices.getKieClasspathContainer();
    
    		//    stateless-rules 【   】kie  (    kmodule.xml   )
    		StatelessKieSession statelessKieSession = kieContainer.newStatelessKieSession("stateless-rules");
    
    		//         ,      8 
    		Borrower borrower = new Borrower();
    		borrower.setName("  ");
    		borrower.setIncome(new BigDecimal(8000.00));
    
    		//【   】kie  execute()    ,            
    		statelessKieSession.execute(borrower);
    
    		//    
    		System.out.println(borrower.getName() + "     [" + borrower.getCreditLine() + "] ");
    	}
    

    4、効果の表示
           [20000]