Nomenclatura de objetos en urls

Vía web, podremos hacer uso de los objetos siguientes:

Procesos

El proceso es el objeto que se usará para componer y retornar el código html de las páginas que se desea servir. En una url un proceso se identificará de la forma siguiente:

ID_PROYECTO_EXT/ID_PROCESO[.pro]

Donde:

ID_PROYECTO_EXT/

Es el identificador del proyecto (ID_PROYECTO) y su extensión (EXT) donde está alojado el proceso que se desea ejecutar. Se debe especificar siempre. El identificador del proyecto será el valor establecido en la propiedad nombre del formulario de propiedades del proyecto:

La extensión (EXT) será dat si el proceso a ejecutar está en un proyecto de datos heredado y app si está en un proyecto de aplicación heredado. El identificador del proyecto y la extensión irán separados por un carácter de subrayado: _.

El carácter separador / no se incluirá si no se incluye el identificador del proyecto.

ID_PROCESO

Será el identificador del proceso a ejecutar, siendo la extensión .pro opcional.

[.pro]

Extensión identificativa del objeto. La de un proceso será .pro. Es opcional. Si en una url no se incluye la extensión del objeto, Velneo asumirá por defecto que se trata de un proceso.

Ejemplos:

http://dominio.com/vERP_2_app/INDEX.pro o http://dominio.com/vERP_2_app/INDEX: Llamada al proceso con identificador INDEX del proyecto actual.

http://dominio.com/vERP_2_dat/INDEX.pro o http://dominio.com/vERP_2_dat/INDEX: llamada al proceso INDEX del proyecto de datos heredado llamado “vERP_2_dat”.

Es muy importante recordar que los procesos ejecutables vía web han de tener activada la propiedad Accesible web. Si esta propiedad no está activada en un proceso, éste no podrá ser ejecutado vía web.

Si queremos que el proceso a ejecutar reciba parámetros, tendremos que crear en el proceso tantas variables locales de tipo alfabético como parámetros se necesiten pasar y en la pasarela cgi resolver cada una con el mismo identificador que tenga la variable local en el proceso. Ejemplo: en un proyecto tenemos declarado el proceso siguiente:

Este proceso tiene declaradas dos variables locales de tipo alfabético ID y NAME, que son usadas para dar de alta un registro en una tabla.

La declaración del proceso y los parámetros en la pasarela cgi debería ser:

…ALTA_DE_FICHA.PRO?ID=xxxxx&NAME=yyyyyy

El proceso puede ser un proceso javascript. En ese caso, en el proceso disponemos de dos nuevas variables, theRequest y threResponse.

theRequest tiene las siguientes funciones:

