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(); } }
public virtual void HandleTaskExecEvent(TaskExecEvent ev) { if (ev.ParentTaskInstanceId != this.InstanceId) { throw new Exception("Invalid ParentTaskInstanceId"); } }
private void ValidateMessage(TaskExecEvent ev) { ValidateMessage((ProcessMessage)ev); if (string.IsNullOrEmpty(ev.ParentTaskInstanceId) && ev.FromTaskInstanceId != ev.FromProcessInstanceId) { throw new Exception("Missing parent task id"); } }
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); }); }
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); }
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(); } } } }
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); }); }
protected void DeliverEvent(TaskExecEvent ev) { _runner.DeliverTaskExecEvent(ev); }