customergauge/task-manager

4.0.2 2023-06-20 13:53 UTC

This package is auto-updated.

Last update: 2024-09-20 16:46:03 UTC


README

安装

composer require customergauge/task-manager

使用

执行任务

use CustomerGauge\TaskManager\Task;
use CustomerGauge\TaskManager\TaskManager;

class SimpleTask implements Task
{
    public function run(array $attributes) : array
    {
        echo "simple task";
    }
}

$taskManager = new TaskManager; // defaults to StopOnFailure strategy
$taskManager->add(new SimpleTask);

$taskManager->run([]);

// output: simple task 

失败时继续策略

use CustomerGauge\TaskManager\Task;
use CustomerGauge\TaskManager\TaskManager;
use CustomerGauge\TaskManager\Strategy\ContinueOnFailure;

class FirstTask implements Task
{
    public function run(array $attributes) : array
    {
        throw new Exception;
    }
}

class SecondTask implements Task
{
    public function run(array $attributes) : array
    {
        echo "second task";
    }
}

$taskManager = new TaskManager(new ContinueOnFailure);
$taskManager->add(new FirstTask)
    ->add(new SecondTask);

$taskManager->run([]);

// output: second task

回滚已执行任务

use CustomerGauge\TaskManager\Task;
use CustomerGauge\TaskManager\Reversible;
use CustomerGauge\TaskManager\TaskManager;
use CustomerGauge\TaskManager\Strategy\RollbackOnFailure;

class FirstTask implements Task, Reversible
{
    public function run(array $attributes) : array
    {
        echo "first task";
    }

    public function reverse(array $attributes)
    {
        echo "reverse first task";
    }
}

class SecondTask implements Task
{
    public function run(array $attributes) : array
    {
        throw new Exception;
    }
}

$taskManager = new TaskManager(new RollbackOnFailure);
$taskManager->add(new FirstTask)
    ->add(new SecondTask);

$taskManager->run([]);

/* 
output: 
    firt task
    reverse first task
*/

贡献

贡献总是受欢迎的,请查看我们的问题,看看您是否可以帮助解决。

许可证

任务管理库采用LGPLv3许可证。