]> git.llucax.com Git - mecon/yatta.git/blob - doc/procesos/procesos.lyx
Preparo todo para armar la rama estable.
[mecon/yatta.git] / doc / procesos / procesos.lyx
1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
2 \lyxformat 221
3 \textclass article
4 \language spanish
5 \inputencoding auto
6 \fontscheme palatino
7 \graphics default
8 \paperfontsize default
9 \spacing single 
10 \papersize a4paper
11 \paperpackage widemarginsa4
12 \use_geometry 0
13 \use_amsmath 0
14 \use_natbib 0
15 \use_numerical_citations 0
16 \paperorientation portrait
17 \secnumdepth 3
18 \tocdepth 3
19 \paragraph_separation indent
20 \defskip medskip
21 \quotes_language english
22 \quotes_times 2
23 \papercolumns 1
24 \papersides 1
25 \paperpagestyle default
26
27 \layout Title
28
29 Yatta
30 \layout Date
31
32 MEcon
33 \layout Author
34
35 Martín Marrese <mmarre@mecon.gov.ar>
36 \layout Standard
37 \pagebreak_top \pagebreak_bottom 
38
39 \begin_inset LatexCommand \tableofcontents{}
40
41 \end_inset 
42
43
44 \layout Section
45
46 Agregar un Proceso
47 \layout Standard
48
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.
54 \layout Subsection
55
56 Formato del array de datos
57 \layout Standard
58
59 El array asociativo de datos está compuesto por claves obligatorias y claves
60  opcionales.
61  Es de suma importancia que se respete el formato de la clave (mayúsculas/minúsc
62 ulas).
63 \layout Itemize
64
65 Obligatorias
66 \layout Enumerate
67
68 script : path completo del script.
69  Con esto se hará el require once al momento de la ejecución.
70 \layout Enumerate
71
72 id_sistema : es el identificador numérico asignado al sistema en SAMURAI.
73 \layout Enumerate
74
75 descripción : es un texto descriptivo del proceso que será mostrado en la
76  interfaz web al usuario.
77 \layout Enumerate
78
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
81  de este usuario.
82  
83 \layout Itemize
84
85 Opcionales
86 \layout Enumerate
87
88 destinos : login@organismo de los destinos.
89  Son aquellos que tendrán acceso al resultado del proceso.
90  
91 \layout Enumerate
92
93 prioridad : indica la prioridad del proceso.
94  Se utilizará para ponderar la ejecución de los sistemas.
95 \layout Enumerate
96
97 notificar : indica si hay que avisarle al owner (y destinos) sobre la finalizaci
98 ón de la ejecución del proceso.
99 \layout Enumerate
100
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.
104 \layout Enumerate
105
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
109  correctamente.
110 \layout Section
111
112 Formato del Archivo Proceso
113 \layout Standard
114
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.
119 \layout Standard
120
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.
124 \layout Standard
125
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.
131  
132 \layout Itemize
133
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.
137 \layout Itemize
138
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.
144 \layout Itemize
145
146 notificar : indica si hay que notificar al responsable y a los destinos
147  o no, cambiando el valor seteado en la base.
148 \layout Section
149 \pagebreak_top 
150 Ejemplos
151 \layout Subsection
152
153 Alta Proceso
154 \layout LyX-Code
155
156
157 \size scriptsize 
158 require_once 'YATTA/Controlador.php'; 
159 \layout LyX-Code
160
161
162 \size scriptsize 
163 require_once 'DB.php'; 
164 \layout LyX-Code
165
166
167 \size scriptsize 
168 require_once 'PEAR.php';
169 \layout LyX-Code
170
171 \layout LyX-Code
172
173
174 \size scriptsize 
175 $db =& DB::connect('mysql://<user>:<passwd>@<host>/yatta', true);
176 \layout LyX-Code
177
178
179 \size scriptsize 
180 if (DB::isError($db)) {
181 \layout LyX-Code
182
183
184 \size scriptsize 
185     trigger_error($db->getMessage(), E_USER_ERROR); 
186 \layout LyX-Code
187
188
189 \size scriptsize 
190
191 \layout LyX-Code
192
193 \layout LyX-Code
194
195
196 \size scriptsize 
197 $datos = array (
198 \layout LyX-Code
199
200
201 \size scriptsize 
202     'script' => <path absoluto al archivo de create_process>,
203 \layout LyX-Code
204
205
206 \size scriptsize 
207     'id_sistema' => <id de samurai del sistema>,
208 \layout LyX-Code
209
210
211 \size scriptsize 
212     'descripcion' => <descripción que vera el usuario del proceso>,
213 \layout LyX-Code
214
215
216 \size scriptsize 
217     'owner' => <usuario@organismo owner>, 
218 \layout LyX-Code
219
220
221 \size scriptsize 
222     'destinos' => <usuario@organismo destinos separados por ,>, 
223 \layout LyX-Code
224
225
226 \size scriptsize 
227     'prioridad' => <ponderación de procesos, sin utilizar>,
228 \layout LyX-Code
229
230
231 \size scriptsize 
232     'notificar' => <bool>,
233 \layout LyX-Code
234
235
236 \size scriptsize 
237     'resultado' => <nombre del archivo que veran los usuarios>, 
238 \layout LyX-Code
239
240
241 \size scriptsize 
242     'parametros' => <uno de string, int, array u objeto>         
243 \layout LyX-Code
244
245
246 \size scriptsize 
247     ); 
248 \layout LyX-Code
249
250 \layout LyX-Code
251
252
253 \size scriptsize 
254 $controlador =& new YATTA_Controlador; 
255 \layout LyX-Code
256
257
258 \size scriptsize 
259 $res = $controlador->agregarProceso($db, $datos); 
260 \layout LyX-Code
261
262 \layout LyX-Code
263
264
265 \size scriptsize 
266 if (PEAR::isError($res)) {
267 \layout LyX-Code
268
269
270 \size scriptsize 
271     trigger_error('Error: '.
272  $res->getMessage() ."
273 \backslash 
274 n", E_USER_ERROR);
275 \backslash 
276
277 \layout LyX-Code
278
279
280 \size scriptsize 
281 }
282 \layout Subsection
283
284 Archivo Proceso
285 \layout LyX-Code
286
287
288 \size scriptsize 
289 require_once 'YATTA/Proceso.php';
290 \layout LyX-Code
291
292 \layout LyX-Code
293
294
295 \size scriptsize 
296 function create_process() {     
297 \layout LyX-Code
298
299
300 \size scriptsize 
301     return new Mi_Proceso; 
302 \layout LyX-Code
303
304
305 \size scriptsize 
306
307 \layout LyX-Code
308
309
310 \size scriptsize 
311  
312 \layout LyX-Code
313
314
315 \size scriptsize 
316 class Mi_Proceso extends YATTA_Proceso {
317 \layout LyX-Code
318
319
320 \size scriptsize 
321     function run($param) {
322 \layout LyX-Code
323
324
325 \size scriptsize 
326         //PUEDE HABER O NO PROCESOS
327 \layout LyX-Code
328
329
330 \size scriptsize 
331         //EJECUTO EL PROCESO
332 \layout LyX-Code
333
334
335 \size scriptsize 
336         ...
337 \layout LyX-Code
338
339
340 \size scriptsize 
341         $this->error = null; //si no hay error
342 \layout LyX-Code
343
344
345 \size scriptsize 
346         $this->notificar = false; //contradigo lo que dice en la base
347 \layout LyX-Code
348
349
350 \size scriptsize 
351         $this->archivo = /tmp/000res.zip; //archivo que muevo al tacho
352 \layout LyX-Code
353
354
355 \size scriptsize 
356     }
357 \layout LyX-Code
358
359
360 \size scriptsize 
361 }
362 \the_end