RuleTest1.java 10.7 KB
package com.bsth.service.schedule.rules;

import com.bsth.entity.sys.SysUser;
import com.bsth.repository.sys.SysUserRepository;
import com.bsth.service.schedule.BaseTest;
import com.vividsolutions.jts.util.Assert;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
import org.dbunit.operation.DatabaseOperation;
import org.junit.After;
import org.junit.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import javax.sql.DataSource;

public class RuleTest1 extends BaseTest {
    /** 日志记录器 */
    private static final Logger logger = LoggerFactory.getLogger(RuleTest1.class);

    @Autowired
    private DataSource dataSource;

    @Autowired
    private SysUserRepository sysUserRepository;

    /**
     * 初始化数据。
     */
    @Before
    public void initData() throws Exception {
        logger.info("载入数据......");

        // 获取数据库连接
        IDatabaseConnection iDatabaseConnection = new DatabaseConnection(dataSource.getConnection());
        // 获取Dbunit数据源
        Resource res = new ClassPathResource("testdata/d1.xml");
        FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
        flatXmlDataSetBuilder.setColumnSensing(false);
        flatXmlDataSetBuilder.setCaseSensitiveTableNames(false);
        IDataSet iDataSet = flatXmlDataSetBuilder.build(res.getInputStream());

        // 载入数据
        DatabaseOperation.CLEAN_INSERT.execute(iDatabaseConnection, iDataSet);
    }

    /**
     * 清除数据。
     */
    @After
    public void destoryData() throws Exception {
        logger.info("清除数据......");
        // 获取数据库连接
        IDatabaseConnection iDatabaseConnection = new DatabaseConnection(dataSource.getConnection());
        // 获取Dbunit数据源
        Resource res = new ClassPathResource("testdata/d1.xml");
        FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
        flatXmlDataSetBuilder.setColumnSensing(false);
        flatXmlDataSetBuilder.setCaseSensitiveTableNames(false);
        IDataSet iDataSet = flatXmlDataSetBuilder.build(res.getInputStream());

        // 清除数据
        DatabaseOperation.DELETE_ALL.execute(iDatabaseConnection, iDataSet);
    }

    @org.junit.Test
    public void t1() {
        logger.info("t1()测试......");
        SysUser sysUser = sysUserRepository.findOne(1);
        Assert.equals("admin", sysUser.getUserName());
    }
}

