/// <summary> /// Adds a workflow variable to the TriggerParam variables collection. /// </summary> /// <typeparam name="TVariable"></typeparam> /// <param name="triggerParam"></param> /// <param name="value"></param> /// <returns></returns> public static TriggerParam AddVariableWithKey <TVariable>( this TriggerParam triggerParam, WorkflowVariableBase value ) { return(triggerParam.AddVariable(KeyBuilder.ToKey(typeof(TVariable)), value)); }
/// <summary> /// Returns the workflow variable from the TransitionContext. /// </summary> /// <typeparam name="TVariable"></typeparam> /// <param name="transitionContext"></param> /// <returns></returns> public static TVariable ReturnVariable <TVariable>( this TransitionContext transitionContext ) where TVariable : WorkflowVariableBase { return(transitionContext.GetVariable <TVariable>( KeyBuilder.ToKey(typeof(TVariable)) )); }
internal static WorkflowVariable Create(Workflow workflow, WorkflowVariableBase variable) { return(new WorkflowVariable { WorkflowId = workflow.Id, Workflow = workflow, Type = KeyBuilder.ToKey(variable.GetType()), Content = JsonConvert.SerializeObject(variable) }); }
internal void AddVariable(WorkflowVariableBase variable) { var type = KeyBuilder.ToKey(variable.GetType()); var existing = this.WorkflowVariables.FirstOrDefault(v => v.Type == type); if (existing != null) { existing.UpdateContent(variable); return; } this.WorkflowVariables.Add(WorkflowVariable.Create(this, variable)); }
private void EnsureWorkflowVariables(Workflow workflow, TriggerParam param) { if (workflow.WorkflowVariables.Count > 0) { foreach (var workflowVariable in workflow.WorkflowVariables) { var type = KeyBuilder.FromKey(workflowVariable.Type); var variable = JsonConvert.DeserializeObject(workflowVariable.Content, type); var workflowVariableBase = variable as WorkflowVariableBase; if (workflowVariableBase != null) { var key = KeyBuilder.ToKey(type); if (param.Variables.ContainsKey(key)) { param.Variables[key] = variable as WorkflowVariableBase; } else { param.Variables.Add(key, variable as WorkflowVariableBase); } } } } }
/// <summary> /// Checks whether the workflow variable is present in the TransitionContext. /// </summary> /// <typeparam name="TVariable"></typeparam> /// <param name="transitionContext"></param> /// <returns></returns> public static bool HasVariable <TVariable>( this TransitionContext transitionContext ) { return(transitionContext.ContainsKey(KeyBuilder.ToKey(typeof(TVariable)))); }