[jboss-jira] [JBoss JIRA] (DROOLS-1252) java.lang.ClassCastException: event cannot be cast to org.drools.core.common.InternalFactHandle

Mario Fusco (JIRA) issues at jboss.org
Fri Apr 7 04:43:00 EDT 2017


     [ https://issues.jboss.org/browse/DROOLS-1252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Fusco resolved DROOLS-1252.
---------------------------------
    Resolution: Cannot Reproduce Bug


> java.lang.ClassCastException: event cannot be cast to org.drools.core.common.InternalFactHandle
> -----------------------------------------------------------------------------------------------
>
>                 Key: DROOLS-1252
>                 URL: https://issues.jboss.org/browse/DROOLS-1252
>             Project: Drools
>          Issue Type: Bug
>          Components: core engine
>    Affects Versions: 6.4.0.Final
>         Environment: Drools 6.4.Final 
> Fusion (CEP)
>            Reporter: Michael Neifeld
>            Assignee: Mario Fusco
>            Priority: Blocker
>         Attachments: RULES_ERRORS.log, Rule_Emergency_Network_Start_No_Active_Call_Rule523993873.java
>
>
> It seems to be similar to another bug DROOLS-1185, but without any Modify.
> this is the rule:
> {code:java}
> declare EmergencyNetworkComplexEvent
>     @role(event)
> 	@timestamp(timestamp)
> 	@expires(1h)
> end
>  ...
> global Logger dlogger;
> .....
> rule "Emergency Network Start No Active Call Rule" //EMERGENCY
> 	salience 90
> //	no-loop true 
> 	when
>         //conditions
>         $event : EmergencyNetworkComplexEvent( transition == Transition.START)
>         $predecessor : CallComplexEvent( radioID == $event.radioID ) 
> 		not ( EmergencyActiveCallComplexEvent( getTransition() == Transition.START, getCallID() == $event.callID ) 
> 		   or EmergencyActiveCallComplexEvent( getTransition() == Transition.START, getRadioID() == $event.radioID ))
> 	then
>         if (dlogger.isTraceEnabled()) dlogger.trace("Emergency Network Start No Active Call Rule: receiving {}, {}",$event, $predecessor);
> 		// action: create container, add the event to the container
> 		EmergencyActiveCallComplexEvent container = new EmergencyActiveCallComplexEvent($event);
> 		insert(container);
> 		delete($event); // ???	
>         if (dlogger.isTraceEnabled()) dlogger.trace("Emergency Network Start No Active Call Rule: after delete {}",$event);
> 		//actions: register new active call, new emergency call
> 		new ActiveCallSnapshot().addCall($event);
> 		final EmergencyEventSnapshot snapshot = new EmergencyEventSnapshot();
> 		snapshot.addEmergencyCall($event);
> 		//actions:  get preceding event and add it to trail 
> 		snapshot.add2Trail($predecessor);
>         if (dlogger.isTraceEnabled()) dlogger.trace("Emergency Network Start No Active Call Rule: exiting {}",container);
> end
> {code}
> and this is the classdump of this rule:
> {code:java}
> package com.mot.ssol.cep;
> import com.mot.ssol.cep.model.ComplexEventImpl;import com.mot.nsa.monitor.client.NetworkEvent;import com.mot.ssol.cep.model.PseudoActiveCallComplexEvent;import java.util.Date;import com.mot.nsa.monitor.client.CallEvent.ChannelStatus;import com.mot.ssol.cep.model.ControlCallComplexEvent;import com.mot.nsa.monitor.client.GaugeValue;import org.apache.commons.lang3.StringUtils;import com.mot.ssol.cep.TDMAResolver;import com.mot.ssol.cep.model.CEPEvent;import com.mot.ssol.cep.*;import com.mot.ssol.cep.model.InactiveCallComplexEvent;import org.kie.api.runtime.rule.QueryResults;import com.mot.ssol.cep.EventBuilder;import com.mot.nsa.monitor.client.CallEvent;import com.mot.ssol.cep.model.EmergencyNetworkComplexEvent;import com.mot.nsa.monitor.analyzer.AnalyzedEvent;import com.mot.ssol.cep.TrapSnapshot;import com.mot.nsa.monitor.cepm.mapper.RadioAliasMapper;import com.mot.nsa.monitor.MutableTimestampAware;import com.mot.ssol.cep.model.NetworkComplexEvent;import com.mot.ssol.cep.model.CallComplexEvent;import com.mot.ssol.cep.model.ControlNetworkComplexEvent;import java.util.concurrent.BlockingQueue;import com.mot.nsa.monitor.cepm.model.CallCepmEvent;import java.util.concurrent.LinkedBlockingQueue;import com.mot.ssol.cep.model.GroupRegistrationComplexEvent;import com.mot.nsa.monitor.cepm.mapper.GroupAliasMapper;import com.mot.ssol.cep.model.BusyComplexEventDecorator;import java.util.List;import com.mot.ssol.cep.model.ComplexEvent.Type;import com.mot.ssol.cep.EmergencyEventSnapshot;import com.mot.nsa.monitor.cepm.mapper.ZoneMapper;import com.mot.ssol.cep.model.NetworkComplexEventImpl;import com.mot.ssol.cep.model.ChannelHandle;import com.mot.nsa.monitor.cepm.StatisticModule;import com.mot.nsa.monitor.client.ClientEvent;import com.mot.nsa.monitor.client.RadioEvent;import com.mot.ssol.cep.model.CallComplexEventImpl;import com.mot.ssol.cep.model.ChannelCallComplexEvent;import org.kie.api.runtime.rule.QueryResultsRow;import com.mot.nsa.monitor.MutableTransitionAware;import com.mot.ssol.cep.model.RadioHandle;import com.mot.ssol.cep.ActiveCallSnapshot;import com.mot.nsa.monitor.TransitionAware.Transition;import org.drools.core.spi.KnowledgeHelper;import com.mot.ssol.cep.model.PseudoRadioRegistrationComplexEvent;import com.mot.ssol.cep.model.EmergencyActiveCallComplexEvent;import com.mot.nsa.monitor.cepm.model.NonCallEvent;import org.slf4j.Logger;import com.mot.ssol.cep.model.EmergencyComplexEventDecorator;import org.apache.commons.lang3.time.DateUtils;import com.mot.nsa.monitor.client.NetworkEventImpl;import com.mot.ssol.cep.CallEventSnapshot;import com.mot.ssol.cep.model.PendingComplexEvent;import com.mot.ssol.cep.model.RadioRegistrationComplexEvent;import com.mot.ssol.cep.model.ComplexEvent;import com.mot.nsa.monitor.client.CallEventImpl;import com.mot.ssol.cep.model.ActiveCallComplexEvent;import com.mot.nsa.monitor.cepm.model.CallCepmEventImpl;import com.mot.ssol.cep.model.PseudoCallComplexEvent;import org.drools.core.spi.KnowledgeHelper;import static com.mot.ssol.cep.ClearAll.clearAll;import static com.mot.ssol.cep.EndZoneCall.endZoneCall;import static com.mot.ssol.cep.Busies2End.busies2End;import static com.mot.ssol.cep.EndCallEvents.endCallEvents;import static com.mot.ssol.cep.Events2busy.events2busy;import static com.mot.ssol.cep.EndCall.endCall;import static com.mot.ssol.cep.Emergency2end.emergency2end;
> public class Rule_Emergency_Network_Start_No_Active_Call_Rule523993873 {
>     private static final long serialVersionUID = 510l;
> public static void defaultConsequence(KnowledgeHelper drools,  com.mot.ssol.cep.model.EmergencyNetworkComplexEvent $event, org.kie.api.runtime.rule.FactHandle $event__Handle__ , com.mot.ssol.cep.model.CallComplexEvent $predecessor, org.kie.api.runtime.rule.FactHandle $predecessor__Handle__ ,   org.slf4j.Logger dlogger  ) throws java.lang.Exception { org.kie.api.runtime.rule.RuleContext kcontext = drools;
>     if (dlogger.isTraceEnabled()) dlogger.trace("Emergency Network Start No Active Call Rule: receiving {}, {}",$event, $predecessor);
> 		// action: create container, add the event to the container
> 		EmergencyActiveCallComplexEvent container = new EmergencyActiveCallComplexEvent($event);
> 		drools.insert(container);
> 		{ drools.delete( $event__Handle__ ); }; // ???	
>         if (dlogger.isTraceEnabled()) dlogger.trace("Emergency Network Start No Active Call Rule: after delete {}",$event);
> 		//actions: register new active call, new emergency call
> 		new ActiveCallSnapshot().addCall($event);
> 		final EmergencyEventSnapshot snapshot = new EmergencyEventSnapshot();
> 		snapshot.addEmergencyCall($event);
> 		//actions:  get preceding event and add it to trail 
> 		snapshot.add2Trail($predecessor);
>         if (dlogger.isTraceEnabled()) dlogger.trace("Emergency Network Start No Active Call Rule: exiting {}",container);
> }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)



More information about the jboss-jira mailing list