//
//
//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 com.bsth.service.schedule.rules.ttinfo.TTInfoCalcuParam_input;
//        import com.bsth.service.schedule.rules.ttinfo.TTInfoResults_output;
//        import com.bsth.service.schedule.rules.ttinfo.TTInfo_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.slf4j.Logger;
//        import org.slf4j.LoggerFactory;
//        import org.springframework.beans.factory.annotation.Autowired;
//        import org.springframework.boot.test.SpringApplicationConfiguration;
//        import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
//
//        import java.util.Arrays;
//
//@RunWith(SpringJUnit4ClassRunner.class)
//@SpringApplicationConfiguration(classes = {Application.class})
//public class DroolsRulesTest {
//
//    /** 日志记录器 */
//    private final static Logger logger = LoggerFactory.getLogger(DroolsRulesTest.class);
//
//    @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 ttinfoDrlTest() throws Exception {
//        logger.info("------------ttinfoDrlTest 测试---------------");
//
//        // 1、创建session,内部配置的是stateful
//        KieSession session = kieBase.newKieSession();
//
//        // 1.1 设置gloable对象,在drl中通过别人使用
//        session.setGlobal("log", logger);
//        TTInfoResults_output ttInfoResults_output = new TTInfoResults_output();
//        session.setGlobal("results", ttInfoResults_output);
//
//        // 1.2 可以设置一些监听器,再议
//
//        // 2、创建fact对象
//        TTInfoCalcuParam_input ttInfoCalcuParam_input = new TTInfoCalcuParam_input(
//                new DateTime(2016, 8, 1, 0, 0),
//                new DateTime(2016, 8, 10, 0, 0),
//                "1"
//        );
//
//
//        TTInfo_input ttInfo_input1 = new TTInfo_input();
//        ttInfo_input1.setTtInfoId("1");
//        ttInfo_input1.setXlId("1");
//        ttInfo_input1.setWeekdays(Arrays.asList(true, true, true, true, true, false, false));
//        ttInfo_input1.getSpecialDays().add(new DateTime(2016, 8, 1, 0, 0));
//        ttInfo_input1.setUpdateDate(new DateTime(2016, 1, 1, 0, 0));
//        ttInfo_input1.setIsEnable(true);
//        ttInfo_input1.setQyDate(new DateTime(2016, 1, 1, 0, 0));
//
//        TTInfo_input ttInfo_input1_2 = new TTInfo_input();
//        ttInfo_input1_2.setTtInfoId("2");
//        ttInfo_input1_2.setXlId("1");
//        ttInfo_input1_2.setWeekdays(Arrays.asList(true, false, false, false, false, true, false));
//        ttInfo_input1_2.getSpecialDays().add(new DateTime(2016, 8, 11, 0, 0));
//        ttInfo_input1_2.setUpdateDate(new DateTime(2015, 2, 1, 0, 0));
//        ttInfo_input1_2.setIsEnable(true);
//        ttInfo_input1_2.setQyDate(new DateTime(2016, 1, 1, 0, 0));
//
//
//        TTInfoCalcuParam_input ttInfoCalcuParam_inpu2 = new TTInfoCalcuParam_input(
//                new DateTime(2016, 8, 1, 0, 0),
//                new DateTime(2016, 8, 10, 0, 0),
//                "2"
//        );
//
//        TTInfo_input ttInfo_input2 = new TTInfo_input();
//        ttInfo_input2.setTtInfoId("2");
//        ttInfo_input2.setXlId("2");
//        ttInfo_input2.setWeekdays(Arrays.asList(true, false, false, false, false, true, false));
//        ttInfo_input2.getSpecialDays().add(new DateTime(2016, 8, 11, 0, 0));
//        ttInfo_input2.setUpdateDate(new DateTime(2016, 1, 1, 0, 0));
//        ttInfo_input2.setIsEnable(true);
//        ttInfo_input2.setQyDate(new DateTime(2016, 1, 1, 0, 0));
//
//        session.insert(ttInfoCalcuParam_input);
//        session.insert(ttInfo_input1);
//        session.insert(ttInfo_input1_2);
//        session.insert(ttInfoCalcuParam_inpu2);
//        session.insert(ttInfo_input2);
//
//
//
//        // 3、执行rule
//        session.fireAllRules();
//
//        // 4、执行完毕销毁,有日志的也要关闭
//        session.dispose();
//
//        // 打印global结果
//        logger.info(ttInfoResults_output.showTTInfoDesc1());
//
//    }
//
//    @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, 8, 1, 0, 0));
//        scheduleCalcuParam_input.setToDate(new DateTime(2016, 8, 10, 0, 0));
//
//        ScheduleRule_input scheduleRule_input1 = new ScheduleRule_input();
//        scheduleRule_input1.setRuleId("1");
//        scheduleRule_input1.setQyrq(new DateTime(2016, 7, 22, 0, 0));
//        scheduleRule_input1.getGuideboardIds().addAll(Arrays.asList(
//                "9", "9" , "8" ,"8" ,"7" ,"7" ,"6" ,"6", "5", "5", "4", "4", "3", "3", "2", "2", "1", "1"));
//        scheduleRule_input1.setStartGbdIndex(3);
//        scheduleRule_input1.getEmployeeConfigIds().addAll(Arrays.asList("1", "2"));
//        scheduleRule_input1.setStartEIndex(1);
//        scheduleRule_input1.setCarConfigId("1");
//
////        ScheduleRule_input scheduleRule_input2 = new ScheduleRule_input();
////        scheduleRule_input2.setRuleId(2L);
////        scheduleRule_input2.setQyrq(new DateTime(2016, 7, 22, 0, 0));
////        scheduleRule_input2.getGuideboardIds().addAll(Arrays.asList(
////                1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L,
////                11L, 11L, 12L, 12L, 13L, 13L));
////        scheduleRule_input2.setStartGbdIndex(7);
////        scheduleRule_input2.getEmployeeConfigIds().addAll(Arrays.asList(11L, 12L));
////        scheduleRule_input2.setStartEIndex(1);
////        scheduleRule_input2.setCarConfigId(2L);
//
//        session.insert(scheduleCalcuParam_input);
//        session.insert(scheduleRule_input1);
////        session.insert(scheduleRule_input2);
//
//
//        // 3、执行rule
//        session.fireAllRules();
//
//        // 4、执行完毕销毁,有日志的也要关闭
//        session.dispose();
//
//        System.out.println(scheduleResults_output.showGuideboardDesc1());
//
//    }
//}