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.
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users