Mostrando entradas con la etiqueta apache isis. Mostrar todas las entradas
Mostrando entradas con la etiqueta apache isis. Mostrar todas las entradas

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