Стратегии поддержки
Движок 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;
}
}
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.