Перейти к основному содержимому

Стратегии поддержки

Движок workflow предоставляет несколько разных способов определения того, какие сущности поддерживаются настроенным workflow.

Важно: различные способы конфигурации нельзя комбинировать — необходимо выбрать только один.

Supports

Самый простой способ — использовать ключ supports. Можно указать одно имя класса сущности или массив имён классов.

Примеры конфигурации
   supports: Pimcore\Model\DataObject\Product  

   supports:  
- Pimcore\Model\DataObject\Product
- Pimcore\Model\DataObject\ProductCategory

Стратегия поддержки через выражение

Стратегию выражения следует использовать, если workflow должен применяться к сущности только при определённых условиях. Можно задать Symfony-выражение — workflow будет применён только если выражение истинно.

Пример конфигурации

В приведённом примере workflow применяется только к продуктам, у которых атрибут "productType" равен "article".

   support_strategy:  
type: expression
arguments:
- Pimcore\Model\DataObject\Product
- "subject.getProductType() == 'article'"

Пользовательская стратегия поддержки

Если требуется очень специфическая логика, можно добавить сервис, реализующий интерфейс Symfony\Component\Workflow\SupportStrategy\WorkflowSupportStrategyInterface.

Пример конфигурации
   support_strategy:  
service: App\Workflow\SupportStrategy

Пример реализации (нуждается в регистрации в контейнере сервисов)
<?php  
namespace App\Workflow;

use Symfony\Component\Workflow\SupportStrategy\WorkflowSupportStrategyInterface;
use Symfony\Component\Workflow\WorkflowInterface;

class SupportStrategy implements WorkflowSupportStrategyInterface
{
public function supports(WorkflowInterface $workflow, object $subject): bool
{
if ($subject instanceof \Pimcore\Model\DataObject\Test) {
return true;
}

return false;
}
}


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.