miércoles, 18 de junio de 2014

Foro de apacheisis

No creo que suba mas entradas en este Blog por lo tanto te tengo la mala noticia que este blog queda cerrado por otro lado se crea un foro de apacheisis totalmente en español en el cual podes hacer consultas y ver informacion de este Framework el foro es : http://apacheisis.foroargentina.net/ Registrate que se va a poner bueno.

miércoles, 12 de junio de 2013

como agregar entidades de dominio y declararlas para mostrarlas.

Al importar el proyecto del arquetipo con eclipse podremos ver esto
existen 4 componentes del arquetipo que creamos estos son:
-dom: en esta seccion estara el repositorio y las entidades de dominio
-fixture ---> servicio de dominio
-objstore ---> metodos del repositorio
-viewer-webapp-> interfaz web visible al usuario,configuraciones y seguridad


Las entidades de dominio son instancias de algunas clases, usualmente (la mayoría de las veces) van a ser persistidas ya sea en memoria en un archivo o en una base de datos(SQL o NOSQL).
como vimos en el anterior post o entrada (por ser blogger XD) las clases del dominio son persistidas en una base de datos posgresql por defecto las clases residen en memoria y son borradas al finalizar el servidor.

para realizar lo que veniamos a hacer ,lo primero que hice fue crear en nuestro proyecto las clases del dominio que definimos en el UML del post de "comenzando un proyecto en isis" si no lo viste

y declararlas en el archivo isis.properties situado en el webapp/scr/main/webapp/WEB-INF/isis.properties

como figura en la imagen de abajo


sin declararlos en es isis.services el Viewer no podrá mostrar los objetos por mas que los ayamos escrito en el dominio.

En la siguiente Entrada veremos un poco sobre metaNotaciones y métodos por convención que requiere el dominio y las clases que debe heredar cada una .Son muchos pero no se asusten es cuestión de tener paciencia y dedicarle un poco de tiempo a la larga lo difícil se hace facil.

creando nuestro primer proyecto en isis

vuelvo a escribir esta entrada porque accidentalmente borre la anterior y no quedo en la cache de google.
Como consuelo me quedaron las imagenes del proyecto.
Agradecimientos:
Agradezco por anticipado a Antonio Galvez locutor de la radio  por los consejos de como encarar un proyecto que me ha dado,la mayoría de los consejos no fueron técnicos y eso esta bueno saber que no solamente importa eso en este mundo la informática que también somos personas que comemos ,dormimos (o bueno eso intentamos) y que existen otras cosas también aparte de programar.

Introduccion y experiencia:
       Cuando empezamos un proyecto independiente de lo que se trate, independientemente sea de informática o no se debe definir un Alcance y tiempo.En este caso seria que funcionalidades va a tener el sistema y en que tiempos se va a realizar.Todo esto para el cliente se resume en un beneficio y para el desarrollador en dinero.Como decía mi profesora de marketing "un buen negocio es el que ambos salen beneficiados".

     En el caso de  el desarrollo a medida para entender el alcance de requerimientos existe una herramienta llamada UML que no explicare en este blog porque ya lo daré por sabido en caso de que quieras saber como funciona esta herramienta.Recomiendo leer un libro que se llama "aprendiendo UML en 24 horas".
