]> 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 c9312f9e23ec88b5b72a627decf0c3beef9205e7..3176cc1a09ee392c5663269b161486b1bc8e687e 100644 (file)
@@ -46,8 +46,8 @@ Mart
 Agregar un Proceso
 \layout Standard
 
-El método estático 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.
@@ -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.
+\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
@@ -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.
- 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.
- É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
 
-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
 
-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.
+ 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
 
-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