kkirsz/process-manager

进程管理器帮助您查看长时间运行的进程的状态

安装量: 5,808

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 20

类型:pimcore-bundle

2.7.1 2020-08-26 09:35 UTC

README

寻找当前稳定版(版本 1)?请参阅 https://github.com/dpfaffenbauer/ProcessManager/tree/1.1

要求

  • Pimcore 5

Software License

进程管理器插件可以帮助您跟踪所有“长时间运行的作业”。它添加了一个漂亮的GUI和一个新的仪表板插件。您还可以创建可执行文件,并一键运行它们。(计划集成类似于CRON的语法以处理重复任务)

使用进程管理器的插件

入门

  • 使用composer安装 composer require dpfaffenbauer/process-manager:^2.0
  • 通过命令行(或在pimcore扩展管理器内部)启用:bin/console pimcore:bundle:enable ProcessManagerBundle
  • 通过命令行(或在pimcore扩展管理器内部)安装:bin/console pimcore:bundle:install ProcessManagerBundle
  • 重新加载Pimcore
  • 打开工具 -> 进程管理器

集成到您的任务中

创建新的进程

$processFactory = $container->get('process_manager.factory.process');
$process = $processFactory->createProcess(
    sprintf(
        'Process (%s): %s',
        $date->formatLocalized('%A %d %B %Y'),
        'Special Long Running Task'
    ),                                                  //Name
    'special_task',                                     //Type
    'Message',                                          //Message Text
    100,                                                //Total Steps
    0                                                   //Current Step
);
$process->save();                                       //Save

推进进度

$process->progress();
$process->save();

完成进度

$process->setProgress($process->getTotal());
$process->save();

使用进程记录器

进程管理器还提供了记录您的进度中确切发生的事情的能力。

$logger = $container->get('process_manager.logger');

//Logs a emergency message
$logger->emergency($process, 'Total of 100 entries found');

//Logs a alert message
$logger->alert($process, 'Total of 100 entries found');

//Logs a critical message
$logger->critical($process, 'Total of 100 entries found');

//Logs a error message
$logger->error($process, 'Total of 100 entries found');

//Logs a warning message
$logger->warning($process, 'Total of 100 entries found');

//Logs a notice message
$logger->notice($process, 'Total of 100 entries found');

//Logs a info message
$logger->info($process, 'Total of 100 entries found');

//Logs a debug message
$logger->debug($process, 'Total of 100 entries found');

报告

您还可以进一步处理日志以创建一个漂亮的报告。为此,您需要创建一个新服务并实现接口 ProcessManagerBundle\Report\ReportInterface。Import Definitions提供了一个示例实现 Import Definition Report

添加新的进程类型

  • 向您的Bundle添加一个新类并实现 ``ProcessManagerBundle\Process\ProcessInterface``` 接口
  • 向您的Bundle添加一个新的表单类型并向其中添加所需的字段
  • 添加一个带有标签 process_manager.process 的新服务
      import_definition.process_manager.process:
          class: Wvision\Bundle\ImportDefinitionsBundle\ProcessManager\ImportDefinitionProcess
          tags:
          - { name: 'process_manager.process', type: 'importdefinition', form-type: 'Wvision\Bundle\ImportDefinitionsBundle\Form\Type\ProcessManager\ImportDefinitionsType' }
  • 这样就完成了。(您仍然需要在您的Bundle内部自行处理进程创建,其中没有任何魔法)

可停止的进程

您可以通过管理员面板实现您的进程,使其可以被用户停止。您需要将进程的停止标志设置为true,并将状态设置为 ProcessManagerBundle::STATUS_RUNNING 以显示停止按钮

$process->setStoppable(true);
$process->setStatus(ProcessManagerBundle::STATUS_RUNNING);
$process->save();

此外,您还需要实现进程的停止逻辑。跟踪进程状态,并在设置为 ProcessManagerBundle::STATUS_STOPPING 时停止您的进程

$process = $this->processRepository->find($processId);
if ($process->getStatus() == ProcessManagerBundle::STATUS_STOPPING) {
    // Here goes your process stop and cleanup logic
    ...
    
    $process->setStatus(ProcessManagerBundle::STATUS_STOPPED); // remember to set the status to stopped.
    $process->save();    
}

版权和许可证

版权: lineofcode.at 关于许可详情,请访问 LICENSE.md

Interface Interface Interface