[Drupal]ワークフロー周りのチートシート


Content ModerationモジュールとWorkflowsモジュールで実装しているワークフロー周りのチートシートです。 

※随時追加予定

ノードが使用しているワークフロータイプのマシン名を取得する

$workflow_type = \Drupal::service('entity_type.bundle.info')
   ->getBundleInfo('node')[$node->bundle()]['workflow'];

特定のタイプのワークフローのコンフィグエンティティを召喚する

// ワークフローのコンフィグエンティティ.
$workflow = \Drupal::service('entity_type.manager')
  ->getStorage('workflow')
  ->load(WORKFLOW_TYPE);

// モデレーション状態のマシン名やラベル等の配列.
$workflow->get('type_settings')['states'];

// デフォルトのモデレーション状態.
$workflow->get('type_settings')['default_moderation_state']

ワークフローのコンフィグエンティティからモデレーション状態のコンフィグエンティティを召喚する

// モデレーション状態のエンティティの配列を召喚する.
$moderation_states = $workflow->getTypePlugin()->getStates();

// 特定のモデレーション状態のエンティティを召喚する.
$moderation_state = $workflow->getTypePlugin()->getState('draft');

// モデレーション状態のラベルを取得する.
$moderation_state->label();

// モデレーション状態のウェイトを取得する.
$moderation_state->weight();

// モデレーション状態が公開かどうか確認する.
$moderation_state->isPublishedState();

// モデレーション状態がデフォルトリビジョンか確認する.
$moderation_state->isDefaultRevisionState();