How to Skip the Workflow Launch by admin/user in Drupal-Commons using Maestro Module?
A solution we have used where we needed to have a menu item launch a workflow for expense approval using an entityform. The menu URL just needed to pass in the maestro workflow template_id

The callback function for the menu hook launches the workflow and then executes past the START task in the maestro template, to the first interactive task for the user (fill out form). It redirects the user to the task console and automatically opens the expense form to be filled in. The following code can be added to a custom module and re-purposed for your use.

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

  $items['pi_workflow/launch_eform'] = array(
    'title' =&gt; 'Launch Entityform Workflow',
    'page callback' =&gt; 'nextide_launch_eform_workflow',
    'page arguments' =&gt; array(2) ,      // Passing in wildcard which should be the maestro workflow template_id
    'type' =&gt; MENU_CALLBACK,
    'access arguments' =&gt; 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) &gt; 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-&gt;engine()-&gt;getQueueHistory($new_process_id);

    $task = MaestroTask::createTaskObject($process_data[1]-&gt;id);
    $data = $task-&gt;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') &amp;&amp; overlay_get_mode() ) {
        $options = array('fragment' =&gt; "overlay=eform/submit/{$task_data['entityform_id']}/maestro/" . $process_data[1]-&gt;id);
      }
    }
    drupal_goto($link, $options);
  } else {
    drupal_set_message(t("New Process Code FAIL! - No Template ID Given"));
  }

}