Ir al contenido principal

Revisiones y undos

Algo que me ha sido muy útil en la linea X de Genexus son las "revisions".

Basicamente cada objeto que se salva guarda una revisión del mismo, con lo cual comparar una revisión con otra es muy sencillo y eventualmente restaurar alguna.




Sin embargo es la segunda vez que cometo el mismo error y esta vez el amigo Gonzalo Arcos me "iluminó", así que lo dejo escrito por si le aporta a alguien.

El problema puntual es que en una transacción cambié una "foreing key" para que en lugar de ingresar los valores se ingresaran las descripciones, es decir cambié el valor de la propiedad Input Type del atributo.

Luego quise volver atrás el cambio así que fui al "history" de la transacción y recuperé la revisión anterior a ese cambio.

Aparentemente no me funcionaba, es decir, se restauraba la revisión correctamente creando una nueva revisión pero el atributo seguía con el valor cambiado.

¿Cuál era el problema?

Estaba restaurando el objeto equivocado.
Es decir, cuando se edita una transacción, por un tema de practicidad, no solo se edita dicho objeto sino los atributos que la componen, los cuales son otro objeto en si.

En esta pantalla estoy editando dos objetos a la vez: qué atributos pertenecen a la estructura (la transacción en si) y las propiedades de cada uno de los atributos (cada atributo como un objeto independiente).


Esto es muy práctico porque me evita tener que abrir otro objeto (atributo) para cambiar una simple propiedad.

Esa practicidad me llevó a pensar en "recuperar la revisión de la transacción" cuando en realidad era la del atributo la que quería recuperar. La solución es muy simple, abrir el objeto atributo en sí y recuperar la revisión correspondiente del mismo.

Tip: algo similar sucede cuando se quiere renombrar un atributo, un error bastante comun es hacerlo en la propia estructura donde en realidad se está definiendo un nuevo atributo ya que se referencian por nombre. Si se quiere renombrar hay que cambiarle la propiedad en la ventana de la izquierda.

Comentarios

  1. Tambien pasa con las instancias de un Pattern, que se editan desde la parte "patterns" de la transaccion, pero para volver atras, hay que volver a la revision del Objeto Instancia

    ResponderBorrar
  2. Una corrección: 'Si se quiere renombrar hay que cambiarle la propiedad en la ventana de la derecha".
    Cambié izquierda por derecha, porque las Properties están por defecto a la derecha.

    ResponderBorrar
    Respuestas
    1. No te entendí.
      Las ventanas son movibles así que izquiera y derecha no es muy preciso, pero si considero la imágen en el post lo que yo digo es que a la derecha editas las propiedades de los atributos (ejemplo: renombro un atributo) y a la izquierda (centro) la estructura de la TRN (qué atributos participan de la misma).

      Borrar

Publicar un comentario

Entradas más populares de este blog

Abrir links con aplicaciones nativas y no el browser (deeplinking)

El problema que tengo con algunas aplicaciones Android/iOS es que cuando recibo un link por algún medio (mail, tweet, etc) al abrirlo me lo abre con el browser, en lugar de abrirlo con una aplicación nativa asociada a ese “contenido”. Por ejemplo, si recibo un link a un tweet espero que lo abra con alguna aplicación de twitter que tenga instalada y no con el browser. De modo análogo si recibo un mail con una nota de prensa de un medio X y tengo la aplicación de ese medio X instalada, espero que el link lo abra con la aplicación nativa y no con el browser. Lo mismo quisiera con mi aplicación de "banking" o cualquiera que tenga instalada y sepa manejar ese "contenido" (link). Los motivos son bastante obvios pero los resumo en: la experiencia de usuario es mucho mejor en la aplicación nativa que en el navegador. Parte importante del tema es que el mismo link sea válido tanto para ver el contenido en el browser como para verlo en la aplicación, porque como prove

¡A la salud de mi KB!

Es bueno, especialmente en "bases de conocimiento" (KB) que han pasado por varias versiones de Genexus, chequear su "estado de salud". En este sentido KBDoctor  es una herramienta que ayuda mucho, principalmente desde el punto de vista del "modelo" Genexus (atributos, calls, definiciones de variables, etc) representado en una KB. También es útil revisar la salud de los archivos que lo soportan. Hasta la 9.0 eran archivos C-tree (los famosos .DAT) que tenían indices (los famosos .IDX) y teníamos en "rebuild -y" que mejoraba esos archivos y sobre todo reconstruía los indices. A partir de la X las KBs se almacenan en MS SQL Server por lo cual la administración de la misma pasó de ser un "file server" a un "database server". En este sentido algo que me ha dado muy buenos resultados es el "CheckKnowledgeBase".

Rocha:Constantes tipo fecha

En la Rocha se soportan constantes del tipo fecha o fecha-hora con formato ANSI/ISO (AAAA-MM-DD HH:MM:SS).  Tecnicamente (Sintáxis): <date>::=    [0-9]{1,4}"/"[0-9]{1,2}"/"[0-9]{1,2} | [0-9]{1,4}"."[0-9]{1,2}"."[0-9]{1,2} | [0-9]{1,4}"-"[0-9]{1,2}"-"[0-9]{1,2} <hms>::=    [0-9]{1,2}[ap] | [0-9]{1,2}":"[0-9]{1,2}[ap]? | [0-9]{1,2}":"[0-9]{1,2}":"[0-9]{1,2}[ap]? <constant> ::=   "#"<date>"#" | "#"<date> <hms>"#" | "#"<hms>"#" Funcionalmente Se pueden utilizar esas constantes en las reglas, eventos, propiedades, etc (todo lugar donde se utilice el parser): Algunos ejemplos básicos: &FechaInicial=#2007-01-01# &FechaHoraInicial=#07-1-1 11:15a# &HoraInicial=#11a# Me parece bueno no tener que escribir funciones (CTOD, TTOC) sobre constantes tipo char para lograr una fecha y mucho mejor aun en