Как пропустить запуск рабочего процесса администратором/пользователем в Drupal-Commons с помощью модуля Maestro?


Я установил и настроил модуль "Maestro" в Drupal Commons.

В модуле Maestro каждый раз мы должны загружать рабочий процесс, и он будет проходить шаг за шагом:

  1. Администратор : Загрузка рабочего процесса публикации
  2. Пользователь1: Назначение для добавления нового контента
  3. Пользователь2: Просмотреть содержимое
  4. Пользователь3: Публиковать контент

Как я могу удалить первый шаг? Когда пользователь создает новый контент, он должен автоматически переходите на просмотр.

Мой рабочий процесс Block diagram of workflow

С помощью модуля "Правила" Могу ли я определить какое-либо правило при создании нового контента, чтобы автоматически загрузить рабочий процесс "Добавить контент"....

 5
7
Author: cigotete, 2013-09-09

1 answers

Решение, которое мы использовали, когда нам нужно было, чтобы пункт меню запускал рабочий процесс для утверждения расходов с помощью формы сущности. URL-адрес меню просто нужно было передать в шаблоне рабочего процесса maestro_id

Функция обратного вызова для крючка меню запускает рабочий процесс, а затем выполняет задачу ЗАПУСКА в шаблоне maestro до первой интерактивной задачи для пользователя (заполнить форму). Он перенаправляет пользователя на консоль задач и автоматически открывает форму расходов для заполнения. Следующий код можно добавить в пользовательский модуль и изменить его назначение для вашего использования.

/**
 * Implements hook_menu()
 */
function MODULE_NAME_menu() {
  $items = array();

  $items['pi_workflow/launch_eform'] = array(
    'title' => 'Launch Entityform Workflow',
    'page callback' => 'nextide_launch_eform_workflow',
    'page arguments' => array(2) ,      // Passing in wildcard which should be the maestro workflow template_id
    'type' => MENU_CALLBACK,
    'access arguments' => array('maestro taskconsole')
  );


  return $items;
}


/* Launch an entityform workflow where the first task
 * after the start task is the entityform task.
 * User will be redirected to the taskconsole and launch the first task (open form for editing)
 */
function nextide_launch_eform_workflow($template) {
  if (intval($template) > 0) {
    $sec_token = drupal_get_token('maestro_user');
    $new_process_id = maestro_launch_workflow($template, $sec_token);

    // Run the orchestrator to execute the first task after the start task which is the interactive entityform task
    maestro_orchestrator();
    $maestro = Maestro::createMaestroObject(1);
    $process_data = $maestro->engine()->getQueueHistory($new_process_id);

    $task = MaestroTask::createTaskObject($process_data[1]->id);
    $data = $task->prepareTask();
    $task_data = unserialize($data['serialized_data']);

    // Default will be to redirect user to the task console unless overlay module is available
    $link = 'maestro/taskconsole';
    $options = array();
    // Test that we have valid process data and then test for the task we are looking for to get the task id
    if (is_array($process_data) AND isset($process_data[1])) {
      // If overlay module is enabled and user has overlay permission, open entityform up in overlay
      if (module_exists('overlay') && overlay_get_mode() ) {
        $options = array('fragment' => "overlay=eform/submit/{$task_data['entityform_id']}/maestro/" . $process_data[1]->id);
      }
    }
    drupal_goto($link, $options);
  } else {
    drupal_set_message(t("New Process Code FAIL! - No Template ID Given"));
  }

}
 3
Author: Blaine Lang, 2013-10-30 15:14:58