private void InvokeTrigger(WorkflowAgent agent, WorkflowTrigger trigger) { _log.InfoFormat("Received trigger invocation on hosted workflow {0}: {1}.{2}", agent.Id, trigger.MachineContext, trigger.TriggerName ?? "none"); // trigger is already in the trigger table. agent.Bump(); }
public void End() { var fire = new WorkflowTrigger { Route = TriggerRoutes.EndRoute, InstanceTarget = Id, }; StoreWorkflowTrigger(fire); }
public void Nap(TimeSpan ts) { var fire = new WorkflowTrigger { Route = TriggerRoutes.NapRoute, InstanceTarget = Id }; StoreWorkflowTrigger(fire); BroadcastTrigger(fire); }
private void InternalDistributeTrigger(CancellationToken ct, WorkflowTrigger wft) { if (_agents.ContainsKey(wft.InstanceTarget)) { DistributeWorkflowTriggers(wft, ct, null); } else { _broadcaster.Send(wft, "_"); } }
private void FireTriggerJob(CancellationToken ct, FireWorkflowTriggerJob wftj) { var wft = new WorkflowTrigger { InstanceTarget = wftj.Instance, MachineContext = wftj.Context, TriggerName = wftj.Trigger, TriggerId = Guid.NewGuid().ToString() }; InternalDistributeTrigger(ct, wft); }
public void Fire(string context, string trigger) { var fire = new WorkflowTrigger { TriggerName = trigger, InstanceTarget = Id, MachineContext = context }; StoreWorkflowTrigger(fire); BroadcastTrigger(fire); }
private void FireRetry(CancellationToken ct, WorkflowStateMachineRetry wfsmr) { var wft = new WorkflowTrigger { InstanceTarget = wfsmr.Id, TriggerId = Guid.NewGuid().ToString(), TriggerName = CommonTriggers.StateRetryTrigger, MachineContext = wfsmr.Machine, Route = string.Empty, }; InternalDistributeTrigger(ct, wft); }
public void EndWorkflow(string agentId) { _dblog.InfoFormat("PluginTemplate host end workflow on instance {0}: machine {1}: {2}.", agentId); var fire = new WorkflowTrigger { Id = Guid.NewGuid().ToString(), Route = TriggerRoutes.EndRoute, InstanceTarget = agentId, }; InternalFireOnHostedWorkflow(agentId, fire); }
/// <summary> /// PluginTemplate wants to fire a trigger. /// </summary> /// <param name="agentId"> </param> /// <param name="machine"> </param> /// <param name="trigger"> </param> /// <param name="msg"> </param> public void FireOnHostedWorkflow(string agentId, string machine, string trigger) { _dblog.InfoFormat("PluginTemplate host firing on instance {0}: machine {1}: {2}.", agentId, machine, trigger); var fire = new WorkflowTrigger { TriggerName = trigger, InstanceTarget = agentId, MachineContext = machine, Route = TriggerRoutes.FireRoute, Id = Guid.NewGuid().ToString() }; InternalFireOnHostedWorkflow(agentId, fire); }
private void InternalFireOnHostedWorkflow(string agentId, WorkflowTrigger fire) { _triggers.Store(fire); if (_agents.ContainsKey(agentId)) { _agents[agentId].Bump(); } else { _log.WarnFormat( "Attempt to fire on hosted workflow {0} that isn't hosted here, redirecting to broadcast.", agentId); _broadcaster.Send(fire, "_"); } }
private void BroadcastTrigger(WorkflowTrigger trigger) { _sender.Send(trigger, string.Empty); }
public void StoreWorkflowTrigger(WorkflowTrigger wft) { _triggers.CreateNew(wft); }