]> git.llucax.com Git - mecon/yatta.git/blobdiff - doc/procesos/procesos.lyx
Preparo todo para armar la rama estable.
[mecon/yatta.git] / doc / procesos / procesos.lyx
index 8f686c7c06cf215245fe2238f89a3b85d1176e89..3176cc1a09ee392c5663269b161486b1bc8e687e 100644 (file)
@@ -46,8 +46,8 @@ Mart
 Agregar un Proceso
 \layout Standard
 
 Agregar un Proceso
 \layout Standard
 
-El método YATTA_Controlador::agregarProceso es el encargado de
dar de alta los nuevos procesos, y de ponerlos en la cola de ejecución.
+El método YATTA_Controlador::agregarProceso es el encargado de dar de alta
+ los nuevos procesos, y de ponerlos en la cola de ejecución.
  Este método recibe como parámetro una conexión a la base de datos y un
  array asociativo con los atributos del proceso.
  Devuelve un PEAR_Error en caso de haberlo.
  Este método recibe como parámetro una conexión a la base de datos y un
  array asociativo con los atributos del proceso.
  Devuelve un PEAR_Error en caso de haberlo.
@@ -101,6 +101,12 @@ notificar : indica si hay que avisarle al owner (y destinos) sobre la finalizaci
 resultado : este es el nombre del archivo resultado que hay que mostrarle
  al usuario en la interfaz web.
  No es necesariamente el mismo nombre que tendrá el archivo real de resultado.
 resultado : este es el nombre del archivo resultado que hay que mostrarle
  al usuario en la interfaz web.
  No es necesariamente el mismo nombre que tendrá el archivo real de resultado.
+\layout Enumerate
+
+parametros : este son aquellos parámetros que hay que pasarle al proceso
+ al momento de la ejecución.
+ Puede ser cualquier tipo de dato que pueda ser serializado y des-serializado
+ correctamente.
 \layout Section
 
 Formato del Archivo Proceso
 \layout Section
 
 Formato del Archivo Proceso
@@ -108,26 +114,249 @@ Formato del Archivo Proceso
 
 Cuando se quiere lanzar el proceso el script que corre en el servidor llama
  a una función que devuelve una instancia del objeto.
 
 Cuando se quiere lanzar el proceso el script que corre en el servidor llama
  a una función que devuelve una instancia del objeto.
- Este objeto tiene que cumplir ciertas condiciones para que pueda ejecutarse
obtener los datos cuando finaliza.
+ Este tiene que cumplir ciertas condiciones para que pueda ejecutarse y
+ obtener los datos cuando finaliza.
 \layout Standard
 
 La función debe llamarse create_process, la cual no recibe parámetro alguno.
 \layout Standard
 
 La función debe llamarse create_process, la cual no recibe parámetro alguno.
- Ésta devuelve una instancia del objeto proceso.
+ Esto permite que el nombre y la ubicación de la clase que define al proceso
+ sea transparente para el script.
 \layout Standard
 
 \layout Standard
 
-El objeto debe tener un método run, que no recibe parámetros, el cual es
- invocado a la hora de ejecutar el proceso.
+El objeto debe tener un método run, que puede recibir parámetros o no, según
+ se haya definido al cargarlo en la base de datos.
+ Este método es invocado a la hora de ejecutar el proceso.
  Una vez que éste finaliza debe dejar en 3 atributos datos que son utilizados
  para dar por finalizados la ejecución.
  
 \layout Itemize
 
  Una vez que éste finaliza debe dejar en 3 atributos datos que son utilizados
  para dar por finalizados la ejecución.
  
 \layout Itemize
 
-error : contiene cualquier mensaje de error que se hubiera producido.
+error : contiene cualquier mensaje de error que se hubiera producido durante
+ la ejecución del proceso.
+ Este será mostrado al usuario en la interfaz gráfica.
 \layout Itemize
 
 archivo : contiene el path completo del archivo que se generó como resultado.
 \layout Itemize
 
 archivo : contiene el path completo del archivo que se generó como resultado.
+ Recomendación: utilizar nombres aleatorios para que el mismo script pueda
+ ejecutarse repetidas veces sin riesgo a pisar los resultados.
+ El usuario va a recibir como nombre el campo resultado de la base de datos
+ que se cargo cuando se dio de alta el proceso.
 \layout Itemize
 
 \layout Itemize
 