Aclaro que sirve muchísimo saberlo y es esencial para entender isis.

        Una de las cosas que he hablado con Antonio entre en los comportamientos de los grupos es como saber llevar a los grupos, que es lo que los motiva mas.¿como es el síndrome que llamamos del estudiante? hay que dejar el vicio que tenemos de  dejar todo para el final y para eso hay que buscar el ¿como?.Esto es todo un desafió para un grupo y se requiere tiempo y entendimiento de las personas.¿Cuales son sus gustos?¿como se sienten mejor?¿como saber llevar las situaciones en el grupo cuando hay mucha tensión? o acaso no te ha pasado alguna vez de decir uhhh siento que no llegamos!!! o todo va mal!! no anda nada!!.Hay otras formas muchísimo mejores antes de culpar a alguien o entrar en caos. Aunque entrar en caos solo sirve si hay un proceso de aprendizaje que te ayude a recapacitar y ver tus falencias y las de tu grupo.Como consejo no tomes acciones apresuradamente y actúes violentamente gritando.Si algo va mal de esta forma por ley de murphi puede ir peor.Mejor encontrar la forma de que esa persona trabaje mas feliz y se sienta mas motivado a que trabaje por obligación y a la larga piense que su trabajo es una mierda.
           Esto no es algo que se pueda aprender de un libro leyéndolo pero existen libros que nos pueden guiar de que hacer en determinadas situaciones ,uno de los libros que he leído que me ha gustado mucho es la inteligencia emocional de Daniel Goleman pero no es un libro para leer de corrido sino que hay que leerlo a conciencia y relacionarlo con tu vida diaria para que sea útil. Otro de los libros que también es muy bueno es Como ganar amigos e influir sobre las personas,que también es para leerlo de la misma manera.

          Algo que veo en cualquier tipo de equipo es que no hay que perder nunca la comunicación hay que informarse de todo lo que va pasando pero sin llegar a agobiar a los de tu equipo.El exceso de comunicación puede ser tan malo como la falta de esta.Por eso mismo esta bueno que encuentres la mejor forma de comunicarte con tu equipo sin agobiarlos y encontrando un retorno.
          Todo equipo tiene sus mañas ,metodologías para trabajar y no en todo equipo se adapta bien a las metodologías que existen ,no existe una metodología en el desarrollo de software para decir esta es mejor que otra y con esta mi equipo se adapta mas,lo que si debe contemplar una buena flexibilidad a cambios ya que los requerimientos del negocio de hoy no sean los de mañana y tal vez lo que pensamos al principio del proyecto no nos sirva en el transcurso del mismo.
         En nuestro proyecto implementamos una metodología ágil llamada Scrum pero también existen otras como XP, Kanban, etc. Que esta bueno que le pegues una leída porque tal vez encuentres la solución a alguno de tus problemas.

Inicio del desarrollo del proyecto


en primer lugar definimos lo que era realmente necesario (no todo)y de que se trataba el proyecto.Esto anterior se llama Dominio así que definimos el Dominio.
            El proyecto se trata de lo siguiente tenemos que migrar unas base de datos DBF a una base de datos postgresql para que el colegio de farmacéuticos pueda ver las cuentas corrientes de las farmacias y las farmacias puedan ver sus cuentas corrientes.
          Aclaro que añadimos algunas propiedades a los objetos porque sabemos que las vamos a utilizar posteriormente.
para esto definimos el siguiente dominio con las siguientes clases:








para el proceso de migración utilizamos el siguiente método

las bases dbf las exportamos a postgresql a una base de datos intermedia conservando las tablas tal cual estaban y luego las pasamos mediante lenguaje pgsql a una base de datos destino generada por isis.

en la primera iteración de nuestro proyecto necesitamos que nos muestre solo el saldo que representado en forma gráfica en isis vendría a ser esto


martes, 11 de junio de 2013

Como conectar isis a una base de datos postgresql

antes que escribir nada quiero decirles que estoy muy contento de haber realizado esto que aunque fue muy simple de hacer fue muy gratificante lograrlo ya que era un paso crucial para la hora de migrar la base de datos en DBF comento los pasos que segui para realizarlo.

despues de crear el arquetipo de isis me diriji al pom.xml del WebApp y descomente las siguientes lineas
<dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.1-901.jdbc4</version>
        </dependency>

luego de descomentar esta dependencia en el archivo comente en el archivo persistor_datanucleous.properties situado en webApp/src/main/webApp/WEB-INF de HSQLDB-in-Memory
      y descomente los realacionados a postgresql

y como el usuario y contraseña que cree en postgresql  eran
user:isis
pass:isis
esquema de la base:isis
no me falto modificar nada mas pero si tubiese que hacerlo en esas anteriores lineas se podria modificar tranquilamente y es lo mas recomendable.Pero para una fase de prueba esta bien pero recordar de a la hora de implementar el sistema cambiarlas por seguridad.

luego cuando ejecute el programa fui a fixture install y en la base de datos aparecio lo siguiente
taraannnnn...
nos creo la base de datos generando las tablas con sus columnas sus tipos y toda la mar en coche.

una cosa mas con esto asi como esta nos creara las tablas todas las veces corramos nuestro servidor borrando las existentes para que no suceda esto debemos en la linea
isis.persistor.datanucleus.impl.datanucleus.autoCreateSchema=true
remplazarla por
isis.persistor.datanucleus.impl.datanucleus.autoCreateSchema=false
tambien situada en el archivo persistor_datanucleous.properties

lunes, 10 de junio de 2013

instalacion de pluggin de maven en elclipse

