Pipelines

Pipelines a useful feature to hook into varios events like node saved, node created, etc.

 

Create a hook

There are many pipelines to hook into. Every hook is a class that derives from the specific pipeline interface. 

Add the newly created hook class to the services.

 

services.AddTransient<INodeVersionSavedPipeline, NodeVersionSavedAddToEvents>();

 

The hook can use dependency injection to inject other services.

A example implementation can look like this:

 
public class NodeVersionSavedAddToEvents : INodeVersionSavedPipeline
{    
    public NodeVersionSavedAddToEvents()
    {
    }
    
    public void Execute(NodeVersionSavedPipelineArgs args)
    {
        if (args.Version == null || args.Node == null)
        {
            return;
        }
        
       //add you logic
    }
}

Pipeline Executors

Every pipeline has it's Pipeline Executor that derived from IPipelineExecutor. This is important to list the pipeline on the Pipeline administration view.

It's possible to create own executors to provide others to hook into. Eg.:

public class NodeVersionSavedExecutor : IPipelineExecutor
{
    private readonly IEnumerable<INodeVersionSavedPipeline> _pipelines;

    public NodeVersionSavedExecutor(IEnumerable<INodeVersionSavedPipeline> pipelines)
    {
        _pipelines = pipelines;
    }

    public void Run(NodeVersionSavedPipelineArgs args)
    {
        foreach (var groupResolving in _pipelines)
        {
            groupResolving.Execute(args);
        }
    }
    
    public string GetKey()
    {
        return "Node Version Saved";
    }

    public string GetCategory()
    {
        return "Content / Media";
    }
    
    public IEnumerable<object> GetPipelines()
    {
        return _pipelines;
    }
}

Add the pipeline executor class to the services.

 

services.AddTransient<NodeVersionSavedExecutor, NodeVersionSavedExecutor>();