class Workflow

Same name and namespace in other branches
  1. 11.x core/modules/workflows/src/Entity/Workflow.php \Drupal\workflows\Entity\Workflow
  2. 10 core/modules/workflows/src/Entity/Workflow.php \Drupal\workflows\Entity\Workflow
  3. 9 core/modules/workflows/src/Entity/Workflow.php \Drupal\workflows\Entity\Workflow
  4. 8.9.x core/modules/workflows/src/Entity/Workflow.php \Drupal\workflows\Entity\Workflow

Defines the workflow entity.

Attributes

#[ConfigEntityType(id: 'workflow', label: new TranslatableMarkup('Workflow'), label_collection: new TranslatableMarkup('Workflows'), label_singular: new TranslatableMarkup('workflow'), label_plural: new TranslatableMarkup('workflows'), config_prefix: 'workflow', entity_keys: [ 'id' => 'id', 'label' => 'label', 'uuid' => 'uuid', ], handlers: [ 'access' => WorkflowAccessControlHandler::class, 'list_builder' => WorkflowListBuilder::class, 'form' => [ 'add' => WorkflowAddForm::class, 'edit' => WorkflowEditForm::class, 'delete' => WorkflowDeleteForm::class, 'add-state' => WorkflowStateAddForm::class, 'edit-state' => WorkflowStateEditForm::class, 'delete-state' => WorkflowStateDeleteForm::class, 'add-transition' => WorkflowTransitionAddForm::class, 'edit-transition' => WorkflowTransitionEditForm::class, 'delete-transition' => WorkflowTransitionDeleteForm::class, ], 'route_provider' => [ 'html' => AdminHtmlRouteProvider::class, ], ], links: [ 'add-form' => '/admin/config/workflow/workflows/add', 'edit-form' => '/admin/config/workflow/workflows/manage/{workflow}', 'delete-form' => '/admin/config/workflow/workflows/manage/{workflow}/delete', 'add-state-form' => '/admin/config/workflow/workflows/manage/{workflow}/add_state', 'add-transition-form' => '/admin/config/workflow/workflows/manage/{workflow}/add_transition', 'collection' => '/admin/config/workflow/workflows', ], admin_permission: 'administer workflows', label_count: [ 'singular' => '@count workflow', 'plural' => '@count workflows', ], config_export: [ 'id', 'label', 'type', 'type_settings', ])]

Hierarchy

Expanded class hierarchy of Workflow

31 files declare their use of Workflow
AddModerationConfigActionTest.php in core/modules/content_moderation/tests/src/Kernel/ConfigAction/AddModerationConfigActionTest.php
ComplexWorkflowTypeTest.php in core/modules/workflows/tests/src/Kernel/ComplexWorkflowTypeTest.php
ContentModerationHooks.php in core/modules/content_moderation/src/Hook/ContentModerationHooks.php
ContentModerationPermissionsTest.php in core/modules/content_moderation/tests/src/Kernel/ContentModerationPermissionsTest.php
ContentModerationRouteSubscriber.php in core/modules/content_moderation/src/Routing/ContentModerationRouteSubscriber.php

... See full list

58 string references to 'Workflow'
ConfigImportSubscriber::getWorkflow in core/modules/content_moderation/src/EventSubscriber/ConfigImportSubscriber.php
Get the workflow entity object from the configuration name.
content-moderation.php in core/modules/content_moderation/tests/fixtures/content-moderation.php
Test fixture to enable content_moderation and workflows modules.
ContentModerationPermissionsTest::setUp in core/modules/content_moderation/tests/src/Kernel/ContentModerationPermissionsTest.php
ContentModerationStateStorageSchema::getEntitySchema in core/modules/content_moderation/src/ContentModerationStateStorageSchema.php
Gets the entity schema for the specified entity type.
ContentModerationSyncingTest::setUp in core/modules/content_moderation/tests/src/Kernel/ContentModerationSyncingTest.php

... See full list

File

core/modules/workflows/src/Entity/Workflow.php, line 29

Namespace

Drupal\workflows\Entity
View source
class Workflow extends ConfigEntityBase implements WorkflowInterface, EntityWithPluginCollectionInterface {
  
  /**
   * The Workflow ID.
   *
   * @var string
   */
  protected $id;
  
  /**
   * The workflow label.
   *
   * @var string
   */
  protected $label;
  
  /**
   * The workflow type plugin ID.
   *
   * @var string
   *
   * @see \Drupal\workflows\WorkflowTypeManager
   */
  protected $type;
  
  /**
   * The configuration for the workflow type plugin.
   *
   * @var array
   */
  protected $type_settings = [];
  
  /**
   * The workflow type plugin collection.
   *
   * @var \Drupal\Component\Plugin\LazyPluginCollection
   */
  protected $pluginCollection;
  