-notificar : indica si hay que notificar al responsable.
+notificar : indica si hay que notificar al responsable y a los destinos
+ o no, cambiando el valor seteado en la base.
+\layout Section
+\pagebreak_top 
+Ejemplos
+\layout Subsection
+
+Alta Proceso
+\layout LyX-Code
+
+
+\size scriptsize 
+require_once 'YATTA/Controlador.php'; 
+\layout LyX-Code
+
+
+\size scriptsize 
+require_once 'DB.php'; 
+\layout LyX-Code
+
+
+\size scriptsize 
+require_once 'PEAR.php';
+\layout LyX-Code
+
+\layout LyX-Code
+
+
+\size scriptsize 
+$db =& DB::connect('mysql://<user>:<passwd>@<host>/yatta', true);
+\layout LyX-Code
+
+
+\size scriptsize 
+if (DB::isError($db)) {
+\layout LyX-Code
+
+
+\size scriptsize 
+    trigger_error($db->getMessage(), E_USER_ERROR); 
+\layout LyX-Code
+
+
+\size scriptsize 
+} 
+\layout LyX-Code
+
+\layout LyX-Code
+
+
+\size scriptsize 
+$datos = array (
+\layout LyX-Code
+
+
+\size scriptsize 
+    'script' => <path absoluto al archivo de create_process>,
+\layout LyX-Code
+
+
+\size scriptsize 
+    'id_sistema' => <id de samurai del sistema>,
+\layout LyX-Code
+
+
+\size scriptsize 
+    'descripcion' => <descripción que vera el usuario del proceso>,
+\layout LyX-Code
+
+
+\size scriptsize 
+    'owner' => <usuario@organismo owner>, 
+\layout LyX-Code
+
+
+\size scriptsize 
+    'destinos' => <usuario@organismo destinos separados por ,>, 
+\layout LyX-Code
+
+
+\size scriptsize 
+    'prioridad' => <ponderación de procesos, sin utilizar>,
+\layout LyX-Code
+
+
+\size scriptsize 
+    'notificar' => <bool>,
+\layout LyX-Code
+
+
+\size scriptsize 
+    'resultado' => <nombre del archivo que veran los usuarios>, 
+\layout LyX-Code
+
+
+\size scriptsize 
+    'parametros' => <uno de string, int, array u objeto>         
+\layout LyX-Code
+
+
+\size scriptsize 
+    ); 
+\layout LyX-Code
+
+\layout LyX-Code
+
+
+\size scriptsize 
+$controlador =& new YATTA_Controlador; 
+\layout LyX-Code
+
+
+\size scriptsize 
+$res = $controlador->agregarProceso($db, $datos); 
+\layout LyX-Code
+
+\layout LyX-Code
+
+
+\size scriptsize 
+if (PEAR::isError($res)) {
+\layout LyX-Code
+
+
+\size scriptsize 
+    trigger_error('Error: '.
+ $res->getMessage() ."
+\backslash 
+n", E_USER_ERROR);
+\backslash 
+
+\layout LyX-Code
+
+
+\size scriptsize 
+}
+\layout Subsection
+
+Archivo Proceso
+\layout LyX-Code
+
+
+\size scriptsize 
+require_once 'YATTA/Proceso.php';
+\layout LyX-Code
+
+\layout LyX-Code
+
+
+\size scriptsize 
+function create_process() {     
+\layout LyX-Code
+
+
+\size scriptsize 
+    return new Mi_Proceso; 
+\layout LyX-Code
+
+
+\size scriptsize 
+} 
+\layout LyX-Code
+
+
+\size scriptsize 
+\layout LyX-Code
+
+
+\size scriptsize 
+class Mi_Proceso extends YATTA_Proceso {
+\layout LyX-Code
+
+
+\size scriptsize 
+    function run($param) {
+\layout LyX-Code
+
+
+\size scriptsize 
+        //PUEDE HABER O NO PROCESOS
+\layout LyX-Code
+
+
+\size scriptsize 
+        //EJECUTO EL PROCESO
+\layout LyX-Code
+
+
+\size scriptsize 
+        ...
+\layout LyX-Code
+
+
+\size scriptsize 
+        $this->error = null; //si no hay error
+\layout LyX-Code
+
+
+\size scriptsize 
+        $this->notificar = false; //contradigo lo que dice en la base
+\layout LyX-Code
+
+
+\size scriptsize 
+        $this->archivo = /tmp/000res.zip; //archivo que muevo al tacho
+\layout LyX-Code
+
+
+\size scriptsize 
+    }
+\layout LyX-Code
+
+
+\size scriptsize 
+}
 \the_end
 \the_end