Un environment es un lugar para almacenar los detalles de implementacion del sistema, por ejemplo, el lenguaje de programacion utilizado para generar la aplicacion y la informacion de la base de datos.
En genexus es posible definir varios Environments lo cual permitira tener diferentes implementaciones de una sola aplicacion.
Cuando se crea por primera vez una base de concimiento, en el dialogo de creacion, Genexus solicita al usuario seleccionar un environment por defecto (Ej. Java Environment, C# Environment, Ruby Environment etc.)
Para ello deben ir desde el Knowledge Base Navigator a la seccion de Preferences.
Alli visualizaran su environment por defecto ('Java Environment' El que seteamos cuando creamos la base de conocimiento)
Si necesitan agregar nuevos Environments basta con hacer clic derecho sobre el environment activo y seleccionar la opcion New Environment.
Alli se les abrira un dialogo que pedira la informacion de su nuevo Environment, como por ejemplo el lenguaje y el Datasource (pueden ser totalmente distintos al seleccionado en el environment anterior)
A continuacion se muestra una imagen de ejemplo donde tenemos varios environments creados en una base de conocimiento:
Solo un Environment puede estar activo a la vez. En el ejemplo tenemos activo el Environment 'Java Environment' que me lo indica con un icono verde parecido al icono del Run. Significando que cada vez que genere y reorganize mi aplicacion, genexus va a tomar los valores seteados en ese environment. En este caso va a generar en Java y sobre el DataStore SQL server, en el datastore tendria que estar configurado tambien toda la informacion de la base de datos y del servidor sobre el cual quieren impactar su modelo.
Cuando quieran trabajar sobre otro environment deben posicionarse en dicho environment + clic derecho + Set As Current Environment. Con esto ahora cada vez que especifiquen, generen o impacten su modelo, lo estarian haciendo sobre el nuevo environment en el lenguaje y en el datastore seteado en dicho environment.
El environment se recomienda crear no solo cuando se quiere trabajar con otro lenguaje y/o datastore, tambien (y es altamente recomendable) crear un nuevo Environment si por ejemplo como desarrollador tenemos acceso al servidor de desarrollo como al servidor de produccion. En ese caso lo ideal seria entonces tener un Environment Produccion (donde el datastore por ejemplo ya estaria configurado sobre el servidor de produccion) y para desarrollo otro Environment (que este configurado apuntando al servidor de desarrollo).
Un error común con el que me suelo encontrar principalmente con desarrolladores que estan empezando a trabajar con Genexus, es el de tener seteado solamente 1 Environment, configurar el datastore apuntando a un servidor de desarrollo (por ejemplo su servidor de DBMS local) y luego cuando necesitan reorganizar el servidor de produccion simplemente cambian en el mismo enviroment la configuracion del servidor.
Esto esta MAL porque por defecto los environment guardan de forma independiente el estado de la reorganizacion. Cada vez que impactamos la base de datos, genexus verifica si no hay reorganizacion pendiente, si la hay realiza la reorganizacion y si no no la hace. Luego si hacemos un nuevo cambio desde Genexus que implique reorganizar de nuevo la base de datos se pierde el ultimo script de reorganizacion (porque ya lo aplico) y genera el nuevo script correspondiente al nuevo cambio que necesita hacer.
Entonces si en algun momento en el mismo Environment cambiamos la base de datos o apuntamos a otro servidor, el environment solamente va a tratar de aplicar la ultima reorganizacion en caso que haya pendiente y si no, nisiquiera va a reorganizar.
Como resultado final podriamos tener distinta la estructura de mi base de datos desarrollo con la de produccion y podriamos tener inconsistencia en nuestra aplicacion.
Por eso se recomienda separar mis areas de desarrollo y produccion en Environemnts distintos.
Lo mismo se aplica si desarrollan una aplicacion para distintas empresas, primero porque se tendra configuraciones distintas, y segundo porque van a tener que separar los estados de reorganizacion.
Entonces se recomienda configurar un environment distinto por empresa en donde en cada environment van a configurar los detalles de implementacion correspondientes.
Mas info: http://wiki.genexus.com/commwiki/servlet/hwiki?Category%3AEnvironments,



gracias por el aporte lo voy a poner en practica
ResponderEliminar