  /**
   * {@inheritdoc}
   */
  public function preSave(EntityStorageInterface $storage) {
    $workflow_type = $this->getTypePlugin();
    $missing_states = array_diff($workflow_type->getRequiredStates(), array_keys($this->getTypePlugin()
      ->getStates()));
    if (!empty($missing_states)) {
      throw new RequiredStateMissingException(sprintf("Workflow type '{$workflow_type->label()}' requires states with the ID '%s' in workflow '{$this->id()}'", implode("', '", $missing_states)));
    }
    parent::preSave($storage);
  }
  
  /**
   * {@inheritdoc}
   */
  public function getTypePlugin() {
    return $this->getPluginCollection()
      ->get($this->type);
  }
  
  /**
   * {@inheritdoc}
   */
  public function getPluginCollections() {
    return [
      'type_settings' => $this->getPluginCollection(),
    ];
  }
  
  /**
   * Encapsulates the creation of the workflow's plugin collection.
   *
   * @return \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection
   *   The workflow's plugin collection.
   */
  protected function getPluginCollection() {
    if (!$this->pluginCollection && $this->type) {
      $this->pluginCollection = new DefaultSingleLazyPluginCollection(\Drupal::service('plugin.manager.workflows.type'), $this->type, $this->type_settings);
    }
    return $this->pluginCollection;
  }
  
  /**
   * Loads all workflows of the provided type.
   *
   * @param string $type
   *   The workflow type to load all workflows for.
   *
   * @return static[]
   *   An array of workflow objects of the provided workflow type, indexed by
   *   their IDs.
   *
   *  @see \Drupal\workflows\Annotation\WorkflowType
   */
  public static function loadMultipleByType($type) {
    return self::loadMultiple(\Drupal::entityQuery('workflow')->condition('type', $type)
      ->execute());
  }
  
  /**
   * {@inheritdoc}
   */
  public function status() {
    // In order for a workflow to be usable it must have at least one state.
    return !empty($this->status) && !empty($this->getTypePlugin()
      ->getStates());
  }
  
  /**
   * {@inheritdoc}
   */
  public function onDependencyRemoval(array $dependencies) {
    // Give the parent method and the workflow type plugin a chance to react
    // to removed dependencies and report if either of these two made a change.
    $parent_changed_entity = parent::onDependencyRemoval($dependencies);
    $plugin_changed_entity = $this->getTypePlugin()
      ->onDependencyRemoval($dependencies);
    return $plugin_changed_entity || $parent_changed_entity;
  }

}

Members

