예제 #1
0
 /// <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));
 }
예제 #2
0
 /// <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))
                ));
 }
예제 #3
0
 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)
     });
 }
예제 #4
0
        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));
        }
예제 #5
0
 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);
                 }
             }
         }
     }
 }
예제 #6
0
 /// <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))));
 }