Пример #1
0
 public override void HandleTaskExecEvent(TaskExecEvent ev)
 {
     base.HandleTaskExecEvent(ev);
     if (ev is TaskEnabled)
     {
         Handle((TaskEnabled)ev);
     }
     else if (ev is TaskSelected)
     {
         Handle((TaskSelected)ev);
     }
     else if (ev is TaskCompleted)
     {
         Handle((TaskCompleted)ev);
     }
     else if (ev is TaskFailed)
     {
         Handle((TaskFailed)ev);
     }
     else if (ev is TaskCancelled)
     {
         Handle((TaskCancelled)ev);
     }
     else
     {
         throw new Exception();
     }
 }
Пример #2
0
 public virtual void HandleTaskExecEvent(TaskExecEvent ev)
 {
     if (ev.ParentTaskInstanceId != this.InstanceId)
     {
         throw new Exception("Invalid ParentTaskInstanceId");
     }
 }
Пример #3
0
 private void ValidateMessage(TaskExecEvent ev)
 {
     ValidateMessage((ProcessMessage)ev);
     if (string.IsNullOrEmpty(ev.ParentTaskInstanceId) && ev.FromTaskInstanceId != ev.FromProcessInstanceId)
     {
         throw new Exception("Missing parent task id");
     }
 }
Пример #4
0
 internal void DeliverTaskExecEvent(TaskExecEvent ev)
 {
     if (string.IsNullOrEmpty(ev.ParentTaskInstanceId))
     {
         log.Info("event has no parent: {0}", ev);
         return; //TODO handle process-level events
     }
     UpdateTask(ev.ParentTaskInstanceId, ti =>
     {
         ti.HandleTaskExecEvent(ev);
     });
 }
Пример #5
0
 public override void HandleTaskExecEvent(TaskExecEvent ev)
 {
     if (ev is InterTaskMessage)
     {
         InterTaskMessage tm = ev as InterTaskMessage;
         if (tm.ToMailbox != this.Mailbox)
         {
             return;
         }
         //var sr = Context.GetService<IMessageCorrelationRegistry>();
         //sr.Unsubscribe(this.Mailbox, this.InstanceId);
     }
     base.HandleTaskExecEvent(ev);
 }
Пример #6
0
 public override void HandleTaskExecEvent(TaskExecEvent ev)
 {
     base.HandleTaskExecEvent(ev);
     if (ev is TaskTimerEvent)
     {
         if (this.Status == TaskStatus.Enabling || this.Status == TaskStatus.Enabled || this.Status == TaskStatus.Selected)
         {
             if (DateTime.Now + this.Delay <= DateTime.Now)
             {
                 Complete();
             }
         }
     }
 }
Пример #7
0
 internal void DeliverTaskExecEvent(TaskExecEvent ev)
 {
     if (string.IsNullOrEmpty(ev.ParentTaskInstanceId))
     {
         if (ev.FromTaskInstanceId == ev.FromProcessInstanceId)
         {
             //process-level events
             UpdateTask(ev.FromProcessInstanceId, ti =>
             {
                 var pi = ti as ProcessInstance;
                 if (pi == null)
                 {
                     throw new Exception("Process instance expected for id=" + ev.FromProcessInstanceId);
                 }
                 if (ev is TaskCompleted)
                 {
                     MessageBus.Notify(new TaskExecutionEvents.Process.ProcessCompleted {
                         InstanceId   = ev.FromProcessInstanceId,
                         DefinitionId = pi.ProcessDefinitionId,
                         Timestamp    = DateTime.Now
                     });
                 }
                 else if (ev is TaskFailed)
                 {
                     MessageBus.Notify(new TaskExecutionEvents.Process.ProcessFailed
                     {
                         InstanceId   = ev.FromProcessInstanceId,
                         DefinitionId = pi.ProcessDefinitionId,
                         Timestamp    = DateTime.Now
                     });
                 }
                 else if (ev is TaskCancelled)
                 {
                     MessageBus.Notify(new TaskExecutionEvents.Process.ProcessCancelled
                     {
                         InstanceId   = ev.FromProcessInstanceId,
                         DefinitionId = pi.ProcessDefinitionId,
                         Timestamp    = DateTime.Now
                     });
                 }
                 else if (ev is TaskEnabled)
                 {
                     MessageBus.Notify(new TaskExecutionEvents.Process.ProcessStarted
                     {
                         InstanceId   = ev.FromProcessInstanceId,
                         DefinitionId = pi.ProcessDefinitionId,
                         Timestamp    = DateTime.Now
                     });
                 }
                 else
                 {
                     throw new Exception("Unexpected event " + ev.GetType().Name);
                 }
             });
         }
         else
         {
             log.Warn("Event has no parent but sender task {0} is not process instance {1}", ev.FromTaskInstanceId, ev.FromProcessInstanceId);
         }
         return; //TODO handle process-level events
     }
     UpdateTask(ev.ParentTaskInstanceId, ti =>
     {
         ti.HandleTaskExecEvent(ev);
     });
 }
Пример #8
0
 protected void DeliverEvent(TaskExecEvent ev)
 {
     _runner.DeliverTaskExecEvent(ev);
 }