X-Git-Url: https://git.llucax.com/mecon/yatta.git/blobdiff_plain/5595a5651b95c8b9ad32d5003b2bf4a667ff8898..HEAD:/doc/procesos/procesos.lyx?ds=sidebyside diff --git a/doc/procesos/procesos.lyx b/doc/procesos/procesos.lyx index 8f686c7..3176cc1 100644 --- a/doc/procesos/procesos.lyx +++ b/doc/procesos/procesos.lyx @@ -46,8 +46,8 @@ Mart 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. @@ -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 - y 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://:@/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' => , +\layout LyX-Code + + +\size scriptsize + 'id_sistema' => , +\layout LyX-Code + + +\size scriptsize + 'descripcion' => , +\layout LyX-Code + + +\size scriptsize + 'owner' => , +\layout LyX-Code + + +\size scriptsize + 'destinos' => , +\layout LyX-Code + + +\size scriptsize + 'prioridad' => , +\layout LyX-Code + + +\size scriptsize + 'notificar' => , +\layout LyX-Code + + +\size scriptsize + 'resultado' => , +\layout LyX-Code + + +\size scriptsize + 'parametros' => +\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