public virtual void OnCauseInvoked(OperationContext context, QualifiedName causeName)
{
lock (DataLock)
{
Transition transition = null;
try
{
transition = BeginTransitionForCause(context, causeName);
OnBeforeTransition(context, transition, causeName);
UpdateState(transition.ToState, transition);
EndTransition(context, transition, causeName);
ReportAuditEvent(context, transition, causeName, null);
OnAfterTransition(context, transition, causeName);
}
catch (Exception e)
{
ReportAuditEvent(context, transition, causeName, e);
throw ServiceResultException.Create(StatusCodes.BadMethodInvalid, e, e.Message);
}
}
}