1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
11 \paperpackage widemarginsa4
15 \use_numerical_citations 0
16 \paperorientation portrait
19 \paragraph_separation indent
21 \quotes_language english
25 \paperpagestyle default
35 Martín Marrese <mmarre@mecon.gov.ar>
37 \pagebreak_top \pagebreak_bottom
39 \begin_inset LatexCommand \tableofcontents{}
49 El método YATTA_Controlador::agregarProceso es el encargado de dar de alta
50 los nuevos procesos, y de ponerlos en la cola de ejecución.
51 Este método recibe como parámetro una conexión a la base de datos y un
52 array asociativo con los atributos del proceso.
53 Devuelve un PEAR_Error en caso de haberlo.
56 Formato del array de datos
59 El array asociativo de datos está compuesto por claves obligatorias y claves
61 Es de suma importancia que se respete el formato de la clave (mayúsculas/minúsc
68 script : path completo del script.
69 Con esto se hará el require once al momento de la ejecución.
72 id_sistema : es el identificador numérico asignado al sistema en SAMURAI.
75 descripción : es un texto descriptivo del proceso que será mostrado en la
76 interfaz web al usuario.
79 owner : login@organismo del usuario que está iniciando el proceso.
80 Si el proceso genera un archivo resultado, éste ocupará espacio en la cuenta
88 destinos : login@organismo de los destinos.
89 Son aquellos que tendrán acceso al resultado del proceso.
93 prioridad : indica la prioridad del proceso.
94 Se utilizará para ponderar la ejecución de los sistemas.
97 notificar : indica si hay que avisarle al owner (y destinos) sobre la finalizaci
98 ón de la ejecución del proceso.
101 resultado : este es el nombre del archivo resultado que hay que mostrarle
102 al usuario en la interfaz web.
103 No es necesariamente el mismo nombre que tendrá el archivo real de resultado.
106 parametros : este son aquellos parámetros que hay que pasarle al proceso
107 al momento de la ejecución.
108 Puede ser cualquier tipo de dato que pueda ser serializado y des-serializado
112 Formato del Archivo Proceso
115 Cuando se quiere lanzar el proceso el script que corre en el servidor llama
116 a una función que devuelve una instancia del objeto.
117 Este tiene que cumplir ciertas condiciones para que pueda ejecutarse y
118 obtener los datos cuando finaliza.
121 La función debe llamarse create_process, la cual no recibe parámetro alguno.
122 Esto permite que el nombre y la ubicación de la clase que define al proceso
123 sea transparente para el script.
126 El objeto debe tener un método run, que puede recibir parámetros o no, según
127 se haya definido al cargarlo en la base de datos.
128 Este método es invocado a la hora de ejecutar el proceso.
129 Una vez que éste finaliza debe dejar en 3 atributos datos que son utilizados
130 para dar por finalizados la ejecución.
134 error : contiene cualquier mensaje de error que se hubiera producido durante
135 la ejecución del proceso.
136 Este será mostrado al usuario en la interfaz gráfica.
139 archivo : contiene el path completo del archivo que se generó como resultado.
140 Recomendación: utilizar nombres aleatorios para que el mismo script pueda
141 ejecutarse repetidas veces sin riesgo a pisar los resultados.
142 El usuario va a recibir como nombre el campo resultado de la base de datos
143 que se cargo cuando se dio de alta el proceso.
146 notificar : indica si hay que notificar al responsable y a los destinos
147 o no, cambiando el valor seteado en la base.
158 require_once 'YATTA/Controlador.php';
163 require_once 'DB.php';
168 require_once 'PEAR.php';
175 $db =& DB::connect('mysql://<user>:<passwd>@<host>/yatta', true);
180 if (DB::isError($db)) {
185 trigger_error($db->getMessage(), E_USER_ERROR);
202 'script' => <path absoluto al archivo de create_process>,
207 'id_sistema' => <id de samurai del sistema>,
212 'descripcion' => <descripción que vera el usuario del proceso>,
217 'owner' => <usuario@organismo owner>,
222 'destinos' => <usuario@organismo destinos separados por ,>,
227 'prioridad' => <ponderación de procesos, sin utilizar>,
232 'notificar' => <bool>,
237 'resultado' => <nombre del archivo que veran los usuarios>,
242 'parametros' => <uno de string, int, array u objeto>
254 $controlador =& new YATTA_Controlador;
259 $res = $controlador->agregarProceso($db, $datos);
266 if (PEAR::isError($res)) {
271 trigger_error('Error: '.
272 $res->getMessage() ."
289 require_once 'YATTA/Proceso.php';
296 function create_process() {
301 return new Mi_Proceso;
316 class Mi_Proceso extends YATTA_Proceso {
321 function run($param) {
326 //PUEDE HABER O NO PROCESOS
341 $this->error = null; //si no hay error
346 $this->notificar = false; //contradigo lo que dice en la base
351 $this->archivo = /tmp/000res.zip; //archivo que muevo al tacho