How to add generated rules (from templates) to a KB on the fly?
by Shinsekai
Hi,
I use Drools (6.0.0) with KIE-api and I have a method to generate drl rules
from templates+hashmaps. These rules are stored in a List<String>.
Now, I would to pack up these generated rules and make them available to a
preexistant KieSession.
Thus, a KieSession could access to standard KieBases (with rules stored in
resource directories) AND to these generated rules (stored in an object, in
memory).
Is it possible to do that?
I precise I don't want to use org.drools.internal.* classes.
Regards,
Alexandre
--
View this message in context: http://drools.46999.n3.nabble.com/How-to-add-generated-rules-from-templat...
Sent from the Drools: User forum mailing list archive at Nabble.com.
11 years, 11 months
KnowledgeAgent fallback FROM local cache?
by dunnlow
I am using drools 5.5 with Guvnor and the Integration Server. My integration
server uses a knowledgeagent that pulls the package from guvnor and I have
set the drools.resource.urlcache for a local cache in case Guvnor is
unavailable.
If Guvnor is available at startup, the KAgent sees any deployed changes to
my package from then on. If guvnor is NOT available, the local cache is
used and everything works fine UNTIL I make a change to Guvnor. The KAgent
seems to never fall back to checking for Guvnor's availability.
I'd like the KnowledgeAgent to use the local cache until Guvnor is available
again. Is there an (existing) way to make this happen?
If not, any thought about implementing a solution?
Thanks,
- J
--
View this message in context: http://drools.46999.n3.nabble.com/KnowledgeAgent-fallback-FROM-local-cach...
Sent from the Drools: User forum mailing list archive at Nabble.com.
11 years, 11 months
Can When part of DRL contains simple logics?
by wtang
I have the following code to set a Calendar object at Jan-1-2013 and roll it
3 days to 1-4-2013 and test to see if it is less then the current date.
This in all done inside the THEN part of a DRL rule
then
Calendar c = Calendar.getInstance();
c.set(2013, 1, 1);
c.roll(3, true);
if (c.getTime().before(new Date())) {
System.out.println("successfully rolled 3 days ahead");
}
How to you do this in the WHEN part of a DRL rule?
--
View this message in context: http://drools.46999.n3.nabble.com/Can-When-part-of-DRL-contains-simple-lo...
Sent from the Drools: User forum mailing list archive at Nabble.com.
11 years, 11 months
Problem with declare event
by Demian Calcaprina
Hey Guys, I am having a drools compilation error when declaring an error.
I tried to isolate this as much as possible.
https://github.com/droolsjbpm/drools/blob/master/drools-compiler/src/test...
I just added after the given line, this:
header = header + " declare Message\n "+
" @role(event) \n " +
" end \n ";
And I get this exception:
java.lang.NullPointerException
at java.io.FilterOutputStream.write(FilterOutputStream.java:97)
at
org.drools.compiler.compiler.io.memory.MemoryFileSystem.writeJarEntries(MemoryFileSystem.java:437)
at
org.drools.compiler.compiler.io.memory.MemoryFileSystem.writeJarEntries(MemoryFileSystem.java:430)
at
org.drools.compiler.compiler.io.memory.MemoryFileSystem.writeJarEntries(MemoryFileSystem.java:430)
at
org.drools.compiler.compiler.io.memory.MemoryFileSystem.writeJarEntries(MemoryFileSystem.java:430)
at
org.drools.compiler.compiler.io.memory.MemoryFileSystem.zip(MemoryFileSystem.java:387)
at
org.drools.compiler.compiler.io.memory.MemoryFileSystem.writeAsBytes(MemoryFileSystem.java:365)
at
org.drools.compiler.kie.builder.impl.MemoryKieModule.getBytes(MemoryKieModule.java:64)
at
org.drools.compiler.CommonTestMethodBase.createKJar(CommonTestMethodBase.java:421)
at
org.drools.compiler.integrationtests.IncrementalCompilationTest.createAndDeployJar(IncrementalCompilationTest.java:205)
at
org.drools.compiler.integrationtests.IncrementalCompilationTest.testLoadOrderAfterRuleRemoval(IncrementalCompilationTest.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Any idea on how to declare an event on the drl?
Thanks!
Demian
11 years, 11 months
Rules confilct and resulution strategy
by bobby nick
I am using Drools 5.5 and I have two drl files, i.e. Sample.drl, Sample1.drl, with four rules, two
sets of duplicate rules. When I assert facts, rules from Sample1.drl
file is getting fired. I assume in this situation rules are in conflict, therefore rules engine using rules resolution strategy firing rules
loaded last to knowledge base. But I don't find any documentation
indicating what leads to conflict in rules.
If anyone in mailing list has experienced
similar issue, appreciate if you could share.
Thanks,Amit
11 years, 11 months
Process' RulesetNode and SplitNode working memory
by kenhelmes
Hello,
I am working on proof-of-concept with the Process API. A small cutout of
code shows an example process:
startnode->actionnode->rulesetnode-splitnode(gateway). The process flow
starts and runs normally.
However, the splitnode constraint does not seem to use the working memory of
the rulesetnode and never finds a rule hit. Does the splitnode constraint
rule generated by drools, use the same working memory as the rulesetnodes?
If a rulesetnode has one ruleflow-group, is there a way to put the splitnode
constraint rule into the same ruleflow-group?
// Nodes
.startNode(1)
.name("Start")
.done()
.actionNode(2)
.name("Action")
.action("java", "System.out.println(\"Starting process\");")
.done()
.ruleSetNode(3)
.name("City is in list")
.ruleFlowGroup("CityRules")
.done()
// Gateway
.splitNode(11)
.name("Split 11")
.type(Split.TYPE_XOR)
.constraint(4, "yes", "rule", "mvel",
"City(name == \"Copenhagen\")")
.constraint(92, "no", "rule", "mvel",
"not City(name == \"Copenhagen\")")
.done()
--
View this message in context: http://drools.46999.n3.nabble.com/Process-RulesetNode-and-SplitNode-worki...
Sent from the Drools: User forum mailing list archive at Nabble.com.
11 years, 11 months