public Task <object?> EvaluateAsync( string expression, Type returnType, ActivityExecutionContext context, CancellationToken cancellationToken) { var result = context.GetVariable(expression); return(Task.FromResult(result)); }
private static void ThrowErrorIfFirstRun(ActivityExecutionContext context) { var hasExecuted = context.GetVariable <bool>("HasExecuted"); if (!hasExecuted) { context.SetVariable("HasExecuted", true); throw new Exception("Something bad happened. Please retry workflow."); } }
public Task <object?> EvaluateAsync(string expression, Type returnType, ActivityExecutionContext context, CancellationToken cancellationToken) { var matches = rx.Matches(expression); foreach (Match match in matches) { var variable = match.Groups[1].Value; string replacement = match.Groups[0].Value; switch (variable) { case "correlationId": replacement = $"'{context.WorkflowExecutionContext.CorrelationId}'"; break; case "workflowDefinitionId": replacement = $"'{context.WorkflowInstance.DefinitionId}'"; break; case "workflowDefinitionVersion": replacement = $"{context.WorkflowInstance.DefinitionVersionId}"; break; case "workflowInstanceId": replacement = $"'{context.WorkflowInstance.Id}'"; break; default: if (context.HasVariable(variable)) { var value = context.GetVariable(variable); if (value is not null) { replacement = IsNumber(value)? $"{value}" : $"'{value}'"; } else { replacement = "NULL"; } } break; } expression = expression.Replace(match.Groups[0].Value, replacement); } return(Task.FromResult(expression.Parse(returnType))); }
/// <summary> /// Returns the control ID of the active call session in the workflow if the specified call control ID is null or empty. /// </summary> public static string GetFromNumber(this ActivityExecutionContext context, string?fromNumber) { if (!string.IsNullOrWhiteSpace(fromNumber)) { return(fromNumber); } fromNumber = context.GetVariable <string>(FromNumberVariableName); if (!string.IsNullOrWhiteSpace(fromNumber)) { return(fromNumber); } throw new MissingFromNumberException("No From Number specified"); }
/// <summary> /// Returns the control ID of the active call session in the workflow if the specified call control ID is null or empty. /// </summary> public static string GetCallControlId(this ActivityExecutionContext context, string?callControlId) { if (!string.IsNullOrWhiteSpace(callControlId)) { return(callControlId); } callControlId = context.GetVariable <string>(CallControlIdVariableName); if (!string.IsNullOrWhiteSpace(callControlId)) { return(callControlId); } throw new MissingCallControlIdException("No Call Control ID specified"); }
private int GetCurrentCount(ActivityExecutionContext context) => context.GetVariable <int>("CurrentCount");
public static string?GetCallerNumber(this ActivityExecutionContext context) => context.GetVariable <string>(CallerNumberVariableName);
private int GetCounter(ActivityExecutionContext context) => context.GetVariable <int>(CounterVariableName);