How to create an executor

Pipeline Step Executor

Each pipeline step has one executor, which implements the interface \TechDivision\ProcessPipelines\Api\ExecutorInterface.

Abstract Executors

There are some abstract executors, which should be extended by your executor.

TechDivision\ProcessPipelines\Model\Executor\AbstractExecutor

Base executor, which already implements methods for logging and warnings

TechDivision\ProcessPipelines\Model\Executor\AbstractShellExecutor

Shell executor for run CLI and bash scripts.

Concrete Executors

There are some ready-to-use executors.

TechDivision\ProcessPipelines\Model\Executor\DropCache

Cache invalidation executor

TechDivision\ProcessPipelines\Model\Executor\Reindex

Reindex executor

Usage

To use these executors, you need to define them as following in your pipeline.xml.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:TechDivision/ProcessPipelines/etc/pipeline.xsd">
    <pipeline name="example_pipeline" description="Example pipeline for reindex and drop cache">
        <conditions>
            <pipeline_condition type="TechDivision\ProcessPipelines\Helper\Condition\Pipeline\NoAutoSpawn" description="Disable auto spawning"/>
        </conditions>
        <step name="example_reindex" executorType="TechDivision\ProcessPipelines\Model\Executor\Reindex" sortOrder="10" description="" >
            <arguments>
                <argument key="indexes" value="catalog_category_product,catalog_product_category,catalogsearch_fulltext" />
            </arguments>
        </step>
        <step name="example_cache_drop" executorType="TechDivision\ProcessPipelines\Model\Executor\DropCache" sortOrder="20" description="" >
            <arguments>
                <argument key="caches" value="collections,full_page,block_html" />
            </arguments>
            <conditions>
                <step_condition type="TechDivision\ProcessPipelines\Helper\Condition\Step\PreviousStepsCompleted" description="Run after the first step"/>
            </conditions>
        </step>
    </pipeline>
</config>

Testing executors on a local environment (DEV)

While developing a new executor it is necessary to execute them without waiting for heartbeat and without having some runner up and running (see [Cron and Consumer/Runner](./system-cron-consumer.md)). Therefore we introduce the CLI command pipeline:dev:run:executor.

Usage

Run a customer executor in the same way as the runner would do.

bin/magento pipeline:dev:run:executor --arguments='{\"arg1\": \"value-1\", \"arg2\": 2}' --pipeline-id=102 --step-id=1562 '\MyCompany\MyModule\Model\Executor\DoSomeThing'

The options --arguments, --pipeline-id and --step-id are optional. Sometimes there are dependencies inside your executor for these values.