Ignore subsequent conditions in a Decision Table based on previous condition
by ciberg2
Hi, I'm new to Drools and I'm implementing rules using Excel decision tables
and I need some of your help.
I have some rules in which depending on a condition the following condition
is not necessary, how can I define a table that akllows to define this?
For instance I have:
CONDITION CONDITION CONDITION ACTION
Y
result1
N N Y
result2
N N N
result3
N Y N
result4
N Y Y
result5
In the example above (I hope you can see it right) if the first condition
value is Y the other 2 conditions values don't matter and despite their
value the result will always be the same.
I wouldn't want to have to write all the possible combinations as these in
the real case will add a lot of complexity to the tables.
How can I accomplish this? Is it possible to do it in Excel? If not, how can
I do it in another way (for instantance with guvnor web-based tables).
--
View this message in context: http://drools.46999.n3.nabble.com/Ignore-subsequent-conditions-in-a-Decis...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Drools 5.5 and jBPM 5.4 on Weblogic 10.3.4
by abhishekbiyala
Hi,
I have been struggling to get drools 5.5 and jBPM 5.4 embedded in a weblogic
10.3.4 application.
Seems like there is some conflict between drools and weblogic jars. But how
to resolve?
This is the exception I am getting -
java.lang.NoSuchMethodError:
org.drools.util.CompositeClassLoader.clone()Lorg/drools/util/CompositeClassLoader;
at
org.drools.compiler.PackageBuilderConfiguration.getClassLoader(PackageBuilderConfiguration.java:362)
at
org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:98)
at
org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:61)
at
org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:317)
at
org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:307)
at
org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:192)
at
org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:170)
at
org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactoryServiceImpl.java:22)
at
org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactory.java:75)
at
org.drools.container.spring.beans.KnowledgeBaseBeanFactory.afterPropertiesSet(KnowledgeBaseBeanFactory.java:80)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at
weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at
weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
at
weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1872)
at
weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3153)
at
weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1508)
at
weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)
at
weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at
weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at
weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
at
weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
at
weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at
weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at
weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
at
weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at
weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
at
weblogic.application.internal.EarDeployment.activate(EarDeployment.java:58)
at
weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at
weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at
weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
at
weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
at
weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
at
weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
at
weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
at
weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
at
weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
at
weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
at
weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
at
weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
at
weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
at
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
Thanks,
Abhishek
--
View this message in context: http://drools.46999.n3.nabble.com/Drools-5-5-and-jBPM-5-4-on-Weblogic-10-...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Freezing repositories drools + droolsjbpm-knowledge on Friday 15-MAR-2013
by Geoffrey De Smet
To fix the OSGi split-packages problem,
we'll be freezing the following repositories this Friday 15-MAR-2013:
droolsjbpm-knowledge
drools
A lot of package directory's will change on master.
*Please make sure you 've pushed all your local changes by Thursday
evening.*
Don't push on Friday - until I 've send a mail that's ok.
Most pull requests have been merged/closed in the last weeks (thanks to
Mario), so they don't go stale.
What will happen?
All kie-api.jar packages will be moved from
org.kie
to
org.kie.api
All kie-internal.jar packages will be moved from
org.kie
to
org.kie.internal
All drools-core.jar packages will be moved from
org.drools
to
org.drools.core
All drools-compiler.jar packages will be moved from
org.drools
to
org.drools.compiler
...
Why?
https://issues.jboss.org/browse/DROOLS-57
https://issues.jboss.org/browse/JBRULES-3574
13 years
Help with DefaultAgenda.java
by Mallory
Hello,
I have tried to change the source code of DefaultAgenda.Java by adding the
code below:
//drools orginial sequential code
/*
while ( continueFiring( fireLimit ) && fireNextItem( agendaFilter )
) {
fireCount++;
fireLimit = updateFireLimit( fireLimit );
this.workingMemory.executeQueuedActions();
}
*/
//code with concurrency
InternalAgendaGroup myGroup = (InternalAgendaGroup) getNextFocus();
fireCount = myGroup.size();
for(int i =0; i< fireCount; ++i)
{
new Thread(new Runnable(){
public void run()
{
fireNextItem( agendaFilter );
}
}).start();
}
I am getting an Errorjava.lang.NullPointerException because my code flow is
going to consequenceExceptionHandler ! = null exception.
else if ( this.consequenceExceptionHandler != null ) {
this.consequenceExceptionHandler.handleException(
activation, this.workingMemory.getKnowledgeRuntime(),
e );
Could you kindly help me with this?
I am pasting the exception below and I am using Drools 5.4 Final version.
In DA: [Activation rule=Rule 1, act#=0, salience=0, tuple=[fact
0:0:1773684356:1306428912:0:DEFAULT:org.drools.reteoo.InitialFactImpl@4dde85f0]
]
Exception in thread "Thread-1" Exception in thread "Thread-0" Exception
executing consequence for rule "Rule 1" in defaultpkg:
java.lang.NullPointerException
In DA WM: org.drools.impl.StatefulKnowledgeSessionImpl@542487b1
In DA Errorjava.lang.NullPointerException
In DA: [Activation rule=Rule 2, act#=1, salience=0, tuple=[fact
0:0:1773684356:1306428912:0:DEFAULT:org.drools.reteoo.InitialFactImpl@4dde85f0]
]
In DA WM: org.drools.impl.StatefulKnowledgeSessionImpl@542487b1
In DA Errorjava.lang.NullPointerException
at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1208)
at org.drools.common.DefaultAgenda$1.run(DefaultAgenda.java:1471)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1272)
... 3 more
Exception executing consequence for rule "Rule 2" in defaultpkg:
java.lang.NullPointerException
at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1208)
at org.drools.common.DefaultAgenda$1.run(DefaultAgenda.java:1471)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1272)
... 3 more
Thanks a lot for the help.
Regards,
Malory
--
View this message in context: http://drools.46999.n3.nabble.com/Help-with-DefaultAgenda-java-tp4022758....
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Error in Activator.java
by Mallory
Hi All,
I am new to drools and I am looking forward to receive help from experts out
here. I have created a new drools project where I will be using
drools-distribution-5.4.0.Final.
I have created three Source folders for drools-compiler-5.4.0.Final-sources,
drools-core-5.4.0.Final-sources and knowledge-api-5.4.0.Final-sources.
I have imported all the other binaries/JAR's available from the same
drools-distribution-5.4.0.Final folder using Java Build path.
I have been getting errors in all the three source folders and the errors
are related to Activator.java.
In all the import statements I am getting an error called The import
org.osgi cannot be resolved.
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
I am not sure where to find org.osgi. Any help related to this is greatly
appreciated.
Thanks in advance,
Mallory
--
View this message in context: http://drools.46999.n3.nabble.com/Error-in-Activator-java-tp4022753.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Drools upgrade
by erolagnab
Hi,
After upgrading from 5.0.1 to 5.4.0, i've experienced some unresolvable
issue
(http://drools.46999.n3.nabble.com/UnsupportedOperationException-intermite...).
As reproducing the issue is totally not trivial and i can't prove if
upgrading to 5.5 or even 5.6 would warantee fixing it 100%. Hence i'm
thinking of going back to 5.0.1 which serves us okie despite the fact that
each rule update will cost lots of GC as it refreshes the whole rule
instance.
For that, the only reason we wanted to ugprade to 5.4.0 was the
KnowledgeBase incremental build feature which was introduced from 5.1.M1.
Before i spend time on figuring out whether it's possible to patch 5.0.1
with incremental build feature from 5.1.M1, i would like to seek for
suggestions and ideas in this forum.
My concerns are:
1. How big is the refactoring required to patch 5.0.1 with incremental build
feature? What side effects would i expect to have if patching successfully?
2. Was there any other option that i can take to: no intermittent issue with
my rules and GC is in a good level?
Many thanks,
Trung
--
View this message in context: http://drools.46999.n3.nabble.com/Drools-upgrade-tp4022747.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Archive option for package snapshot
by IPatel
Hi,
I see that there is an "Archive Selected" tab for the assets under the
package snapshot and i have following questions.
When i select an asset (business rules or from a techinical rule) and click
on the Archive Selected, the system archives it (meaning the asset is
removed from the current view of the package snapshot)
1) how can i restore the archived asset? i was not able to see the list of
the assets archived from the snapshot under Administration ->archive tab.
2) i can archive Package Snapshot itself?
3) When i use compare option when comparing 2 snapshot packages, i see a
list of the assets that are archieved with Type = Restore. Can someone
please explain what does this mean when comparing 2 snapshot packages and
why it is saying "restored". Shouldn't it say "archived"?
Also does any one has any good link that provides complete explaination on
Package Snapshot and Archive for Guvnor tool.
Thank you again for all your help
--
View this message in context: http://drools.46999.n3.nabble.com/Archive-option-for-package-snapshot-tp4...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years
Hashing in JoinNode and CompositeObjectAdapter
by Philipp Herzig
Dear developers,
I have a question regarding the current implementation within reteoo.
In both cases, the JoinNode and CompositeObjectAdapter is doing a linear
search for Joins and "Splits" respectively.
For the BetaNodes the decision using lists or maps is done in
SingleBetaContraints() (line 82)
this.indexed = depth >= 1 && DefaultBetaConstraints.isIndexable( constraint
);
However, the MVELContraint (constraint) always returns false for an
equijoin predicate (always the MVELContraint constructor without index flag
is called). Consequently, createBetaMemory() creates lists rather than
maps. These are finally joined in assertLeftTuple and assertObject of the
JoinNode with complexity 2n-1.
(Note: Of course, IndexLeftBetaMemoryOption.YES
and IndexRightBetaMemoryOption.YES are set but ignored according to the
SingleBetaContraints' constructor).
Relatively similar the CompositeObjectAdapter:
While propagating objects (CompositeObjectAdapter.propagateAssertObject)
the method asks if a fieldIndex is hashed which always returns false.
However, I cannot find any possibility to set this flag to true.
Interestingly the fields are added to a collection called
hashedFieldIndexes in FieldIndex.registerFieldIndex. Moreover the code for
dispatching to the right sink via hashcode is there, but is not reachable
anyway.
Are there any design related reasons for not supporting this or am I
missing something? If not, I would love to open a FR for that. If someone
helps me in setting up the mvn stuff I could do that myself.
(Version 5.4.0.Final)
Thanks,
Philipp
13 years