para que se nos haga mas facil la programación de isis, la generación de arquetipos y no tengamos que usar todo el tiempo la consola (aunque la sigo usando igual) podemos utilizar el pluggin de maven en eclipse  para ello vamos a ayuda Eclipse MarketPlace y seleccionamos para instalar  maven integration for eclipse luego damos siguiente siguiente aceptar y reiniciamos eclipse para actualizar los cambios


miércoles, 5 de junio de 2013

creación de nuestro primer arquetipo en isis

una vez configurado el entorno de maven procederemos a crear nuestro primer programa mediante el arquetipo de apache isis para esto nos posicionamos en el workspace donde se ubican todos los programas de java. y tipeamos el comando.

mvn archetype:generate

después que maven se descargue un par de cosas desde sus repositorios nos pedira algunas cosas.
una de las primeras cosas que nos pedira es el numero de arquetipo nesesitamos generar buscamos en la larga lista el que dice isis y ponemos el numero de arquetipo en mi caso me ayude para encontrarlo con el comando mvn archetype:generate >arquetipos.txt y abri el documento arquetipos.txt .


en la entrada de lo que nos pide maven ingrese:

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):258
Choose org.apache.isis:quickstart-archetype version:
1: 0.1.2-incubating
2: 0.2.0-incubating
Choose a number: 2:1
Define value for property 'groupId': : org.testDeIsis
Define value for property 'artifactId': : testDeIsis
Define value for property 'version': 1.0-SNAPSHOT:
Define value for property 'package': org.testDeIsis:org.testDeIsis
Confirm properties configuration:
groupId: org.testDeIsis
artifactId: testDeIsis
version: 1.0-SNAPSHOT
package: org.testDeIsis
Y:Y

luego de especificar esto en maven procederemos a pocisionarnos en la carpeta que descargo y genero maven donde se encuentra el archivo pom.xml  y correrla con el siguiente comando.

mvn clean install && mvn antrun:run


y nos aparecera algo asi le damos start y ya se nos iniciara nuestro server


para loguearnos en el Member Login pondremos como usuario sven y de contraseña pass


y ya podremos ver nuestra aplicación generada de isis

instalacion de maven en linux (nesesario para empezar con isis)

para instalar maven en linux debemos seguir los siguientes pasos
-instalar java jdk en la pagina web de java solo es un archivo .rpm
-instalar Eclipse.
dirigirnos a la pagina http://maven.apache.org
hacer clic en Downloads y dirigirnos a la parte donde dice mirrors "servidores espejo"


una vez que estemos ay podemos ver que existen varios lugares para descargarlos en este caso tendremos que descargar los binarios de maven en tar.gz

Una vez que lo hemos descargado tendremos que descomprimir el archivo como administradores porque vamos a colocar en la carpeta /opt donde se guardan lo programas opcionales.Aclaro que este en esta carpeta no es obligatorio pero a mi me gusta tener ordenado todo y por eso decidí ubicarla en este sitio.

para esto abrimos la consola de linux y nos posicionamos donde se localiza el archivo y para descomprimirlo utilizaremos el comando:
sudo tar -xzvf nombre_del_archivo.tar.gz /opt
tambien es valido el remplazo del siguiente comando por este otro
su -c 'tar -xzvf nombre_del_archivo.tar.gz /opt'

una vez que esta descomprimido la carpeta /opt nos faltaria configurar las variables de entorno de maven y de java para esto salimos del usuario root tipeando exit y nos posicionamos en el directorio home de nuestro usuario y abrimos con un editor  el archivo .bashrc que se encuentra oculto por poseer un punto al principio de su nombre
el comando para realizar esto es:
gedit .bashrc

una vez realizado esto debemos agregar las siguientes lineas al final del archivo.
export M2_HOME=/opt/apache-maven-2.0.11                              
export PATH=/opt/apache-maven-2.0.11/bin:${PATH}                 
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19/jre

en la primer linea debemos remplazar /opt/apache-maven-2.0.11 por la carpeta de maven que se encuentra en opt y /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19/jre por la carpeta en la que se encuentra el jre de java

si todo funciona bien escribimos
mvn --version
y si todo funciona bien nos debería arrojar lo siguiente
Apache Maven 2.0.11 (r909250; 2010-02-12 02:55:50-0300)
Java version: 1.7.0_19
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19/jre
Default locale: es_ES, platform encoding: UTF-8
OS name: "linux" version: "3.9.4-200.fc18.i686" arch: "i386" Family: "unix"