Как пропустить запуск рабочего процесса администратором/пользователем в Drupal-Commons с помощью модуля Maestro?
Я установил и настроил модуль "Maestro" в Drupal Commons.
В модуле Maestro каждый раз мы должны загружать рабочий процесс, и он будет проходить шаг за шагом:
- Администратор : Загрузка рабочего процесса публикации
- Пользователь1: Назначение для добавления нового контента
- Пользователь2: Просмотреть содержимое
- Пользователь3: Публиковать контент
Как я могу удалить первый шаг? Когда пользователь создает новый контент, он должен автоматически переходите на просмотр.
Мой рабочий процесс
С помощью модуля "Правила" Могу ли я определить какое-либо правило при создании нового контента, чтобы автоматически загрузить рабочий процесс "Добавить контент"....
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"));
}
}