24 junio 2015

Las variables de entorno en Omnis Studio

¿Qué son las variables de entorno?


Cuando arranca un proceso en un equipo, éste inicia algunas variables con información sobre su entorno de trabajo. Generalmente se trata de rutas de acceso (como por ejemplo la ruta del programa en ejecución) o de la iniciación de algunas constantes, como el nombre del usuario actual, el nombre del equipo, etc. Dichas variables están (normalmente) accesibles para todos los programas ejecutados en ese mismo entrono de trabajo.

Por supuesto los programas también pueden hacer uso de variables de entorno con información sólo relevante a si mismos. En éstos casos, dichas variables son algo así como los ajustes de preferencias, excepto que no son exclusivos del programa, ya que también son variables globales, (como las preferencias del sistema) aunque su uso está pensado para usuarios individuales y no para todo el equipo.

 

Variables de entorno: Del Sistema y de los Usuarios.


En Windows, disponemos de dos niveles de variables de entorno: Las variables del sistema y las del usuario. Las variables del sistema sólo pueden ser modificadas por un usuario con categoría de administrador. Normalmente no modificaremos éstas variables, ya que, si lo hacemos, será necesario reiniciar el equipo para que el sistema reconozca y use los cambios.

Las variables de usuario, engloban tanto variables definidas por el propio usuario, como las creadas mediante los diferentes programas. Podemos editarlas y utilizar sus nuevos valores sin tener que reiniciar el equipo. El programa desde el cual modificamos una variable de entorno, podrá hacer un uso inmediato del nuevo valor, pero si existen otros programas que quieren hacer uso de esos mismos cambios, deberán ser reiniciados.

 

Diferencias entre plataformas


Dado que, con Omnis Studio podemos escribir aplicaciones multiplataforma, deberemos ser conscientes de las diferencias que se producen entre éstas y sus variables de entorno. Sera absolutamente necesario, que el código escrito para manejar variables de entorno, lo esté del modo esperado para la plataforma en uso, es decir, sobre la que nuestra aplicación esté siendo ejecutada.

Atendiendo a la plataforma Windows, podemos ver (view) (pero no editar) las variables de entorno, mediante la aplicación “System Information”. Accedemos a esta aplicación siguiendo la siguiente ruta desde el menú “inicio” o “Start”: “menu≥Accessories≥System Tools≥System Information”. Podrá ver algo como lo siguiente:


En Windows, las variables de entorno pueden ser gestionadas manualmente, mediante el panel de control del sistema (“System Control Panel”) y su pestaña “Avanzadas” (“Advanced”). Podremos acceder a el, abriendo el directorio de paneles de control, para desde allí ir al panel de control del sistema y seleccionar su pestaña “Avanzadas”, finalmente, tendremos que hacer clic sobre los botones, para ver algo parecido a lo siguiente:


Los usuarios con privilegio de administradores, podrán ver y manipular tanto variables de usuario, como del sistema, mientras que el resto sólo podrán acceder a las de usuario.

Para Mac OS X, las variables de entorno de usuario están registradas en un fichero de tipo “property list” denominado “environment.plist”, localizado en un directorio no-visible denominado “.MacOSX”, ubicado dentro del directorio principal o raíz del usuario. Por defecto, este archivo y su directorio no existen, por lo que deberán ser creados para su uso, pero ha de tener en cuenta, que algunos programas los crean durante su instalación.

Una vez creado, el usuario podrá hacer uso de la aplicación “Property List Editor” (forma parte del conjunto de herramientas para desarrollo Xcode) para editarlo. Debería ver algo similar a los siguiente:


También podremos ver el contenido XML del archivo desde el terminal, escribiendo:

more ~/.MacOSX/environment.plist

En cuanto a las “rutas” o “paths” guardados en las variables de entorno, también (lógicamente) existen diferencias entre plataformas. La mayoría usan rutas de tipo POSIX, que hace uso del carácter barra diagonal (/) para separar los diferentes niveles de directorio. Sin embargo en DOS se hace uso de la barra invertida (\).

 

Valores alternativos


Una variable de entorno puede contener más de un valor. Por ejemplo, una variable que contiene una ruta hacia un archivo, podría contener rutas alternativas para indicar otras posibles ubicaciones. Al ser requerida por un programa, intentará localizar el archivo en la primera ruta indicada, pero si no lo encuentra, hará uso de la ruta alternativa.

Los valores alternativos deberán estar separados entre si, mediante el uso de un carácter delimitador. Aquí nos enfrentamos a otra diferencia entre plataformas. Para las que usan el formato POSIX, el carácter delimitador son los dos puntos (:). En DOS es el punto y coma (;). Por ejemplo y suponiendo una variable de entorno denominada PROGRAMPATH y que va a ser usada para localizar el mismo programa, pero con dos posibles nombres (“miPrograma” y “miOtroPrograma”), su valor podría ser el siguiente:

