protected virtual void OnBeforeTransition(OperationContext context, Transition transition, QualifiedName cause)
{
// raise a notification that a transition is about to occur.
if (m_TransitionInitiated != null)
{
StateMachineTransitionEventArgs args = new StateMachineTransitionEventArgs(transition.FromState.BrowseName, transition.ToState.BrowseName, cause);
m_TransitionInitiated(context, this, args);
if (args.Cancel)
{
throw ServiceResultException.Create(StatusCodes.Bad, "Transition to State '{0}' was cancelled because: '{1}'.", transition.ToState.DisplayName, args.CancelReason);
}
}
}