Title Sort descending Modifiers Object type Summary Member alias Overriden Title
CacheableDependencyTrait::$cacheContexts protected property Cache contexts.
CacheableDependencyTrait::$cacheMaxAge protected property Cache max-age.
CacheableDependencyTrait::$cacheTags protected property Cache tags.
CacheableDependencyTrait::setCacheability protected function Sets cacheability; useful for value object constructors.
ConfigEntityBase::$isUninstalling private property Whether the config is being deleted by the uninstall process.
ConfigEntityBase::$langcode protected property The language code of the entity's default language.
ConfigEntityBase::$originalId protected property The original ID of the configuration entity.
ConfigEntityBase::$status protected property The enabled/disabled status of the configuration entity.
ConfigEntityBase::$third_party_settings protected property Third party entity settings.
ConfigEntityBase::$trustedData protected property Trust supplied data and not use configuration schema on save.
ConfigEntityBase::$uuid protected property The UUID for this entity.
ConfigEntityBase::$_core protected property Information maintained by Drupal core about configuration.
ConfigEntityBase::addDependency protected function Overrides \Drupal\Core\Entity\DependencyTrait:addDependency().
ConfigEntityBase::calculateDependencies public function
ConfigEntityBase::createDuplicate public function
ConfigEntityBase::disable public function #[ActionMethod(adminLabel: new TranslatableMarkup('Disable'), pluralize: FALSE)]
ConfigEntityBase::enable public function #[ActionMethod(adminLabel: new TranslatableMarkup('Enable'), pluralize: FALSE)]
ConfigEntityBase::get public function
ConfigEntityBase::getCacheTagsToInvalidate public function
ConfigEntityBase::getConfigDependencyName public function
ConfigEntityBase::getConfigManager protected static function Gets the configuration manager.
ConfigEntityBase::getConfigTarget public function
ConfigEntityBase::getDependencies public function
ConfigEntityBase::getOriginalId public function
ConfigEntityBase::getThirdPartyProviders public function
ConfigEntityBase::getThirdPartySetting public function
ConfigEntityBase::getThirdPartySettings public function
ConfigEntityBase::getTypedConfig protected function Gets the typed config manager.
ConfigEntityBase::hasTrustedData public function
ConfigEntityBase::invalidateTagsOnDelete protected static function Override to never invalidate the individual entities' cache tags; the
config system already invalidates them.
ConfigEntityBase::invalidateTagsOnSave protected function Override to never invalidate the entity's cache tag; the config system
already invalidates it.
ConfigEntityBase::isInstallable public function
ConfigEntityBase::isNew public function Overrides EntityBase::isNew().
ConfigEntityBase::isUninstalling public function
ConfigEntityBase::preDelete public static function
ConfigEntityBase::save public function
ConfigEntityBase::set public function #[ActionMethod(adminLabel: new TranslatableMarkup('Set a value'), pluralize: 'setMultiple')]
ConfigEntityBase::setOriginalId public function
ConfigEntityBase::setStatus public function #[ActionMethod(adminLabel: new TranslatableMarkup('Set status'), pluralize: FALSE)]
ConfigEntityBase::setThirdPartySetting public function #[ActionMethod(adminLabel: new TranslatableMarkup('Set third-party setting'))]
ConfigEntityBase::setUninstalling public function
ConfigEntityBase::sort public static function Callback for uasort() to sort configuration entities by weight and label.
ConfigEntityBase::toArray public function
ConfigEntityBase::toUrl public function
ConfigEntityBase::trustData public function
ConfigEntityBase::unsetThirdPartySetting public function
ConfigEntityBase::__construct public function
ConfigEntityBase::__sleep public function
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function Aliased as: traitSleep
DependencySerializationTrait::__wakeup public function
DependencyTrait::$dependencies protected property The object's dependencies.
DependencyTrait::addDependencies protected function Adds multiple dependencies.
DependencyTrait::addDependency protected function Adds a dependency. Aliased as: addDependencyTrait
EntityBase::$enforceIsNew protected property Boolean indicating whether the entity should be forced to be new.
EntityBase::$entityTypeId protected property The entity type.
EntityBase::$originalEntity protected property The original unchanged entity.
EntityBase::$typedData protected property A typed data object wrapping this entity.
EntityBase::access public function
EntityBase::bundle public function
EntityBase::create public static function
EntityBase::delete public function
EntityBase::enforceIsNew public function
EntityBase::entityTypeBundleInfo protected function Gets the entity type bundle info service.
EntityBase::entityTypeManager protected function Gets the entity type manager.
EntityBase::getCacheContexts public function
EntityBase::getCacheMaxAge public function
EntityBase::getCacheTags public function
EntityBase::getConfigDependencyKey public function
EntityBase::getEntityType public function
EntityBase::getEntityTypeId public function
EntityBase::getListCacheTagsToInvalidate protected function The list cache tags to invalidate for this entity.
EntityBase::getOriginal public function
EntityBase::getTypedData public function
EntityBase::getTypedDataClass private function Returns the typed data class name for this entity.
EntityBase::hasLinkTemplate public function
EntityBase::id public function
EntityBase::label public function
EntityBase::language public function
EntityBase::languageManager protected function Gets the language manager.
EntityBase::linkTemplates protected function Gets an array link templates.
EntityBase::load public static function
EntityBase::loadMultiple public static function
EntityBase::postCreate public function
EntityBase::postDelete public static function
EntityBase::postLoad public static function
EntityBase::postSave public function
EntityBase::preCreate public static function
EntityBase::referencedEntities public function
EntityBase::setOriginal public function
EntityBase::toLink public function
EntityBase::uriRelationships public function
EntityBase::urlRouteParameters protected function Gets an array of placeholders for this entity.
EntityBase::uuid public function
EntityBase::uuidGenerator protected function Gets the UUID generator.
PluginDependencyTrait::calculatePluginDependencies protected function Calculates and adds dependencies of a specific plugin instance.
PluginDependencyTrait::getPluginDependencies protected function Calculates and returns dependencies of a specific plugin instance.
PluginDependencyTrait::moduleHandler protected function Wraps the module handler.
PluginDependencyTrait::themeHandler protected function Wraps the theme handler.
RefinableCacheableDependencyTrait::addCacheableDependency public function
RefinableCacheableDependencyTrait::addCacheContexts public function
RefinableCacheableDependencyTrait::addCacheTags public function
RefinableCacheableDependencyTrait::mergeCacheMaxAge public function
SynchronizableEntityTrait::$isSyncing protected property Is entity being created updated or deleted through synchronization process.
SynchronizableEntityTrait::isSyncing public function
SynchronizableEntityTrait::setSyncing public function
Workflow::$id protected property The Workflow ID.
Workflow::$label protected property The workflow label.
Workflow::$pluginCollection protected property The workflow type plugin collection.
Workflow::$type protected property The workflow type plugin ID.
Workflow::$type_settings protected property The configuration for the workflow type plugin.
Workflow::getPluginCollection protected function Encapsulates the creation of the workflow's plugin collection.
Workflow::getPluginCollections public function Gets the plugin collections used by this object. Overrides ObjectWithPluginCollectionInterface::getPluginCollections
Workflow::getTypePlugin public function Gets the workflow type plugin. Overrides WorkflowInterface::getTypePlugin
Workflow::loadMultipleByType public static function Loads all workflows of the provided type.
Workflow::onDependencyRemoval public function Informs the entity that entities it depends on will be deleted. Overrides ConfigEntityBase::onDependencyRemoval
Workflow::preSave public function Acts on an entity before the presave hook is invoked. Overrides ConfigEntityBase::preSave
Workflow::status public function Returns whether the configuration entity is enabled. Overrides ConfigEntityBase::status

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.