Utilizar manejador de objetos para procesos


([N1] triphido.gmail) #1

En mi proyecto de aplicación tengo un proceso (llamémoslo X) que normalemente se utilizará para que elabore y retorne una pagina web servida luego por Apache pero ahora necesito llamar a este proceso 'X' desde otro proceso 'Y' que guarde su retorno en un fichero .HTML

Como X necesita ciertos parámetros la mejor solución que creo que me proporciona Velneo es
1.-Declarar un manejador de objeto en 'Y' sobre el proceso 'X'
2.-Utilizar la instrucción Set variable local de objeto para inicializar las variables locales de X desde Y.
3.-Disparar X en primer plano local síncrono.
4.-Utilizar la instrucción Get variable local de objeto para recoger el retorno.

La recepción del retorno se hace correctamente, pero este retorno no es válido debido a que los parámetros inicializados en el punto 2 no se preservan cuando se dispara el objeto en el punto 3. ¿Hay algo que esté haciendo mal? ¿Existe otra solución al problema?


([N2] gegeo) #2

Entiendo que el proceso 'X' lo ejecutas desde una web.
Y el 'Y' ¿desde donde?

Si el 'Y' lo ejecutas desde la aplicación, no cogerá valor ninguno del 'X', ya que las variables locales de éste, estarán vacías, ¿no?

No entiendo muy bien que quieres hacer:
-Sirves una pagina web via vModApache con un proceso 'X'.
-Quieres guardar dicha pagina .HTML con el proceso 'Y'.
¿Desde donde ejecutas el proceso 'Y'?


([N1] triphido.gmail) #3

Gracias por tu atención Gegeo, creo que no me he explicado bien.
X, efectivamente se ejecuta desde una web e Y desde una aplicación puesta en marcha por vClient.
Antes de 'desesperarme' obligué al proceso X a dar siempre un retorno de texto no vacío, estén las variables locales de X bien o mal inicializadas. El proceso Y recibía ese retorno correctamente, ¡ahí no hay problema! La inicializalización de las variables de X desde Y también funciona correctamente. ¡ESO SÍ! al disparar X en el punto 3 este parece haber 'olvidado' la inicialización de variables que hice en le punto 2 y se ejecuta con ellas vacías... arrojando, claro está, un resultado incorrecto.


([N2] gegeo) #4

Ok.
Que yo sepa, no puedes llevar una variable local de un objeto, a una variable local de un proceso accesible via web.

Pero no tengo claro que quieres conseguir, y se me ocurren dos cosas:

1.-Si quieres generar un archivo .HTML similar al del proceso 'X', monta el proceso 'Y' de la misma forma, simplemente que en lugar de RETORNAR el proceso, guardas ese retorno, creas fichero, abres fichero, y grabas linea en ese fichero con ese retorno, que habras dado nombre archivo.HTML en la ruta que quieras.

2.-Si lo que quieres es que cada vez que muestres en la web el proceso 'X', éste, se guarde en archivo.HTML, unicamente tienes que añadir al proceso 'X', las instrucciones para crear fichero, fichero abrir, grabar linea en el fichero con ese retorno, ya lo tienes, mostrado en web, y guardado en fichero.

Te aconsejo que al nombre del archivo, añadas algo como la hora en curso, porque si siempre lo guardas con el mismo nombre, sobreescribiras el anterior.

No le veo sentido guardar una web en archivo desde la aplicación, con los valores que puede estar sirviendo en ese momento por varios usuarios, con diferentes variables.
Creo que una cosa es la web mostrada, y otra la que quieres guardar en archivo.

No se, si explicas que quieres conseguir, quizas te pueda concretar algo mejor.

Saludos ;)


([N1] triphido.gmail) #5

Mi propósito se ajusta más a lo primero que me indicas. Tengo desarrollado un CMS que devuelve páginas web montadas por X. Estoy desarrollando ahora un CRM que contiene a Y. 'Y' guarda una página web montada por X y la prepara para enviarla por correo en un mailing masivo. Si no parametrizo X antes de lanzarlo desde Y, este devolverá una página vacía, cosa que no me vale, lógicamente. Lo que me propones, entiendo, es copiar el código fuente de X e incrustarlo en Y, pero prefiero evitar esas duplicidades, que luego pasan factura.

Me veo programando una función Z que sea la que monte las páginas web y sea llamada directamente desde X y desde Y.
Por cierto, si X no fuera accesible por Web ¿sí se podrían inicializar sus variables desde otro proceso utilizando el manejador de objetos?

Muchas gracias!


([N1] Pepeto) #6

@Triphido

1. La respuesta de Gegeo creo que es la correcta, deberias crear un proceso Y (copia de X) para ser ejecutado desde vClient

