DroolsRulesTest.java 3.32 KB
package com.bsth.service.schedule.rules;

import com.bsth.Application;
import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input;
import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;
import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;
import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.api.KieBase;
import org.kie.api.runtime.KieSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

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

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {Application.class})
public class DroolsRulesTest {

    @Autowired
    private KieBase kieBase;

    @Test
    public void helloWorldDrlTest() throws Exception {
        // 1、创建session,内部配置的是stateful
        KieSession session = kieBase.newKieSession();

        // 1.1 设置gloable对象,在drl中通过别名使用
        List<String> gloableList = new ArrayList<String>();
        session.setGlobal("list", gloableList);

        // 1.2 可以设置一些监听器,再议

        // 2、创建fact对象
        Message message = new Message();
        message.setMessage("Hello World");
        message.setStatus(Message.HELLO);
        session.insert(message);

        // 3、执行rule
        session.fireAllRules();

        System.out.println(gloableList);

        // 4、执行完毕销毁,有日志的也要关闭
        session.dispose();
    }

    @Test
    public void shiftloopDrlTest() throws Exception {
        // 1、创建session,内部配置的是stateful
        KieSession session = kieBase.newKieSession();

        // 1.1 设置gloable对象,在drl中通过别名使用
        ScheduleResults_output scheduleResults_output = new ScheduleResults_output();
        session.setGlobal("scheduleResult", scheduleResults_output);

        // 1.2 可以设置一些监听器,再议

        // 2、创建fact对象

        ScheduleCalcuParam_input scheduleCalcuParam_input = new ScheduleCalcuParam_input();
        scheduleCalcuParam_input.setFromDate(new DateTime(2016, 1, 1, 0, 0));
        scheduleCalcuParam_input.setToDate(new DateTime(2016, 1, 17, 0, 0));
        scheduleCalcuParam_input.setTtinfoId(1L);

        ScheduleRule_input scheduleRule_input1 = new ScheduleRule_input();
        scheduleRule_input1.setRuleId(1L);
        scheduleRule_input1.setQyrq(new DateTime(2015, 12, 21, 0, 0));
        scheduleRule_input1.getGuideboardIds().addAll(Arrays.asList(1L, 2L, 3L, 4L));
        scheduleRule_input1.setStartGbdIndex(2);
        scheduleRule_input1.getEmployeeConfigIds().addAll(Arrays.asList(1L, 2L));
        scheduleRule_input1.setStartEIndex(0);
        scheduleRule_input1.setCarConfigId(1L);

        session.insert(scheduleCalcuParam_input);
        session.insert(scheduleRule_input1);


        // 3、执行rule
        session.fireAllRules();

        // 4、执行完毕销毁,有日志的也要关闭
        session.dispose();

        System.out.println(scheduleResults_output.showGuideboardDesc1());

    }
}