diff --git a/drools-core/src/main/java/org/drools/core/event/ProcessEventSupport.java b/drools-core/src/main/java/org/drools/core/event/ProcessEventSupport.java index f9754fbd793..f1035792ad7 100644 --- a/drools-core/src/main/java/org/drools/core/event/ProcessEventSupport.java +++ b/drools-core/src/main/java/org/drools/core/event/ProcessEventSupport.java @@ -20,6 +20,7 @@ import java.util.Map; import org.drools.core.common.InternalKnowledgeRuntime; +import org.drools.core.event.rule.impl.ProcessDataChangedEventImpl; import org.kie.api.event.process.MessageEvent; import org.kie.api.event.process.ProcessCompletedEvent; import org.kie.api.event.process.ProcessEventListener; @@ -29,6 +30,7 @@ import org.kie.api.event.process.ProcessStartedEvent; import org.kie.api.event.process.ProcessVariableChangedEvent; import org.kie.api.event.process.SLAViolatedEvent; +import org.kie.api.event.process.ProcessDataChangedEvent; import org.kie.api.event.process.SignalEvent; import org.kie.api.runtime.KieRuntime; import org.kie.api.runtime.process.NodeInstance; @@ -179,6 +181,13 @@ public void fireOnMessage(final ProcessInstance instance, } } + public void fireAfterProcessDataChanged(final ProcessInstance instance, KieRuntime kruntime) { + if ( hasListeners() ) { + final ProcessDataChangedEvent event = new ProcessDataChangedEventImpl(instance, kruntime); + notifyAllListeners( event, ( l, e ) -> l.onProcessDataChangedEvent( e ) ); + } + } + public void reset() { this.clear(); } diff --git a/drools-core/src/main/java/org/drools/core/event/rule/impl/ProcessDataChangedEventImpl.java b/drools-core/src/main/java/org/drools/core/event/rule/impl/ProcessDataChangedEventImpl.java new file mode 100644 index 00000000000..10077280e51 --- /dev/null +++ b/drools-core/src/main/java/org/drools/core/event/rule/impl/ProcessDataChangedEventImpl.java @@ -0,0 +1,36 @@ +/* + * Copyright 2024 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.drools.core.event.rule.impl; + +import org.drools.core.event.ProcessEvent; +import org.kie.api.event.process.ProcessDataChangedEvent; +import org.kie.api.runtime.KieRuntime; +import org.kie.api.runtime.process.ProcessInstance; + +public class ProcessDataChangedEventImpl extends ProcessEvent implements ProcessDataChangedEvent { + + private static final long serialVersionUID = 510l; + + public ProcessDataChangedEventImpl(final ProcessInstance instance, KieRuntime kruntime ) { + super( instance, kruntime ); + } + + public String toString() { + return "==>[ProcessDataChangedEventImpl(name=" + getProcessInstance().getProcessName() + "; id=" + getProcessInstance().getProcessId() + ")]"; + } + +}