2. Si el problema es que no quieres tener procesos repetidos, por las posibles actualizaciones futuras, eso significa que es un proceso complejo, y con mucho codijo. Entonces, deberias plantearte crear p.e. Funciones para generar el HTML y llamar a dichas funciones desde el proceso. De este modo con varias lineas de llamadas a funciones lo tendrias resuelto, y el codigo estaria mucho mas limpio. Y por supuesto, podrias tener 2 copias del mismo proceso sin problemas.

un saludo
Jose Luis
http://www.ascsl.com


([N2] gegeo) #7

@Triphido

Creo que te contestas tu mismo, y Pepeto te lo confirma.
Si lo que quieres es "estandarizar" codigo, pasa por trabajar con funciones, y procesos un tanto largos.

Sigo pensando, que mejor procesos diferentes, siempre y cuando no tengas muuuchas web que mostrar y guardar en archivo.

Saludos ;)


([N1] triphido.gmail) #8

Cierto: X e Y son ambos procesos bastante grandes y no me parece viable utilizar esa duplicidad en los fuentes pues puede que me vea obligado a actualizar X a corto plazo. De modo la utilización de una función es lo más adecuado.
Gracias por vuestra ayuda


([N4] ikonos) #9

despues de mi ausencia de nuevo on-line :)

Hola triphido,
OH!! manejar objetos!! que tema!! me parece muy interesante, pero me dá que no es el problema. Deberias ser menos críptico en las explicaciones (bueno pistas) para que te podamos ayudar realmente.
Personalmete me suena todo a sindrome X, a la hora de montar tu proyecto Y. Me explico, pero no te cabrees conmigo ;)
Me dá la impresión que lo que realmente quieres montar es un WEB Content Management System (CMS) tu Y, es decir un sistema de gestion de contenidos WEB, para lo que os han debido comer un poco la cabeza de la filosofia (CRM) Customer Relationchip Management, tu X, que tan solo "es una filosofia de relación comercial con el cliente".
Por lo tanto a nivel de programación tu problema es el Y, olvidate de X.
X solo es una consecuencia de la implementación de Y == CMS.
Una vez te has olvidado de la plabra tan cool CRM. Centrate en montar un "sistema de gestion de contenidos" (en español como Velneo) y cada usuario/cliente que se conecte a tu sistema de gestion de contenidos via WEB tendrá personalizado su acceso y contenidos desde tu BD.
Ahora bién, debemos diferenciar las dos vertientes de este sistema. La primera de la que ya hemos hablado, que es a la que se conecta el cliente/usuario via WEB. Y una segunda parte la del administrador del sistema de contenidos que se conectará a tu sistema bien via WEB o bien via vClient.
Si tu has elegido vClient para esta tarea, como pareces indicar al principio de tu hilo, no entiendo tu problema, ya que tan solo debes gestionar en tu BD el perfil y los contenidos del usuario al que le quieres servir la web, pero eso no afecta al proceso de montaje de paginas.
Si por el contrario has elegido que el administrador se conecte a traves de la WEB y administre contenidos y cuentas. Tampoco veo el problema ya que no debe construir páginas para servirlas posteriormente, solo debe gestionar la BD para administrar perfiles de cuentas o subir/bajar contenidos a la DB.
De esta manera en tu proyecto WEB cuando debes servir un contenido a un cliente/usuario para el montaje de las paginas a servir el procedimiento siempre es el mismo:
1)Identifico al usuario de manera que cargo todos los perfiles de usuario, y por lo tanto sé a que contenidos de mi base de datos tiene acceso.
2)Monto la pagina de contenidos del usuario en funcion de los permisos del mismo. Y este proceso es identico para cualquier usuario /cliente, solo cambian los permisos y contenidos, el montaje es identico.

Mi comentario va por que segun se infiere de tu pregunta parece que mezclas la labor del administrador con la del montaje de las páginas que debes servir al cliente y son cuestiones completamente separadas y que no se deben mezclar. Por lo tanto ya cuando hablas de manejar objetos, entiendo que para llamar a tareas del administrador creo que te estas equivocando de planteamiento (sin tener en cuenta el problema de las variables locales entre objetos).

No se si mi comentario te ha hecho replantearte las tareas que debes hacer, pero desde lejos parece que deberias repasarlas.

Un saludo;)


([N1] Giuseppe::Komenco) #10

@ikonos

Qué te han hecho (o qué no) en las vacaciones que has vuelto criticón? jajajajajajajajajajajajaj


([N4] ikonos) #11

Amigo Giuseppe,

Has acertado !que NO me han hecho!!!!

Un saludo,

P.D. No he sido muy criticón, y le he pedido por adelantado que no se cabree conmigo, solo que nos de MAS PISTAS, MAS PISTAS! de lo que se cuece por ahí ;)