DroolsRulesTest.java
4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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, 8, 1, 0, 0));
scheduleCalcuParam_input.setToDate(new DateTime(2016, 8, 2, 0, 0));
scheduleCalcuParam_input.setTtinfoId(1L);
ScheduleRule_input scheduleRule_input1 = new ScheduleRule_input();
scheduleRule_input1.setRuleId(1L);
scheduleRule_input1.setQyrq(new DateTime(2016, 7, 22, 0, 0));
scheduleRule_input1.getGuideboardIds().addAll(Arrays.asList(
9L, 9L , 8L ,8L ,7L ,7L ,6L ,6L, 5L, 5L, 4L, 4L, 3L, 3L, 2L, 2L, 1L, 1L));
scheduleRule_input1.setStartGbdIndex(3);
scheduleRule_input1.getEmployeeConfigIds().addAll(Arrays.asList(1L, 2L));
scheduleRule_input1.setStartEIndex(1);
scheduleRule_input1.setCarConfigId(1L);
// 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());
}
}