public async Task Handle(RequestingWorkflowInstance notification, CancellationToken cancellationToken)
    {
        var workflowBlueprint = notification.WorkflowBlueprint;
        var activityData      = notification.WorkflowInstance.ActivityData;

        foreach (var entry in activityData.Where(x => x.Key != workflowBlueprint.Id))
        {
            var activityId        = entry.Key;
            var activityBlueprint = workflowBlueprint.GetActivity(activityId) !;
            var context           = new ActivityStateFilterContext(entry.Value, activityBlueprint);

            foreach (var filter in _filters)
            {
                await filter.ApplyAsync(context);
            }
        }
    }
    protected override void Apply(ActivityStateFilterContext context)
    {
        // We're only interested in our StoreUser activity.
        if (context.ActivityBlueprint.Type != nameof(StoreUser))
        {
            return;
        }

        // Redact the password field.
        if (context.ActivityData["User"] is User user)
        {
            context.ActivityData["User"] = user with {
                Password = "******"
            }
        }
        ;
    }
Example #3
0
 protected virtual Task ApplyAsync(ActivityStateFilterContext context)
 {
     Apply(context);
     return(Task.CompletedTask);
 }
Example #4
0
 protected virtual void Apply(ActivityStateFilterContext context)
 {
 }
Example #5
0
 async ValueTask IActivityStateFilter.ApplyAsync(ActivityStateFilterContext context) => await ApplyAsync(context);