I will rethink of POJO but i think, it will be more ennoying to
update any change. I will need a reference to these maps in almost
every case in the THEN clause so not a big problem finally.
It's up to you. With a POJO you can implement Comparable using your
time slots, and all other common behaviour that you will need later
... and don't be forced to set a tricky DSL ... and have
validation/compilation telling you that you are using a non-existent
field instead of getting NPE at runtime ... but it's up to you :)
For the second question :
In fact i have to make rules using these Enum and DSL and put
rules in their specific files.
For example now i am working with 4 different drl files :
Files ?
According to your DSL questions, I guess that you are working with
Guvnor, so you are getting your file via the package URL for the
generated DRL file ?
You should create compiled package, because :
- rules are compiled so the KB loading is faster
- Guvnor (since 5.1) ca generate compiled package with only a
subset of the rules, filtering them by category and/or status (or by
a custom selection using rules :) ).
But if you can't,or don't want to create binaries, and still want to
store all rules inthe same package (to avoid duplicating DSL and
enums), may be you can
- assign your rules a 'ruleflow-group' and create a ruleflow that
branch on the suitable group.
- use 'agenda-group'.
- With no rule flow, you can add to all your rules a condition
that match a fact telling which group is executing
rule r1
when
Exec(task == "task1")
$m1 : ...
then
...
end
It depends on how you group your rules in files.
These
files have to have this specific name and the name cannot change
because the java code use this name to load the drl file in the
session.
You can also access compiled binary package by a snapshot name.
Or if you have one single set of rules, create a single KB and
provide methods that create new session ans add the specific control
fact (not sure of the exact syntax, just to show the idea) :
task1() {
session = getKb().newStatelessSession();
session.insert(new Exec("task1")
...
session.execute(...)
}
task2() {
session = getKb().newStatelessSession();
session.insert(new Exec("task2")
...
session.execute(...)
}
and you can obviously make that generic ...
To put each rule in its specific file, do i have to create a
package per file and name the package with the name of the file i
want? And copy Enum and DSL in each package or can i put this in
global?
Don't know if global can contains Enum and DSL. I think it can only
contain rules
To use the Test Scenario, do you know if we have to do special
things? I tried to add Maps in the Given part and run the scenario
but i get an error ; "unable to find constructor for
java.util.Map" and the same if i put a boolean, string... Is the
Guvnor Test Scenario not able to find java class and how to make
it reachable?
I have already tried Test Scenario with adding object for which i
gave a Pojo but never with basic java type.
Don't known, sorry.