public IFluentWorkflowActionItem AfterLambda(string name, string positionalName = "") { Ensure.NotNullAndEmpty(name, nameof(name)); AddParent(Identity.Lambda(name, positionalName)); return(this); }
/// <summary> /// Find the parent lambda by given parameters. Returns null if not found. /// </summary> /// <param name="workflowItem"></param> /// <param name="name"></param> /// <param name="positionalName"></param> /// <returns></returns> public static ILambdaItem ParentLambda(this IWorkflowItem workflowItem, string name, string positionalName = "") { Ensure.NotNull(workflowItem, "workflowItem"); return(workflowItem.ParentLambdas.OfType <LambdaItem>() .FirstOrDefault(a => a.Has(Identity.Lambda(name, positionalName)))); }
/// <summary> /// Jump to lambda function. Cause the workflow to fail if target activity is already active /// </summary> /// <param name="name">Lambda name.</param> /// <param name="postionalName">Lambda's postional name</param> /// <returns></returns> public JumpWorkflowAction ToLambda(string name, string postionalName = "") { Ensure.NotNullAndEmpty(name, nameof(name)); var lambdaItem = _workflowItems.LambdaItem(Identity.Lambda(name, postionalName)); return(WorkflowAction.JumpTo(_triggerItem, lambdaItem)); }
/// <summary> /// Schedule the lambda function. /// </summary> /// <param name="lambdaName">Lambda function name</param> /// <param name="positionalName">Positional name for lambda. It can be used to schedule same lambda multiple times in a workflow.</param> /// <returns></returns> protected IFluentLambdaItem ScheduleLambda(string lambdaName, string positionalName = "") { Ensure.NotNullAndEmpty(lambdaName, nameof(lambdaName)); var lamdbaItem = new LambdaItem(Identity.Lambda(lambdaName, positionalName), this); _allWorkflowItems.Add(lamdbaItem); return(lamdbaItem); }
internal static ILambdaItem First(this IEnumerable <ILambdaItem> items, string name, string positionalName = "") { Ensure.NotNull(items, nameof(items)); return(items.OfType <LambdaItem>().First(t => t.Has(Identity.Lambda(name, positionalName)))); }