En Mac OS X: /Applications/miPrograma:/Applications/miOtroPrograma

En Windows: C:\Program Files\miPrograma;C:\Program Files\miOtroPrograma
 

 

¿Cómo usa las variables de entrono Omnis Studio?


El ejemplo más común, es el que tiene que ver con el uso de los componentes Java con Omnis Studio. Omnis Studio necesita saber dónde encontrar las clases Java en cada una de las plataformas, excepto en el caso de Mac OS X. Para ello, consulta las variables de entorno CLASSPATH y OMNIJVM. Podrá obtener más información sobre como configurar y asignar valores a estas variables consulte el Manual de “Programación Omnis” en castellano, a partir de su página 584.

Por defecto, el valor de CLASSPATH apunta al directorio que debería contener las clases de Java no usadas por Omnis Studio, pero, para indicar los directorios que contienen las clases Java que usaremos con nuestras aplicaciones Omnis, disponemos de la variable OMNISCLASSPATH.

Por supuesto, también podemos optar por configurar y utilizar nuestras propias variables de entorno con otros fines. Tal vez para indicar un directorio externo donde alojar archivos de imagen o informes “adhoc”. Por ejemplo, podríamos crear una variable de entorno (llamada CUSTOMPATH o algo similar) su uso se hará de modo similar al de la función sys(). Si no disponemos de herramientas para crear y manipular variables de entorno, podemos crear fácilmente nuestra propia utilidad con Omnis Studio...

 

Funciones para el uso de variables de entorno


Una alternativa a la configuración o ajuste manual de las variables de entorno mediante el Panel de Control (en Windows) o el editor “Property List” (en Mac OS X), podemos optar por hacerlo desde dentro de nuestros programas Omnis. Bajo la pestaña “General” de la ventana “Catalog” de Omnis Studio, encontramos las funciones: listenv(), setenv(), getenv() y putenv().

La función listenv() devuelve una lista con las variables de entorno de usuario, junto con sus correspondientes valores. Tenga en cuenta que no se requieren parámetros para esta función. La lista devuelta, contiene dos columnas denominadas “name” y “value”. Ambas columnas son de tipo carácter. La columna “name” está limitada a 255 caracteres, pero la columna “value” no está limitada. A continuación mostramos lo que típicamente se obtendría bajo la plataforma Mac OS X:



Tenga en cuenta que no todas las variables que se muestran son realmente de utilidad para Omnis Studio. Por ejemplo, con Omnis Studio 4.2, sólo las indicadas en el fichero “odbc.ini” son usadas.

En un entorno Windows, se obtendría algo similar a los siguiente:


Si bien se muestran muchas y diferentes variables, son muy pocas las que podemos utilizar con Omnis Studio, pero eso puede ir cambiando según la versión.

Todo lo que necesitamos saber es el nombre de la variable de entorno que deseamos consultar. Después, podemos usar la función getenv() de modo similar a como usamos la función sys() para recuperar su valor. El nombre de la variable debe ser indicado como parámetro de la función. Por ejemplo, para saber el nombre del usuario actual, usaríamos:

getenv('USERNAME')

Observe que el nombre de la variable de entorno debe ser indicada como una cadena entre comillas, aunque también podría estar contenida en una variable Omnis Studio. Si la variable que solicitamos no existe, la función devolverá un valor vacío.

Pero también puede ser que en algún momento desee modificar el valor de una variable de entorno. La función putenv() permite que lo hagamos. Esta función requiere dos parámetros: el nombre de la variable de entorno cuyo valor queremos modificar y el valor que queremos asignarle. Una ventaja adicional de esta función es que (si no existe) la variable es añadida al conjunto, así que ¡tenga cuidado con la ortografía y el uso de mayúsculas! Por ejemplo, si queremos crear o modificar una nueva variable de entorno denominada “OMNISREPORTPATH” y asignarle el valor “/Users/david/OmnisReports” usaríamos lo siguiente:

putenv('OMNISREPORTPATH','/Users/david/OmnisReports')

Si lo que quisiéramos fuera añadirle una ruta alternativa (cuando sabemos que ya contiene una), podríamos utilizar:

putenv('OMNISREPORTPATH',con(getenv('OMNISREPORTPATH'),':/Users/david/OmnisReports'))

Estos ejemplos son de Mac OS X, pero podrá encontrar con facilidad su equivalente Windows.

 

¿Ha encontrado útil éste artículo?


Recuerde que es necesario configurar manualmente las variables de entorno para utilizar clases Java dentro de nuestras aplicaciones, por lo que podemos utilizar estas nuevas funciones para simplificar el proceso de configuración para nuestros usuarios finales.

Espero con interés sus comentarios al respecto, reciban un saludo.

No hay comentarios: