Ejemplo n.º 1
0
 /**
  * @todo: docs
  */
 public function start(midgard_object $object, array $args = null)
 {
     if (!midgardmvc_core::get_instance()->authentication->is_user()) {
         return false;
     }
     $user = midgardmvc_core::get_instance()->authentication->get_user();
     $workflow = $this->get();
     $storage = new midgard_query_storage('midgardmvc_helper_workflow_execution');
     $q = new midgard_query_select($storage);
     $q->set_constraint(new midgard_query_constraint(new midgard_query_property('metadata.creator'), '=', new midgard_query_value($user->person)));
     $q->execute();
     $execs = $q->list_objects();
     foreach ($execs as $exec) {
         $variables = unserialize($exec->variables);
         if ($variables['package_instance'] == $object->guid) {
             midgardmvc_core::get_instance()->log(__CLASS__, 'Re-use unfinished workflow execution (' . $exec->id . ')', 'info');
             return self::resume($exec->guid, $variables);
         }
     }
     $execution = new midgardmvc_helper_workflow_execution_interactive($workflow);
     $execution->setVariable('package_instance', $object->guid);
     $execution->start();
     $values = array();
     if (!$execution->hasEnded()) {
         $values['execution'] = $execution->guid;
         return $values;
     }
     return $values;
 }