public override bool HandleInternalTransitionEvent(InternalTransitionEvent ite) { if (!(ite is ReceiveMessageTaskEvent)) throw new Exception("Invalid event type"); ReceiveMessageTaskEvent ev = (ReceiveMessageTaskEvent)ite; //ok, retrieve message data and complete the task... if (ev.MessageCorrelationId != null && !string.Equals(ev.MessageCorrelationId, this.MessageCorrelationId)) throw new ApplicationException(string.Format("Task {0}: invalid message correlation id: {1} (expected: {2})", CorrelationId, ev.MessageCorrelationId, this.MessageCorrelationId)); UpdateTaskData(ev.MessageData); Context.EnvironmentContext.CorrelationIdResolver.RemoveMapping(this.MessageCorrelationId, this.CorrelationId); OnTaskCompleted(); return true; }
public override bool HandleInternalTransitionEvent(InternalTransitionEvent ite) { base.HandleInternalTransitionEvent(ite); if (ite is TimerExpiredEvent) { TimerExpiredEvent ev = (TimerExpiredEvent)ite; if (Context.Status == TransitionStatus.ENABLED || Context.Status == TransitionStatus.STARTED) { _actualExpiration = DateTime.Now; OnTaskCompleted(); return true; } } return false; }
/// <summary> /// Default implementation of internal transition event handler. /// Currently it handles TaskCompletedNotification and TransitionSelectedNotification. /// Override it to handle other event types. /// </summary> /// <param name="ite"></param> public virtual bool HandleInternalTransitionEvent(InternalTransitionEvent ite) { if (ite is TaskCompletedNotification) { DefaultHandleTaskCompletedEvent((TaskCompletedNotification)ite); return true; } return false; }
public override bool HandleInternalTransitionEvent(InternalTransitionEvent ite) { return base.HandleInternalTransitionEvent(ite); }
public override bool HandleInternalTransitionEvent(InternalTransitionEvent ite) { if (ite is TaskCompletedNotification) { TaskCompletedNotification ev = (TaskCompletedNotification)ite; if (Context.Status != TransitionStatus.ENABLED && Context.Status != TransitionStatus.STARTED) { log.Info("Invalid task status - ignoring the notification"); return false; } this.CompletedBy = ev.CompletedBy; if (ev.TaskData != null) { UpdateTaskData(ev.TaskData); } ValidateOutputData(); Context.EnvironmentContext.WorklistService.WorkItemCompleted(CorrelationId); OnTaskCompleted(); return true; } else if (ite is TransitionSelectedNotification) { TransitionSelectedNotification ts = (TransitionSelectedNotification)ite; if (Context.Status == TransitionStatus.ENABLED) { Context.TransitionStarted(this.CorrelationId); return true; } return false; } else { return base.HandleInternalTransitionEvent(ite); } }