String header( String szHeader ) Array headerKeys( String GET( String szKey ) Array GETkeys() String POST( String szKey ) Array POSTKeys() String pathInfo() String unparsedUri() String uri() String body() String method()

threResponse tiene las siguientes funciones:

String header( String szHeader ) Array headerKeys() void setHeader( String szHeader, String szValue ) String contentType() setContentType( String szContentType ) String body() void setBody( String szBody ) void setStatus( int nStatus ) int status()

Ejemplo: si en el proceso vJavascript llamado por vModApache hacemos lo siguiente:

var body="Host: " + theRequest.header("Host");
body += "<br />Header keys: ";
body += theRequest.headerKeys();
body += "<br />Get keys: ";
body += theRequest.GETkeys();
body += "<br />Post keys: ";
body += theRequest.POSTkeys();
body += "<br />unparsedUri: ";
body += theRequest.unparsedUri();
body += "<br />uri: ";
body += theRequest.uri();
body += "<br />pathInfo: ";
body += theRequest.pathInfo();
body += "<br />r: ";
body += theRequest.GET("r");
body += "<br />method: ";
body += theRequest.method();
body += "<br />";
theResponse.setBody( body );
theResponse.setContentType( "text/html" );

Para la petición a la url http://127.0.0.1/velneo/proceso?r=6 devuelve:

Host: 127.0.0.1 Header keys: Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Host,Upgrade-Insecure-Requests,User-Agent Get keys: r Post keys: unparsedUri: /velneo/proceso?r=6 uri: /velneo/proceso pathInfo: /proceso r: 6 method: GET

Dibujos

Es posible servir vía web dibujos declarados en el proyecto actual o en un proyecto heredado. La forma de referenciar un dibujo en una URL es similar a la de los procesos:

[ID_PROYECTO_ext][/]ID_DIBUJO.ext

Donde:

[ID_PROYECTO_ext][/]

Es el identificador del proyecto (ID_PROYECTO) y su extensión (ext) donde está alojado el dibujo que se desea servir. Solamente será necesario especificarlo cuando el dibujo se encuentre en un proyecto heredado. Si el dibujo está en el proyecto actual no se especificará. El identificador del proyecto será el valor establecido en la propiedad nombre del formulario de propiedades del proyecto y ha de escribirse exactamente igual a como lo hemos establecido,respetando mayúsculas y minúsculas:

y el sufijo dat ha de ser escrito todo en minúsculas.

El carácter separador / no se incluirá si no se incluye el identificador del proyecto.

ID_DIBUJO

El el identificador dado al dibujo en el proyecto.

.ext

Será la extensión; ésta podrá ser o bien .png o bien .jpg indistintamente.

Ejemplos: https://dominio.com/LOGO.png o http://dominio.com/LOGO.jpg: llamada al dibujo LOGO del proyecto actual.

http://dominio.com/vManagement_dat/LOGO.jpg: llamada al dibujo LOGO del proyecto de datos heredado llamado “vManagement”.

Campos de tipo objeto dibujo

En los procesos ejecutados vía web podremos leer registros de tablas del proyecto en curso o de proyectos heredados para, por ejemplo, ir componiendo código html para devolver una página web el contenido de sus campos. Para obtener el contenido de un campo simplemente incluiremos su identificador en la fórmula donde queramos obtenerlo, pero un campo de tipo objeto dibujo de un registro es un caso especial, dado que el dibujo no es almacenado en el fichero de datos sino en un fichero a parte llamado contenedor, lo que se guarda en el campo es una etiqueta que referencia al objeto en el contenedor. Para poder servir la imagen correspondiente a este tipo de campo tendremos que especificar la url siguiente:

obj/ID_PROYECTO_dat/ID_TABLA/ETIQUETA.ext

Donde:

obj

Es el prefijo que indica que se trata de un campo objeto. Es obligatoria su especificación

.ID_PROYECTO_dat

Es el identificador del proyecto de datos donde está declarada la tabla que contiene el campo objeto dibujo. Es obligatoria su especificación y ha de escribirse exactamente igual a como lo hemos establecido,respetando mayúsculas y minúsculas:

y el sufijo dat ha de ser escrito todo en minúsculas.

ID_TABLA

Es el identificador de la la tabla que contiene el campo objeto dibujo. Es obligatoria su especificación.

ETIQUETA

Es la etiqueta que referencia al objeto en el contenedor. Dicha etiqueta, tal y como hemos indicado anteriormente, es almacenada en el campo objeto dibujo de la tabla. Es obligatoria su especificación.

.ext

Será la extensión; ésta podrá ser o bien .png o bien .jpg indistintamente.

Solamente podremos presentar imágenes de tablas declaradas en el proyecto en curso o en proyectos heredados de forma directa. Esto quiere decir que en un proyecto de aplicación que hereda un proyecto de datos podremos servir vía web una imagen de un registro de una tabla del mismo, pero si queremos hacerlo en un proyecto de aplicación que a su vez hereda otro que es el que hereda el proyecto de datos, no podremos servir la imagen. En este caso lo recomendable sería hacer que nuestro proyecto herede directamente ese proyecto de datos.

Ejemplo:

La fórmula siguiente se corresponde con una línea de proceso cuyo origen es una Ficha de la tabla de MAESTROS del proyecto TutorvModApache y en ella se está componiendo un código html que devolverá una fila que devolverá el contenido de los campos ID, NOMBRE y el campo objeto dibujo (FOTO) de un registro:

"<tr><td>" + #ID + "</td><td>" + #NAME + "</td><td>" + "<img src=\c" + "obj/TutorvModApache_dat/MAESTROS/" + #FOTO + ".png" + "\c>" + "</td></tr>"

El código html que esta fórmula generará al ejecutar el proceso a través de Velneo vModApache será:

<tr><td>2</td><td>Nombre Maestro 2</td><td><img src="obj/TutorvModApache_dat/MAESTROS/JPG00002.png"></td></tr>

Variable CONTENT_TYPE

Usada en un proceso nos permitirá especificar la codificación de caracteres utilizada al codificar el documento. Para ello simplemente tendremos que declarar una variable local en el proceso cuyo identificador sea CONTENT_TYPE. Para establecer su contenido usaremos el comando de instrucción de proceso set.

Ejemplo: Set \( CONTENT\_TYPE, "text/html; charset=ISO-8859-1" \)

Esta declaración dice que el tipo de contenido del documento es text/html, y la codificación de caracteres utilizada es la ISO-8859-1.

Simplemente declarando este Set en el proceso ya se enviará en el encabezado de la comunicación http la información sobre la codificación de caracteres que hayamos establecido.

Petición /velneo_version

En modapache, se reserva la petición /velneo_version para devolver la versión de Velneo, por lo que si en un proyecto, existiese un recurso (proceso, o cualquier cosa accesible mediante modapache), llamado velneo_version no será atendido.

Ejemplo:

https://midominio.com/gestion/velneo_version

Última actualización