Drools OSS Meeting 19th - 23rd of April now at the Hacienda Hotel (San Diego)
by Mark Proctor
http://blog.athico.com/2010/03/drools-oss-meeting-19th-23rd-of-april.html
http://community.jboss.org/wiki/DroolsBootCampSanDiegoApril2010
Due to unexpected levels of attendance we've moved the event from the
provided location to a larger one. This provided the opportunity to
locate the event at a hotel, so people can stay in the same building as
the meeting. We are now located at the Hacienda Hotel
<http://haciendahotel-oldtown.com> in Old Town, near plenty of
restaurants and a trolley bus to Down Town which is 10 minutes away. So
if you have booked another hotel I would recommend you cancel it and
relocate to the Hacienda.
A special hotel rate of $110 per night is available under the booking
reference "Drools", but hurry as space is limited and we have not done
any block reservations. The event itself is free of charge. Breakfast
will be provided each morning, as part of the conference, and coffee
will be available throughout the day. If anyone would like to sponsor
lunch, let me know :) mproctor at codehaus d0t org.
Hacienda Hotel <http://haciendahotel-oldtown.com/> (4041 Harney Street .
San Diego, CA 92110 . 800-888-1991)
(click to enlarge)
<http://2.bp.blogspot.com/_Jrhwx8X9P7g/S7F3oW75hKI/AAAAAAAAAZ8/pmta54bAmAc...>
Details of the conference can be found at the registration page here:
http://community.jboss.org/wiki/DroolsBootCampSanDiegoApril2010
The meeting is really shaping up with many top names attending:
JBoss, OSDE (Argentinian Healthcare), AT&T, SAIC, Kaiser, VA, Naval
Health Research Center, Clinica, Decision Management Solutions,
University of Utah / VA, Intermountain Healthcare, termMed IT, Versatile
Systems, GE Healthcare, Open Health Data, Pharmacy OneSource, Wake
Forest University Health Science, Recondo Technology, Zementis,
University of Maryland, University of Bologna, Duke University.
We have the most excellent James Taylor key noting on Wednesday
<http://blog.athico.com/2010/03/james-taylor-to-key-note-for-drools.html>,
with many other interesting talks planned:
*Name* *Talk*
James Taylor (Decision Management Solutions
<http://www.decisionmanagementsolutions.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
Emory Fry (NHRC) Delivering Real-Time Clinical Decision Support
Joe White (Recondo Techology) Healthcare EDI Processing Using Drools
Kostas Stathatos (Zementis <http://www.zementis.com/>) Drools &
Predictive Analytics: Follow Your Rules and Listen to Your Data
Monday and Tuesday are focused on the medical/healthcare industries, but
Wednesday onwards are open to all.
14 years, 9 months
CHR 2010: Final call for papers
by Leslie DE KONINCK
=========================================================================
Final Call for Papers
Seventh International Workshop on Constraint Handling Rules
CHR 2010
http://www.cs.kuleuven.be/~dtai/CHR/CHR2010/
Edinburgh (Scotland), July 20, 2010
(co-located with ICLP 2010, part of FLoC 2010)
=========================================================================
News
* Abstract submission no longer required before paper submission;
paper submission deadline = April 5th
* Invited speaker: We are privileged to announce a distinguished invited
speaker this year: Mark Proctor, lead of the thriving, innovating
JBoss Drools project (http://www.jboss.org/drools/). He will introduce
the Drools Business Logic integration Platform, a fully featured
business rule engine and management system that seamlessly integrates
powerful Complex Event Processing and workflow capabilities.
Introduction
The CHR 2010 Workshop will be held July 20, 2010 in Edinburgh (Scotland)
at the occasion of the 26th International Conference on Logic
Programming (ICLP 2010), the premier international venue for presenting
research in logic programming. This year, ICLP is held as part of the
Fifth Federated Logic Conference (FLoC 2010). More information on the
venue and co-located conferences can be found on the FLOC website
(http://www.floc-conference.org/).
The Constraint Handling Rules (CHR) language has become a major declara-
tive specification formalism and implementation language for constraint
reasoning algorithms and applications. Algorithms specified using infe-
rence rules, rewrite rules, sequents, proof rules, or logical axioms can
often be directly written in CHR. Its clean semantics facilitates pro-
gram design, analysis, and transformation. For more information, please
visit the CHR website (http://www.cs.kuleuven.be/~dtai/projects/CHR/).
The aim of the CHR workshop series is to stimulate and promote interna-
tional research and collaboration on topics related to the CHR language.
The workshop is a lively, friendly forum for presenting and discussing
new results, interesting applications, and work in progress.
Previous Workshops on Constraint Handling Rules were organized in 2004
in Ulm (Germany), in 2005 in Sitges (Spain) at ICLP, in 2006 in Venice
(Italy) at ICALP, in 2007 in Porto (Portgual) at ICLP, in 2008 in Hagen-
berg (Austria) at RTA, and in 2009 in Pasadena (California, US) at ICLP.
Topics of Interest
The workshop calls for contributions on all aspects of CHR,
including topics such as:
- (Operational) semantics
- Program analysis (confluence, termination, ...)
- Comparisons with related approaches
- Expressivity and complexity
- Language extensions (negation, modules, ...)
- Constraint solvers
- Implementation and optimization
- Concurrency & parallelism
- Program transformation and generation
- Programming environments (debugging, confluence checking, ...)
- Programming pearls
Application papers that describe experience with (industrial)
applications, are especially welcome.
Important dates
- Paper submission deadline: April 5, 2010
- Notification of acceptance: May 1, 2010
- Final version due: May 17, 2010
- Workshop date: July 20, 2010
Submission Information
The four broad categories for submissions are:
1. technical papers for describing technically sound, innovative
ideas that can advance the state of the art of CHR
2. application papers, where the emphasis will be on the use of CHR
in the application, on the impact on the application domain, and
the lessons learned from this application
3. system and tool papers, empasising the novelty, practicality,
usability and general availability of the systems and tools
described
4. short papers, for ongoing work not yet ready for full publication
and research project overviews.
All papers must describe original, previously unpublished research, and
must not simultaneously be submitted for publication elsewhere.
They must be written in English. Technical papers must not exceed 15
pages. The limit for short papers is 7 pages, as is the standard page
limit for application papers, and system and tool papers. However,
particularly strong contributions in the latter two areas may be
submitted as technical paper as well.
All papers must be in the Springer LNCS format. General information
about the Springer LNCS series and the LNCS authors' instructions are
available at the Springer LNCS home page
(http://www.springer.com/computer/lncs?SGWID=0-164-7-72376-0).
Submissions must be made via the EasyChair submission system, available
at http://www.easychair.org/conferences/?conf=chr10
Programme Committee
- Sebastian Brand, National ICT Australia, and the University
of Melbourne, Victoria, Australia
- Henning Christiansen, Roskilde University, Denmark
- Veronica Dahl, Simon Fraser University, Canada
- Leslie De Koninck, Victoria Research Laboratory, NICTA, Australia
(co-chair)
- Thom Fruehwirth Ulm University, Germany
- Marco Gavanelli, University of Ferrara, Italy
- Remy Haemmerle, Universidad Politecnica de Madrid, Spain
- Maria-Chiara Meo, "Gabriele d'Annunzio" University, Italy
- Paolo Pilozzi K.U.Leuven, Belgium
- Frank Raiser, Ulm University, Germany
- Peter Van Weert, K.U.Leuven, Belgium (co-chair)
- Jairson Vitorino, Federal University of Pernambuco, Brazil
- Armin Wolf, Fraunhofer FIRST, Germany
Workshop Coordinators
Contact: chr2010(a)easychair.org
Peter Van Weert
Department of Computer Science, K.U.Leuven
Leuven, Belgium
http://www.cs.kuleuven.be/~petervw/
Leslie De Koninck
Victoria Research Laboratory, NICTA
Melbourne, Australia
14 years, 9 months
Query about the state of tuples in AgendaItem.
by Rajnikant Gupta
Hi Group,
I have a doubt regarding tuples. I created a rule using complex types
objects. I am comparing two complex type objecs which have parent-child
relationship eg. "ParentType.equals(ChildType)". I expect this to follow
java rule which allows such comparision. Now when I run the rules with
different values for fields in ParentType and ChildType (which means the
rule should fail) to my surprise it evals to TRUE. Also upon inspection, the
tuple shows me only the ChildType instance not the ParentType.
I would appreciate any help on this.
Regards,
Rajnikant Gupta
14 years, 9 months
Combined OR/NOT Rules results in NullPointerException
by Sebastian Furth
Hello,
i've already mailed last week with the same problem and with your help I was
able to locate the source of the following NullPointerException which
happens if we try to insert the Fact "knocking" (@see Source Code of the
Java Class here: http://www.pastie.org/private/juv7hh7rxahpluo5agu3q) :
*java.lang.NullPointerException
at org.drools.reteoo.LeftTuple.get(LeftTuple.java:265)
at org.drools.reteoo.LeftTuple.get(LeftTuple.java:300)
at
org.drools.rule.VariableRestriction$ObjectVariableContextEntry.updateFromTuple(VariableRestriction.java:320)
at
org.drools.common.SingleBetaConstraints.updateFromTuple(SingleBetaConstraints.java:119)
at org.drools.reteoo.NotNode.assertLeftTuple(NotNode.java:98)
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:117)
at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:34)
at org.drools.reteoo.NotNode.assertLeftTuple(NotNode.java:123)
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:145)
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:57)
at
org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:142)
at
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:147)
at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:360)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:344)
at
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:185)
at
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:146)
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1046)
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1001)
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:788)
at
org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:216)
at de.d3web.we.drools.DroolsAction.addFacts(DroolsAction.java:334)
*
The source of the problem is the following rule:
*rule "R50"
when
$value1 : Value(value == "knocking")
not Input(name == "Engine noises" && values contains $value1)
or
$value2 : Value(value == "ringing")
not Input(name == "Engine noises" && values contains $value2)
$solution : SolutionInput(name == "Bad ignition timing")
then
$solution.setValue(N3);
end
*
Could you please tell me how I have to formulate the rule to avoid the
NullPointerException while inserting the fact?
Thank you in advance for your help.
Best regards
Sebastian Furth
14 years, 9 months
HumanTask Process
by ramram
Hi All,
I was working on the Human Task Life cycle by adding the delegate to the
drools-process-task. I have once question how we can move the process from
the "Ready" state to the "Reserved" state. If someone can help it would be
great.
Regards,
Ram
--
View this message in context: http://n3.nabble.com/HumanTask-Process-tp683271p683271.html
Sent from the Drools - User mailing list archive at Nabble.com.
14 years, 9 months
Drools - Query Problem
by Nilima R
Dear All,
I have created simple rule file and created model in that rule file only
package com.sample
import java.lang.String;
declare Rating
rate : int
band : String
name : String
end
query "employee with band E"
ratg : Rating(band == "EBand")
end
rule "for E band"
when
r : Rating( rate == 1)
then
r.setBand("EBand");
System.out.println( "in E band" );
end
rule "for D band"
when
r : Rating( rate == 2)
then
r.setBand("EBand");
System.out.println( "in E band" );
end
rule "for C band"
when
r : Rating( rate == 3)
then
r.setBand("EBand");
System.out.println( "in E band" );
end
rule "for B band"
when
r : Rating( rate == 4)
then
r.setBand("EBand");
System.out.println( "in E band" );
end
At the end I want to know how many employees have got E band and so have
written query for it in the rule file .and obtained the query results as
below
FactType bandType = kbase.getFactType( "com.source", "Rating" );
QueryResults results = ksession.getQueryResults(
"employee with band E");
System.out.println( "we have " + results.size() +
"employee with band E" );
System.out.println( "employee with band E:" );
for (Iterator i = results.iterator();
i.hasNext();) {
QueryResultsRow row =
(QueryResultsRow)i.next();
Object ratg = row.get("rating");
String name = (String) bandType.get( ratg,
"name" );
System.out.println(name);
}
But am getting the result of query as 0 records.
i am inserting objects one by one ( this for testing just purpose ) to
learn how query works.
Can someone plz point out what is wrong.Its Urgent ................
Thanks in advance.
Nilu
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you
14 years, 9 months
Behavior changes between Drools 5.0.1 and 5.1.0
by Carlos Henrique Pinto da Sillva
Hi all,
We're evaluating the use of Drools Fusion as rule engine for one of our projects, but after updating from version 5.0.1 to 5.1.0 to fix one persistence issue we faced new errors and some unexpected behavior changes in already tested parts of our code, and we aren't unsure if it's our fault due to incorrect assumptions or if it's resulting from a new bug introduced in last release. Here follows what we are doing:
1) we declared this in our Test_Rules.drl:
declare UserEvent
@role( event )
@expires( 30s )
end
query "get user by login" (String login)
user : UserEvent(user.login == login)
end
2) this is the code we use to retrieve the Drools session (implemented in a singleton):
public StatefulKnowledgeSession getKnowledgeSessionInstance() {
if (session == null) {
kbase = readKnowledgeBase();
KnowledgeSessionConfiguration conf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
session = kbase.newStatefulKnowledgeSession(conf, null);
}
return session;
}
3) that's how we load the rules (some non-pertinent code was omitted):
private KnowledgeBase readKnowledgeBase() {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
config.setOption(EventProcessingOption.STREAM);
kbuilder.add(ResourceFactory.newClassPathResource("Test_Rules.drl"), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
// (...)
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(config);
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
(NOTE: Up to this point the code behaves exactly the same way in both versions and everything works as expected.)
4) in this method we check our event expiration, and that's where things starts to behave different. In version 5.0.1, the code always worked in the same way, returning a null reference to userValidation if the expiration time is reached. Also, handleQuery is always an instance of EventFactHandle. Based in userValidation reference being null or not, we either retrieve it or update it. Again, non-related code was ommited:
private UserTrackForValidation assertDesktopEvent(DesktopDeviceEvent event) {
UserEvent userValidation = null;
StatefulKnowledgeSession session = sessionFactory.getKnowledgeSessionInstance(createEnviroment());
QueryResults results = session.getQueryResults("get user by login", new String[] {event.getLogin()});
if (results.size() > 0) {
QueryResultsRow row = results.iterator().next();
FactHandle handleQuery = row.getFactHandle("user");
userValidation = (UserTrackForValidation) row.get("user");
}
if (userValidation == null) {
try {
userValidation = entityDAO.getUserTrackByLogin(event.getLogin());
} catch (Exception e) {
e.printStackTrace();
}
// (...)
}
else {
// (...)
session.update(handleQuery, userValidation);
session.fireAllRules();
}
}
return userValidation;
}
However, starting with version 5.1.0, we observed some odd behaviors:
a) after time expiration, we may or may not receive a null reference to userValidation, which renders the test line "if (userValidation == null)" erratic;
b) even when we receive a (as far as we can tell) valid reference to userValidation, sometimes a NullPointerException is raised, as can be seen in the following stacktrace:
java.lang.NullPointerException
at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1329)
at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
at org.drools.impl.StatefulKnowledgeSessionImpl.update(StatefulKnowledgeSessionImpl.java:248)
at br.com.todobpo.lam.ejb.session.ContactCenterRuleServiceImpl.assertSimpleEvent(ContactCenterRuleServiceImpl.java:191)
at br.com.todobpo.lam.ejb.session.ContactCenterRuleServiceImpl.insertEvent(ContactCenterRuleServiceImpl.java:89)
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 org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69)
at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73)
at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59)
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 org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_1000702.invoke(InvocationContextInterceptor_z_fillMethod_1000702.java)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_1000702.invoke(InvocationContextInterceptor_z_setup_1000702.java)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.tx.StatelessBMTInterceptor.handleInvocation(StatelessBMTInterceptor.java:106)
at org.jboss.ejb3.tx.BMTInterceptor.invoke(BMTInterceptor.java:55)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:421)
at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:211)
at org.jboss.remoting.Client.invoke(Client.java:1724)
at org.jboss.remoting.Client.invoke(Client.java:629)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
at $Proxy7.invoke(Unknown Source)
at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
at $Proxy6.insertEvent(Unknown Source)
at br.com.todobpo.lam.ejb.test.Authenticate.authenticationOk(Authenticate.java:70)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
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)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:72)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
at $Proxy7.invoke(Unknown Source)
at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
at $Proxy6.insertEvent(Unknown Source)
at br.com.todobpo.lam.ejb.test.Authenticate.authenticationOk(Authenticate.java:70)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
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)
c) handleQuery can either receive an EventFactHandle or a DisconnectedFactHandle, without no apparent pattern. For the later case (DisconnectedFactHandle), the returned class lacks a useful isValid() method (the current implementation only throws an exception), thus we are unable to check the returned object before using it;
d) finally, we noticed that all mentioned errors happens only when we set the real time clock in the KnowledgeSessionConfiguration object. Using the pseudo clock, there are no runtime errors and the object expiration behavior appears to be correct, like in 5.0.1.
So, after all this information, we have a couple questions:
1) Is really correct to assume that after an event expiration the object reference will always be null (as observed up to version 5.0.1) ? If not, how can we determine the event associated object sanity ?
2) Why starting from version 5.1.0 we started to observe the occurrence of DisconnectedFactHandle ? Can this detail be safely ignored, or is this a sign that something went wrong when trying to retrieve the event ?
3) Is there something flawed in our presented approach ? Or did we bump into a new bug ?
Any help is apreciated.
Carlos
[cid:image001.png@01CACF25.77ED4B20]
Carlos Henrique P. da Silva
Arquiteto
55-48-3953-5088
55-48-8822-2897
carlos.dasilva(a)todobpo.com.br
www.todobpo.com.br<http://www.todobpo.com.br>
________________________________
Esta mensagem pode conter informação confidencial e/ou privilegiada, sendo seu sigilo protegido por lei. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente ao remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação.
This message may contain confidential and/or privileged information, being the sigil protected by law. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.
14 years, 9 months
unsubscribe
by Griffiths, Marie
**************************************************************************************
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmaster(a)nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.
NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00
**************************************************************************************
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmaster(a)nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes.
To protect the environment please do not print this e-mail unless necessary.
An NDS Group Limited company. www.nds.com
14 years, 9 months