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);
     }
 }