-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample3.js
112 lines (103 loc) · 3.24 KB
/
example3.js
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
107
108
109
110
111
112
'use strict';
/**
* Example from "Periodic rules"
* A simple case - one pass period
*/
// const {StugnaES} = require("stugna-es"); // for standalone run
const {StugnaES} = require("../stugna-es"); // for local run
let options = {
toSaveEvents: true,
passCountMax: 2
};
let es = new StugnaES(options);
let facts = [
{
name: "season",
value: "winter",
description: "Initial value of season fact"
}
];
es.factsImport(facts, false);
let rules = [
{
condition: "season = 'winter'",
factName: "season",
factValue: "spring",
description: "After winter comes spring"
},
{
condition: "season = 'spring'",
factName: "season",
factValue: "summer",
description: "After spring comes summer"
},
{
condition: "season = 'summer'",
factName: "season",
factValue: "autumn",
description: "After summer comes autumn"
},
{
condition: "season = 'autumn'",
factName: "season",
factValue: "winter",
description: "After autumn comes winter"
},
];
let isTrigger = true;
es.rulesImport(rules, isTrigger);
let ordered = es.factsAreOrdered();
console.log (ordered);
let events = es.eventsAll();
console.log (events);
facts = es.factsAllAsArray();
console.log (facts);
/*
false
[
{ brief: 'fact add', subject: 'Initial value of season fact' },
{ brief: 'rule add', subject: 'After winter comes spring' },
{ brief: 'rule add', subject: 'After spring comes summer' },
{ brief: 'rule add', subject: 'After summer comes autumn' },
{ brief: 'rule add', subject: 'After autumn comes winter' },
{ brief: 'rule ok', subject: 'After winter comes spring' },
{ brief: 'rules passed', more: 'Rules pass count is 1' },
{ brief: 'rule ok', subject: 'After spring comes summer' },
{ brief: 'rules passed', more: 'Rules pass count is 2' },
{ brief: 'rule ok', subject: 'After summer comes autumn' },
{ brief: 'rules passed', more: 'Rules pass count is 3' },
{ brief: 'rule ok', subject: 'After autumn comes winter' },
{ brief: 'rule ok', subject: 'After winter comes spring' },
{ brief: 'rules passed', more: 'Rules pass count is 4' },
{ brief: 'rule ok', subject: 'After spring comes summer' },
{ brief: 'rules passed', more: 'Rules pass count is 5' },
{ brief: 'rule ok', subject: 'After summer comes autumn' },
{ brief: 'rules passed', more: 'Rules pass count is 6' },
{ brief: 'rule ok', subject: 'After autumn comes winter' },
{ brief: 'rule ok', subject: 'After winter comes spring' },
{ brief: 'rules passed', more: 'Rules pass count is 7' },
{ brief: 'rule ok', subject: 'After spring comes summer' },
{ brief: 'rules passed', more: 'Rules pass count is 8' },
{ brief: 'rules error', more: 'Periodic rules detected' }
]
[
{
name: 'season',
value: 'summer',
history: [
'Initial value of season fact',
'rule ok: After winter comes spring',
'rule ok: After spring comes summer',
'rule ok: After summer comes autumn',
'rule ok: After autumn comes winter',
'rule ok: After winter comes spring',
'rule ok: After spring comes summer',
'rule ok: After summer comes autumn',
'rule ok: After autumn comes winter',
'rule ok: After winter comes spring',
'rule ok: After spring comes summer'
],
changed: true
}
]
*/