Unofficial Content
  • This documentation is valid for:

KBDoctor : Resumen

Todos los reportes lo que devuelven es una pagina HTML, desde la cual se pueden realizar operaciones para corregir dichos problemas.

Algunas consultas, además de la pagina HTML clasifican los objetos en diferentes categorías. Por ejemplo la consulta de objetos no alcanzables, crea una categoría y agrega todos los objetos (atributos incluidos) que no son referenciados por un main ni por los llamados por este main. Lo hicimos de esa forma, para que fuera mas fácil el borrado de muchos objetos, hasta que encontremos alguna implementación que nos convenza más.

Algunos de estas consultas, son reglas propias del desarrollo en Concepto y pueden no ser útiles o aplicables a otros grupos de desarrollo por lo que deberían estudiarse con cuidado.

Error Posibles soluciones Estado
Atributos sin Dominio Mostrar dominios con el mismo tipo de datos y permitir asignárselo Implementado
Atributos sin Descripción(1) Tener la opción de cambiar la descripción desde ahí Implementado
Atributos sin titulo de columna(1) Asignarle un titulo a la columna (permitir ingresarlo)
Implementado
Atributos sin titulo(1)
Asignarle un titulo
Implementado
Atributos Char(n), con n>50 y no es VarChar Cambiar a Varchar, no se hace de forma automática
Implementado
Atributos VarChar(n) con n<25 Cambiar a Char, no se hace de forma automática Implementado
Campo clave Varchar
Cambiar a Char , no se hace de forma automática Implementado
Atributo no referenciado por programa alcanzable Listar los atributos que no son referenciado por ningún programa alcanzable. Se implementó en la consulta de objetos no alcanzables, se agregan a la categoría KBDOCTOR.Unreachable.
Implementado
Atributos descripción que no tiene índice único Crearle un índice único. Implementado
Atributos que no están en ninguna tabla
Atributo sin tabla. Abrir objetos que referencien a atributos sin tablas y que permita corregirlo.
Lista los atributos pero no es posible desde el HTML del resultado acceder a los objetos que lo utilizan.
Implementación parcial
Tablas sin descripción Lista todas las tablas que tienen descripción igual al nombre, poder cambiar la descripción. Implementado
Objeto con parm() y que no tiene in:/inout:/out Poder modificar las reglas del mismo. Implementado
Objetos que tienen variables que no basan en ATT Cambiar las variables para que se basen en atributos o dominios.
Lista los objetos con las variables no definidas en atributos pero no está funcionando asignar un atributo o dominio a las mismas.
Implementación parcial
Objeto no alcanzable Crea un listado de los objetos y pemite abrirlos o borrarlos.
Tambien genera una categoria KBDoctor.Unreachables, donde se meten todos los objetos que no son alcanzables desde algun main.
Posibles mejoras:
Distribuir dichos objetos.
WipeObject - (comentarle al objeto todas las reglas, eventos, layout, pantalla, de forma de dejarlo pelado, mantener propiedades y regla parm).
Marcar los objetos como no generables (esto esta a la espera de la implementacion de dicha funcionalidad en la rocha).
Implementado
Objeto no llamado
Siempre que no sea una TRN se puede borrar. Implementado
Objeto con parm() y Commit en exit *YES Poder cambiar la propiedad de commit on exit a *NO y ponerle commit. Abrir el objeto. Implementado
Objetos con condiciones por variables que no están basadas en un atributo
Objetos que tengan condiciones del tipo
where Att = &Var
y la variable &Var no está basada en el atributo Att. En el resultado marcar como error aquellas que además de no estar basadas en el atributo, tienen distinto tipo de datos.
Aun no implementado
Objeto con new que no tiene when duplicate Poder abrir la parte del objeto que tenga esto. Aun no implementado
Objetos con variables no usadas Listar las variables no usadas, y poder abrir el objeto para corregirlo.
Borrar las variables no referenciadas?.

Implementado

Indice formado por att no referenciado Debe ser un indice de usuario, debe borrarse, pues no se usa. Implementado
Clasificación en categorias de especificacion

Al especificar un objeto, el mismo queda clasificado en un Error/Warning, si tiene errores.

La forma de implementarlo seria: suscribirse al evento GXEvents.SpecificationFinished

[EventSubscription(GXEvents.SpecificationFinished,  ThreadOption.UserInterface)]
public void OnSpecificationFinished(object sender, SpecificationEventArgs args)

SpecificationEventArgs tiene una lista de SpecificationResult

La clase SpecificationResult tiene miembros

  • ObjectKey - Clave del objeto
  • Name - Nombre del objeto
  • Status - estado cuyos valores pueden ser
    • SpecificationResult.SPEC_RESULT_FAILED; // Error
    • SpecificationResult.SPEC_RESULT_OK; // OK
    • SpecificationResult.SPEC_RESULT_OK_W; // OK with Warnings
    • SpecificationResult.SPEC_RESULT_NOGEN // No generation

Dos posibles implementaciones:

Implementación con categoría dinámica (me gusta mas esta- Ealmeida)

a. El paquete agrega una propiedad a los objetos llamada SpecificationResult
b. Creas 3 categorias con query SpecificationResult = // una para cada valor
c. Recorres la lista y le seteas la propiedad al valor que corresponda.

Sin categoría dinámica

a. Creas dos categorías KBDoctor.Error y KBDoctor.Warning (borrarlas si existen antes)
b. Recorrer la lista y agregarlo a la categoria que corresponda.
Aun no implementado

(1) Se implementaron las tres consultas de descripción de los atributos en una sola opción de menú.

Last update: April 2024 | © GeneXus. All rights reserved. GeneXus Powered by Globant