/* * Copyright 2016 the original author or authors. * * 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.springframework.statemachine.trigger; import org.springframework.statemachine.transition.Transition; /** * {@code Trigger} is the cause of the {@link Transition}. Cause is usually an * event but can be some other signal or a change in some condition. * * @author Janne Valkealahti * * @param <S> the type of state * @param <E> the type of event */ public interface Trigger<S,E> { /** * Evaluate trigger. * * @param context the context * @return true, triggers is fired, false otherwise */ boolean evaluate(TriggerContext<S, E> context); /** * Adds the trigger listener. * * @param listener the listener */ void addTriggerListener(TriggerListener listener); /** * Gets the event associated with this trigger. It is possible that there * are no event association. * * @return the event */ E getEvent(); /** * Arm a trigger. After trigger has been armed a {@link TriggerListener} * may receive events. */ void arm(); /** * Disarm a trigger. After trigger has been disarmed a {@link TriggerListener} * will not receive events. */ void disarm(); }