Decision table and DSL
by philippe rouxel
Hi,
I post this, but got no echo:
My project is multi-national: the business model is in English, but
some rules depend on the user's country (fr, de).
This rules have to be edited in the locale language.
For editing a rule, the guided rule editor and a DSL are fine.
But for a decision table, I did not find a way to use a DSL.
So, what is the best strategy:
+ use a template for each DT and loose the benefits of sharing the translation.
+ use an expander for each DT that parse a DSL and translate the terms.
Or may be an other solution?
Regards,
Philippe
14 years, 5 months
April 19th Drools Meeting 2 day medical/healthcare exclusive, 3 day general topics
by Mark Proctor
http://blog.athico.com/2010/03/april-19th-drools-meeting-2-day.html
------
April 19th Drools Meeting 2 day medical/healthcare exclusive, 3
day general topics
<http://blog.athico.com/2010/03/april-19th-drools-meeting-2-day.html>
Posted by Mark Proctor
Logistics
What: Week long meeting, with 2 day medical/healthcare exclusive, 1 day
open to all with medical slant, 2 day open to all all general topics.
Where: 10210 Campus Point Drive, San Diego, CA 92121-1598 (SAIC
Corporation Headquarters)
When: Monday the 19th of April to Friday the 23rd of April
Previous Boot Camps: San Francisco June 2009
Registration:
http://community.jboss.org/wiki/DroolsBootCampSanDiegoApril2010
The boot camp is free, you only need to turn up, but please register
here, http://community.jboss.org/wiki/DroolsBootCampSanDiegoApril2010.
This page also is a live and more informed version of the information
contained here - please read it thoroughly.
Who Should Attend: See the registration page above for more detailed
information.
Overview
Mon-Tue (medical only)
The the first two days are exclusive to the medical and healthcare
communities and only people from medical and healthcare organisations or
with a medical background will be allowed to attend.
Wed (medical slant - open to all)
Keynote - James Taylor (Smart Enough Systems) "Smarter systems for
uncertain times".
The third day will still maintain a medical slant, wrapping up the last
two days, but we will open it up for those that want to observe or
participate. We will try and cover topics that will be interesting to
all there, even if not from medical background, just be aware that
medical discussions take priority. It is recommended that most people
start on the Wednesday, especially as we have an excellent keynote
speaker for everyone.
Thu-Fri (general topics - open to all)
The last two days is open to all and will hvae no specific topic. It is
likely we'll repeat a few talks from mon-tue that are relevant to new
comers.
Agenda
Other than the Wednesday keynote with James Taylor, we do not yet have
dates and times allocated for talks, as we are still waiting for all
talks to be proposed. So if you are thinking of talking, hurry up and
let us know :) (see registration page for more info). The registration
page will be kept up to date with talks, and contains information and
ideas on talks we'd like people to give; basically anything you think
people attending will be interested in - it does not have to be drools
specific. The current proposed talks are:
*Name* *Talk*
James Taylor (Smart Enough Systems
<http://www.smartenoughsystems.com/>) *Wed 9am Key Note :* Smarter
systems for uncertain times
Mark Proctor (JBoss) Intro to Drools 5
Mark Proctor (JBoss) Rule Authoring Techniques
Mark Proctor (JBoss) Spring, Camel and OSGi integration
Kris Verlaenen (JBoss)
Building Domain Specific Workflows for Clinical Decision Support
Kris Verlaenen (JBoss) Dynamic Fragments for Non-Linear Execution of
Adaptive Processes
Edson Tirelli (JBoss) Applying Complex Event Processing
Davide Sottara (University of Bologna) Hybrid Ontologies
Davide Sottara (University of Bologna) Enhancing Rules with Uncertainty
and Vagueness
Ken Kawamoto (Duke University) Clinical Decision Support with HL7 and
Drools
14 years, 5 months
Re: [rules-dev] [rules-users] April 19th Boot Camp to be open to all
by Mauricio Salatino
Yes, I think yes.. It's free, so is for everyone right?
2010/3/16 chris richmond <richmond.cd(a)gmail.com>
> is this boot camp still open to students?
>
> Chris
>
> 2010/3/15 David Sinclair <dsinclair(a)chariotsolutions.com>
>
> Need to come to the east coast some time!
>>
>> 2010/3/15 Mark Proctor <mproctor(a)codehaus.org>
>>
>>>
>>> http://blog.athico.com/2010/03/april-19th-boot-camp-to-be-open-to-all.html
>>>
>>> We will now be opening the boot camp up to all, for the last 3 days. The
>>> boot camp was previously announced here<http://blog.athico.com/2010/03/drools-open-source-healthcare.html>.
>>> The over all schedule is below. I'll be putting up a registration wiki page
>>> up on line in the next day or two, like last years which you can fine
>>> here<http://community.jboss.org/wiki/DroolsBootCampSanFranciscoJune2009>.
>>> Keep an eye on the blog for more info soon.
>>>
>>> We are looking for people that would like to present, take a focus group
>>> or workshop. The topics can be on drools, or how drools is applied, or on
>>> projects that use drools, or just general interesting topics for rules,
>>> workflow, event processing and ontologies - anything you think the people
>>> there would be interested in. Email me if you would like to present
>>>
>>> *Where *- San Diego, CA (meeting place tbc)*
>>> Date *- Monday the 19th of April to Friday the 23rd of April
>>>
>>> Schedule
>>>
>>> - *Mon-Tue* (medical only) The the first two days are exclusive to
>>> the medical community and only people from medical organisations or with a
>>> medical background will be allowed to attend.
>>> - *Wed* (medical focus - open to all) The third day will still
>>> maintain a medical theme, wrapping up the last two days, but we will open it
>>> up for those that want to observe or participate. We will try and cover
>>> topics that will be interesting to all there, even if not from medical
>>> background, just be aware that medical discussions take priority.
>>> - *Thu-Fri* (general topics - open to all) The last two days is open
>>> to all and will have no specific topic
>>>
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users(a)lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
- http://salaboy.wordpress.com
- http://www.jbug.com.ar
- Salatino "Salaboy" Mauricio -
14 years, 5 months
April 19th Boot Camp to be open to all
by Mark Proctor
http://blog.athico.com/2010/03/april-19th-boot-camp-to-be-open-to-all.html
We will now be opening the boot camp up to all, for the last 3 days. The
boot camp was previously announced here
<http://blog.athico.com/2010/03/drools-open-source-healthcare.html>. The
over all schedule is below. I'll be putting up a registration wiki page
up on line in the next day or two, like last years which you can fine
here
<http://community.jboss.org/wiki/DroolsBootCampSanFranciscoJune2009>.
Keep an eye on the blog for more info soon.
We are looking for people that would like to present, take a focus group
or workshop. The topics can be on drools, or how drools is applied, or
on projects that use drools, or just general interesting topics for
rules, workflow, event processing and ontologies - anything you think
the people there would be interested in. Email me if you would like to
present
*Where *- San Diego, CA (meeting place tbc)*
Date *- Monday the 19th of April to Friday the 23rd of April
Schedule
* *Mon-Tue* (medical only) The the first two days are exclusive to
the medical community and only people from medical organisations
or with a medical background will be allowed to attend.
* *Wed* (medical focus - open to all) The third day will still
maintain a medical theme, wrapping up the last two days, but we
will open it up for those that want to observe or participate. We
will try and cover topics that will be interesting to all there,
even if not from medical background, just be aware that medical
discussions take priority.
* *Thu-Fri* (general topics - open to all) The last two days is open
to all and will have no specific topic
14 years, 6 months
memory issue (memory leak?) on trunk (probably due true modify changes)
by Geoffrey De Smet
Hi guys,
With great improvements usually come instability for a while :)
Trunk has memory issue, probably a memory leak of a small object.
I've run ExmaminationBenchmarkApp with the program arg "short" 3 times
with the exact same configuration (it is a 100% reproducible run):
1) Before the true modify changes with 512m max memory
Succeeds (100 steps but even 10000 steps work) with no slow down.
2) After true modify changes with 512m max memory
Fails after 27 steps, starts slowing down at 24 steps.
3) After true modify changes with 1024m max memory
Fails after 57 steps, starts slowing down at 54 steps.
Both 2) and 3) fail with the exception:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit
exceeded
So it's not a heap space error or a perm space error, but a GC overhead
limit instead. Literally this means it's doing more GC then running,
but 99% of the time this means that the heap is so full that the GC has
little or no free space to work with.
This kind of memory leak happens when the iteration make 101 objects but
only removes 100 objects and the iteration is run a lot (like 10000+ times).
You don't get a heap space error, because before that happens,
there is point where you have a garbaged collected free memory for 10
objects and a ungarbaged collected free memory for 100 objects. At that
point the GC is running over 98% of the time, which is a VM treshold and
the error is thrown,
even though 10 iterations later you would get a heap space error.
Logs:
1)
TODO
2)
2010-03-13 09:28:36,973 [main] INFO Step index (21), time spend (37245)
taking step (323 {D180|S9} @ 9 {D210} + 5 {C65} => 52 {D210}) out of
1402 accepted moves.
2010-03-13 09:28:38,454 [main] INFO Step index (22), time spend (38727)
taking step (367 {D190|S40} @ 28 {D210} + 5 {C65} => 19 {D210}) out of
1366 accepted moves.
2010-03-13 09:28:39,903 [main] INFO Step index (23), time spend (40176)
taking step (230 {D120|S15} @ 7 {D210} + 3 {C60} => 12 {D210}) out of
1366 accepted moves.
2010-03-13 09:28:43,901 [main] INFO Step index (24), time spend (44174)
taking step (190 {D90|S6} @ 1 {D210} + 3 {C60} <=> 205 {D120|S6} @ 8
{D210} + 6 {C111}) out of 1392 accepted moves.
2010-03-13 09:28:50,631 [main] INFO Step index (25), time spend (50904)
taking step (420 {D180|S6} @ 46 {D210} + 2 {C129} => 25 {D210}) out of
1396 accepted moves.
2010-03-13 09:29:06,184 [main] INFO Step index (26), time spend (66457)
taking step (211 {D180|S53} @ 15 {D210} + 0 {C260} => 23 {D210}) out of
1383 accepted moves.
2010-03-13 09:29:46,589 [main] INFO Step index (27), time spend
(106862) taking step (39 {D120|S15} @ 50 {D210} + 2 {C129} => 43 {D210})
out of 1383 accepted moves.
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit
exceeded
at java.util.HashMap.addEntry(HashMap.java:753)
at java.util.HashMap.put(HashMap.java:385)
at java.util.HashMap.putAll(HashMap.java:524)
at
org.drools.rule.GroupElement$Type.getOuterDeclarations(GroupElement.java:406)
at org.drools.rule.GroupElement.getOuterDeclarations(GroupElement.java:109)
at
org.drools.base.DefaultKnowledgeHelper.getDeclaration(DefaultKnowledgeHelper.java:213)
at
org.drools.planner.examples.examination.solver.Rule_periodSpread_0DefaultConsequenceInvoker.evaluate(Rule_periodSpread_0DefaultConsequenceInvoker.java:21)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:903)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:850)
at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1061)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:741)
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:707)
...
3)
2010-03-13 09:47:38,303 [main] INFO Step index (55), time spend
(114213) taking step (186 {D90|S17} @ 24 {D210} + 5 {C65} <=> 516
{D180|S12} @ 15 {D210} + 0 {C260}) out of 1382 accepted moves.
2010-03-13 09:48:02,062 [main] INFO Step index (56), time spend
(137972) taking step (498 {D120|S17} @ 28 {D210} + 0 {C260} => 1 {C100})
out of 1389 accepted moves.
2010-03-13 09:48:35,748 [main] INFO Step index (57), time spend
(171658) taking step (15 {D135|S96} @ 16 {D210} + 1 {C100} <=> 164
{D180|S48} @ 3 {D210} + 0 {C260}) out of 1378 accepted moves.
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit
exceeded
at java.lang.Integer.valueOf(Integer.java:625)
at
org.drools.common.TruthMaintenanceSystem.removeLogicalDependencies(TruthMaintenanceSystem.java:180)
at
org.drools.common.AbstractWorkingMemory.removeLogicalDependencies(AbstractWorkingMemory.java:1455)
at
org.drools.reteoo.RuleTerminalNode.retractLeftTuple(RuleTerminalNode.java:266)
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:176)
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:57)
at
org.drools.reteoo.EvalConditionNode.modifyLeftTuple(EvalConditionNode.java:250)
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:198)
at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:304)
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:209)
at org.drools.reteoo.JoinNode.modifyRightTuple(JoinNode.java:221)
at org.drools.reteoo.BetaNode.modifyObject(BetaNode.java:317)
at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
at org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
at org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
--
With kind regards,
Geoffrey De Smet
14 years, 6 months
3 issues with true modify, but PatientAdmissionScheduleApp does work
by Geoffrey De Smet
Found another issue with the true modify changes: 3 of my examples don't
work (NQueens, Travelingtournament, Examination), due to distinct causes.
PatientAdmissionScheduling does work and it's about 4% faster on first
sight.
It's a linear improvement, not an exponential improvement.
Nothing world shocking (yet), but every little bit helps :)
Edson and Mark believe that true modify allows for new optimization,
which I believe might be an exponential improvement.
Once examination works I'll test if I can remove the TMS workaround I
needed before.
This will be a huge performance boost, but only for that specific example.
Here's the bug list:
1) Infinite loop in
org.drools.core.util.LeftTupleList.get(LeftTupleList.java:102)
2) NPE in
org.drools.core.util.RightTupleList.matches(RightTupleList.java:190)
because this.first is null in
return this.hashCode == tupleHashCode && this.index.equal(
this.first.getFactHandle().getObject(),
tuple );
3) NPE in
org.drools.reteoo.SingleLeftTupleSinkAdapter#propagateModifyChildLeftTuple,
line 198:
the leftTuple or the sink is null
childLeftTuple.getLeftTupleSink().modifyLeftTuple( childLeftTuple,
context,
workingMemory );
Here are the stacktraces:
1)
1.
To run:
2.
module: drools-planner-examples
3.
main class:
org.drools.planner.examples.examination.app.ExaminationBenchmarkApp
4.
VM params: -Xms256m -Xmx512m -server
5.
program params: short
6.
working dir:
/home/ge0ffrey/projects/jboss/drools/drools-planner/drools-planner-examples
7.
8.
9.
More logging? open log4j-benchmark.xml and turn on debug logging
for org.drools.planner
10.
11.
12.
2010-03-03 19:47:34,625 [main] INFO Solving with random seed (0).
13.
2010-03-03 19:47:34,626 [main] DEBUG Solution is already initialized.
14.
2010-03-03 19:47:34,752 [main] INFO Initialization time spend
(129) for score (0hard/-8154soft). Updating best solution and best
score.
15.
2010-03-03 19:47:34,948 [main] DEBUG Move (489 {D180|S47} @ 17
{D210} + 4 {C77} => 25 {D210}) with score (-47hard/-8190soft) and
acceptChance (1.0).
16.
2010-03-03 19:47:34,972 [main] DEBUG Move (373 {D180|S157} @
23 {D210} + 0 {C260} => 16 {D210}) with score (-158hard/-8219soft)
and acceptChance (1.0).
17.
2010-03-03 19:47:34,985 [main] DEBUG Move (530 {D120|S152} @
16 {D210} + 0 {C260} => 39 {D210}) with score (-153hard/-8481soft)
and acceptChance (1.0).
18.
2010-03-03 19:47:35,001 [main] DEBUG Move (132 {D120|S61} @ 53
{D210} + 5 {C65} => 24 {D210}) with score (-64hard/-8243soft) and
acceptChance (1.0).
19.
2010-03-03 19:47:35,011 [main] DEBUG Move (553 {D180|S169} @
51 {D210} + 0 {C260} => 37 {D210}) with score (-168hard/-8323soft)
and acceptChance (1.0).
20.
2010-03-03 19:52:03
21.
Full thread dump Java HotSpot(TM) Server VM (14.2-b01 mixed mode):
22.
23.
...
24.
25.
"main" prio=10 tid=0x08b2b800 nid=0x1104 runnable [0xb6aa6000]
26.
java.lang.Thread.State: RUNNABLE
27.
at
org.drools.common.DefaultFactHandle.hashCode(DefaultFactHandle.java:136)
28.
at org.drools.reteoo.LeftTuple.hashCode(LeftTuple.java:445)
29.
at org.drools.reteoo.LeftTuple.equals(LeftTuple.java:461)
30.
at
org.drools.core.util.LeftTupleList.get(LeftTupleList.java:102)
31.
at
org.drools.core.util.LeftTupleList.contains(LeftTupleList.java:96)
32.
at
org.drools.reteoo.EvalConditionNode.modifyLeftTuple(EvalConditionNode.java:235)
33.
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:209)
34.
at
org.drools.reteoo.JoinNode.modifyRightTuple(JoinNode.java:221)
35.
at org.drools.reteoo.BetaNode.modifyObject(BetaNode.java:317)
36.
at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
37.
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
38.
at
org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
39.
at
org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
40.
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
41.
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
42.
at
org.drools.planner.examples.examination.solver.move.ExaminationMoveHelper.movePeriod(ExaminationMoveHelper.java:17)
43.
at
org.drools.planner.examples.examination.solver.move.PeriodChangeMove.doMove(PeriodChangeMove.java:37)
44.
at
org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
45.
at
org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
46.
at
org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
47.
at
org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
48.
at
org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
49.
at
org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
50.
at
org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
51.
at
org.drools.planner.examples.examination.app.ExaminationBenchmarkApp.main(ExaminationBenchmarkApp.java:27)
52.
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
53.
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
54.
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
55.
at java.lang.reflect.Method.invoke(Method.java:597)
56.
at
com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
2) Run NQueensSmokeTest
java.lang.NullPointerException
at org.drools.core.util.RightTupleList.matches(RightTupleList.java:190)
at
org.drools.core.util.RightTupleIndexHashTable.get(RightTupleIndexHashTable.java:301)
at
org.drools.core.util.RightTupleIndexHashTable.getFirst(RightTupleIndexHashTable.java:87)
at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:260)
at org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
at
org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
at
org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
at
org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
at
org.drools.planner.examples.nqueens.solver.move.YChangeMove.doMove(YChangeMove.java:38)
at
org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:119)
at
org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
at
org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
at org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
at
org.drools.planner.examples.nqueens.NQueensSmokeTest.testSmoke(NQueensSmokeTest.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:108)
at
com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:42)
at
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:165)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
3) Run SmartTravelingTournamentBenchmarkApp
Exception in thread "main" java.lang.NullPointerException
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:198)
at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:304)
at org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
at
org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
at
org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
at
org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
at
org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
at
org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.rotateList(MultipleMatchListRotateMove.java:59)
at
org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.doMove(MultipleMatchListRotateMove.java:44)
at
org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
at
org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
at
org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
at org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
at
org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
at
org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
at
org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
at
org.drools.planner.examples.travelingtournament.app.smart.SmartTravelingTournamentBenchmarkApp.main(SmartTravelingTournamentBenchmarkApp.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
--
With kind regards,
Geoffrey De Smet
14 years, 6 months
Accessing JCR repository directly
by Bernd Rücker
Hey guys.
I thought I better ask that question on the dev list, correct me if that
was a bad choice ;-)
I want to programmatically access the JCR repository from another
application (basically to author rules). I understood the RulesRepository
(which is a nice interface by the way). I tried to understand how the JCR
Session is created and can be accessed. As far as I found it, it seems
that a Seam Bean just starts everything (RulesRepositoryManager). Now the
question is: How can I access this from another application? Because the
workspace is locked, I cannot create another Session from there.
Wouldnt it be nice to bind the stuff in JNDI correctly or something like
that? Or if I do that, can I inject it into the Seam application? Or maybe
I can access the seam bean somehow from external?
I think it would be the easiest and best to access the JCR repos instead
of using WebDav or whatever if I am in another EJB3 application
Thanks a lot for any hint
Cheers
Bernd
--
Blog: <http://www.bpm-guide.de> www.bpm-guide.de
---------------------------------------------
camunda services GmbH - The Business Process Company
Zossener Straße 55-58 - 10961 Berlin
<http://www.camunda.com> www.camunda.com - <mailto:info@camunda.com>
info(a)camunda.com
---------------------------------------------
Bernd Rücker
Geschäftsführer
Telefon +49 30 664040 901
Mobil +49 171 1473461
<mailto:bernd.ruecker@camunda.com> bernd.ruecker(a)camunda.com
---------------------------------------------
Amtsgericht Charlottenburg: HRB 113230 B
Geschäftsführer: Jakob Freund, Bernd Rücker
---------------------------------------------
BPMN-Buch: <http://www.hanser.de/buch.asp?isbn=978-3-446-41768-7>
http://www.hanser.de/buch.asp?isbn=978-3-446-41768-7
EJB-3-Buch: <http://www.ejbbuch.de/> http://www.ejbbuch.de/
14 years, 6 months
Drools Clips build failure
by Geoffrey De Smet
Drools clips has a build failure on my machine, but strangely it doesn't
report on hudson. The problem is something with
ClipsConsequenceBuilder's use of MVEL.
[INFO]
------------------------------------------------------------------------
[INFO] Building Drools :: Clips
[INFO] task-segment: [clean, install]
[INFO]
------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] Deleting directory
/home/ge0ffrey/projects/jboss/drools/drools-clips/target
[INFO] [resources:resources]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] [compiler:compile]
[INFO] Compiling 52 source files to
/home/ge0ffrey/projects/jboss/drools/drools-clips/target/classes
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] Compilation failure
/home/ge0ffrey/projects/jboss/drools/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsConsequenceBuilder.java:[26,13]
build(org.drools.rule.builder.RuleBuildContext,java.lang.String) in
org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilder cannot be
applied to (org.drools.rule.builder.RuleBuildContext)
/home/ge0ffrey/projects/jboss/drools/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsConsequenceBuilder.java:[26,13]
build(org.drools.rule.builder.RuleBuildContext,java.lang.String) in
org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilder cannot be
applied to (org.drools.rule.builder.RuleBuildContext)
--
With kind regards,
Geoffrey De Smet
14 years, 6 months
Re: [rules-dev] Accessing JCR repository directly
by Michael Neale
yes that was exactly my point. at that time we weren't prepared or willing
to create app specific wars/sars. In a perfect world the war would work in
all containers (that isn't really possible it seems) but also be able to
work in non EE containers (that may be a JNDI issue? eg with jetty can be a
hassle).
On Fri, Mar 5, 2010 at 8:16 AM, Bernd Rücker <bernd.ruecker(a)camunda.com>wrote:
> I think JNDI Deployment always require an application server (or not?).
> For JBoss the best way would be to provider a sar… But from a war you could
> register it manually as well I think, but this could get app server
> specific…
>
>
>
> *Von:* rules-dev-bounces(a)lists.jboss.org [mailto:
> rules-dev-bounces(a)lists.jboss.org] *Im Auftrag von *Michael Neale
> *Gesendet:* Donnerstag, 4. März 2010 04:35
>
> *An:* Rules Dev List
> *Betreff:* Re: [rules-dev] Accessing JCR repository directly
>
>
>
> right yes - the JNDI binding of JCR would make sense - but I wasn't sure
> how that could be delivered as a self contained war to "drop in" and not
> require significant container specific integration (correct me if wrong).
>
> On Wed, Mar 3, 2010 at 8:08 PM, Bernd Rücker <bernd.ruecker(a)camunda.com>
> wrote:
>
> Hmm, okay REST is one option. But I still would prefer to bind the JCR
> Repository in the JNDI (which is easily possible). This is an option we
> used already a couple of times for JackRabbit applications. By doing so,
> everybody in the app server can access it via JNDI, like any other
> datasource as well (and basically that's what a JCR Repository is).
>
> The only dependency is to have JCR on the classpath, ok.
>
> I think for the moment I will create a Servlet which reads it from Seam
> and binds the Repository to JNDI. What do you think?
>
> Having a REST or Webdav API INSIDE of the Appserver to talk from Java to
> Java just sounds technically unnecessary complicated to me...
>
> -----Ursprüngliche Nachricht-----
>
> Von: rules-dev-bounces(a)lists.jboss.org
>
> [mailto:rules-dev-bounces@lists.jboss.org] Im Auftrag von Jervis Liu
> Gesendet: Mittwoch, 3. März 2010 08:55
>
> An: Rules Dev List
> Betreff: Re: [rules-dev] Accessing JCR repository directly
>
> Bernd Rücker wrote:
> >
> > Hi Michael.
> >
> > Thanks for the quick answer!
> >
> > Our use case at the moment is, that we maintain the HEAD version of
> > the rules in an own table locally in the app, where we have a
> > specialized GUI for authoring. As soon as they get released we
> > leveraged the RuleTemplate to generate a DRL file, which we want to
> > check in Guvnor, from where the deployment snapshots are created,
> > versioned and so on. So we have to access Guvnor programmatically
> > (doesn’t have to be JCR).
> >
> > A second nice use case we face is to hang in the Drools Repository
> > into a bigger JCR-Content-Tree (in the area of ModeShape), so there
> > JCR would be nice. Then we could use the JCR Explorer, written from
> > one of my colleagues, to have a look at the repos as well. But okay,
> > this is why we want to use JCR.
> >
> > But the most important issue is to access the Repository
> > programmatically from an EJB3. Maybe we could get around classloading
> > isolation and just access some static stuff for that. Or making the
> > ServiceImplementation really more generic usable, that would be
> > wonderful as well. But as it sounds it will take some time and will
> > not be released pretty soon? Then we have to find another way for now,
> > since if avoidable I don’t want to patch drools. So you mean I should
> > use the internal Remote Interface the GWT GUI is using? Where can I
> > find that and how can I create a correct reference?
> >
> > Or I have to use Webdav, but this looks pretty cumberstone to use it
> > internally in one JBoss server instead of pure Java mechanisms?
> >
> > Thanks and cheers
> >
> > Bernd
> >
>
> Hi Bernd, this might be related:
> *http://lists.jboss.org/pipermail/rules-users/2009-December/011618.html
>
> *Basically the idea is that you expose ServiceImplementation as a remote
> service. As far as how the remote service is implemented, one way to go
> is to expose ServiceImplementation as RESTful service. Guvnor already
> has some Atom/Pub capabilities.It may not match your request yet, but if
> you have a concrete requirement on what methods in ServiceImplementation
> you want to expose remotely, we can look into it and get it addressed
> either by extending Atom/Pub capabilities that Guvnor already has (for
> this, take a look at
> http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/sr
> c/main/java/org/drools/guvnor/server/files/<http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/s...>
> )
> or by providing a truly RESTful service layer on top of Guvnor server.
>
> Cheers,
> Jervis
> >
> > *Von:* rules-dev-bounces(a)lists.jboss.org
> > [mailto:rules-dev-bounces@lists.jboss.org] *Im Auftrag von *Michael
> Neale
> > *Gesendet:* Montag, 1. März 2010 00:27
> > *An:* Rules Dev List
> > *Betreff:* Re: [rules-dev] Accessing JCR repository directly
> >
> > Hi Bernd. yes you have it correctly - seam starts things up.
> >
> > IN terms of accessing JCR directly, this came up before and one idea
> > was to use the "remote" JCR interface - that means some refactoring I
> > guess.
> >
> > So the basic design is that there is a JCR server that starts up, and
> > the "clients" connect remotely (a client in this case is also the
> > Guvnor server side).
> >
> > That way you can access it from multiple places. However, it may be a
> > bit too low level for this - the question is what do you want to
> > access JCR for from your external app?
> >
> > A better approach, is to make the ServiceImplementation a true remote
> > interface (at the moment it is, but for GWT clients only) - so ANY
> > sort of client can connect and access the guvnor services, without
> > messing with low level data structures - I am thinking the latter is
> > the superior approach (and someone else was looking at it).
> >
> > Michael.
> >
> > On Sun, Feb 28, 2010 at 4:53 AM, Bernd Rücker
> > <bernd.ruecker(a)camunda.com <mailto:bernd.ruecker@camunda.com>> wrote:
> >
> > Hey guys.
> >
> > I thought I better ask that question on the dev list, correct me if
> > that was a bad choice ;-)
> >
> > I want to programmatically access the JCR repository from another
> > application (basically to author rules). I understood the
> > RulesRepository (which is a nice interface by the way). I tried to
> > understand how the JCR Session is created and can be accessed. As far
> > as I found it, it seems that a Seam Bean just starts everything
> > (RulesRepositoryManager). Now the question is: How can I access this
> > from another application? Because the workspace is locked, I cannot
> > create another Session from there.
> >
> > Wouldn’t it be nice to bind the stuff in JNDI correctly or something
> > like that? Or if I do that, can I inject it into the Seam application?
> > Or maybe I can access the seam bean somehow from external?
> >
> > I think it would be the easiest and best to access the JCR repos
> > instead of using WebDav or whatever if I am in another EJB3 application…
> >
> > Thanks a lot for any hint
> >
> > Cheers
> >
> > Bernd
> >
> > --
> >
> > Blog: _www.bpm-guide.de <http://www.bpm-guide.de>_
> >
> > ---------------------------------------------
> >
> > camunda services GmbH - The Business Process Company
> >
> > Zossener Straße 55-58 - 10961 Berlin
> >
> > www.camunda.com <http://www.camunda.com> - info(a)camunda.com
> > <mailto:info@camunda.com>
> >
> > ---------------------------------------------
> >
> > Bernd Rücker
> >
> > Geschäftsführer
> >
> > Telefon +49 30 664040 901
> >
> > Mobil +49 171 1473461
> >
> > bernd.ruecker(a)camunda.com <mailto:bernd.ruecker@camunda.com>
> >
> > ---------------------------------------------
> >
> > Amtsgericht Charlottenburg: HRB 113230 B
> >
> > Geschäftsführer: Jakob Freund, Bernd Rücker
> >
> > ---------------------------------------------
> >
> > BPMN-Buch: http://www.hanser.de/buch.asp?isbn=978-3-446-41768-7
> >
> > EJB-3-Buch: http://www.ejbbuch.de/
> >
> >
> > _______________________________________________
> > rules-dev mailing list
> > rules-dev(a)lists.jboss.org <mailto:rules-dev@lists.jboss.org>
> > https://lists.jboss.org/mailman/listinfo/rules-dev
> >
> >
> >
> >
> > --
> > Michael D Neale
> > home: www.michaelneale.net <http://www.michaelneale.net>
> > blog: michaelneale.blogspot.com <http://michaelneale.blogspot.com>
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > rules-dev mailing list
> > rules-dev(a)lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-dev
> >
>
> _______________________________________________
> rules-dev mailing list
> rules-dev(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
> _______________________________________________
> rules-dev mailing list
> rules-dev(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
>
>
> --
> Michael D Neale
> home: www.michaelneale.net
> blog: michaelneale.blogspot.com
>
> _______________________________________________
> rules-dev mailing list
> rules-dev(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
--
Michael D Neale
home: www.michaelneale.net
blog: michaelneale.blogspot.com
14 years, 6 months