Gracias daniel...
esta buena la idea...me va a llevar un tiempito cambiar las cosas pero a
futuro va a ser mejor!
Salu2,
On Fri, Sep 12, 2008 at 12:02 PM, Daniel Calvin <[EMAIL PROTECTED]>wrote:
> Hola Leandro
>
> Te digo comomanejo ese tipode cosas.
> Uso un campo que me dice la funciond el estado, su siginificado.
>
> Ejemplo
>
> 1 Activo 00000001
> 2 Cara de Tomate 00000001
> 3 En curso 00000010
> 4 Trabajando en ello 00000010
> 5 Esperando algo 00000100
> 5 Detenido 00000100
> 6 Cancelado 00001000
>
> Esto me idendepndiza del ID y me permite tener mas de un estado, que
> aplique al mismo concepto o una conjuncion de ellos.
>
> De esa forma, mas alla de tener su ID y una leyenda, lo que se hardcodea es
> el valor que reopresenta.
> Puedo tener mas de une stado que significa la mismo, puedo tener enums que
> me permitan evaluar situaciones validas o necesarias para:
>
> en pseudocodigo:
>
> [Flag] // Esto par indicar que los valores deben ser potencia de 2
> public enum TareaEstadaEnum { Activo=1, EnCurso=2,Detenido=4,Cancelado=8 }
>
> Esto permite luego tener armadas las precondiciones como expresiones
> booleanas, un buen complemento de esto es armar algun enum para condiciones
> ante una posible acciones.
>
> [Flag] // Esto par indicar que los valores deben ser potencia de 2
> Public enum AccionesEnum { Cancelar=1, ReActivar=2, NoSeQueOtra=4 }
>
> Luego en alguna clase o helper podes establecer precondiciones para una
> tarea en base su estado, indpendientemente de como se llame en la base de
> datos o como se lo muestres al usuario.
>
> En Coop evaluamos algunas situaciones utlizando esta tecnica, aca no tengo
> nada a mano en C#, te pego algo vb6, que aplica el concepto.
>
> Ej:
>
> OPCAMHelper.Estado.Admite(enuOperaciones.Abrir, OEstado)
> Esto te dice si par el estado actual, OEstado, se puede o no aplicar la
> operación abrir, (enuOperaciones.Abrir).
>
> OPCAMHelper.Estado.LogOperacionesAdmitidas( OEstado, enuOperaciones.Abrir )
> Esrto registra en un Log loque se intenta hacer y sus violaciones, si
> existen.
>
> OEstado = OPCAMHelper.Estado.ActualizaEstado(enuOperaciones.Abrir, OEstado)
> Esto actualiza al nuevo estado si la transicion es válida y lo retorna.
>
> ( Ojo esto s muy viejo y en modo Helper, es VB6, podes hacer algo parecido
> con OOP y mucho mas elgante. )
>
> Algunos enum de lo que utiliza esto y algunas constantes.
>
> Public Enum enuOperaciones
> Ninguna = 0
> Abrir = 1
> Desdoblar = 2
> Agrupar = 4
> FiltroCrear = 8
> FiltroAplicar = 16
> Buscar = 32
> Modificar = 64
> Generar = 128
> Validar = 256
> Cerrar = 512
> Revisar = 1024
> Eliminar = 2048
> Exportar = 4096
> ExportarErrores = 8192
> End Enum
>
> Public Enum enuOperacionesEstado
> Ninguno = 0
> Abierto = 1
> FiltroCreado = 2
> FiltroAplicado = 4
> OperacionSeleccionada = 8
> Modificado = 16
> generado = 32
> validado = 64
> Cerrado = 128
> Revisado = 256
> Todos = Ninguno Or Abierto Or FiltroCreado Or FiltroAplicado Or
> OperacionSeleccionada Or Modificado Or generado Or validado Or Cerrado Or
> Revisado
> End Enum
>
> Public Enum enuOperacionCondiciones
> Abrir = enuOperacionesEstado.Ninguno Or enuOperacionesEstado.Cerrado
> Desdoblar = enuOperacionesEstado.Abierto Or
> enuOperacionesEstado.OperacionSeleccionada
> Agrupar = enuOperacionesEstado.Abierto Or
> enuOperacionesEstado.OperacionSeleccionada
> FiltroCrear = enuOperacionesEstado.Abierto
> FiltroAplicar = enuOperacionesEstado.Abierto Or
> enuOperacionesEstado.FiltroCreado
> Buscar = enuOperacionesEstado.Abierto
> Modificar = enuOperacionesEstado.Abierto
> Generar = enuOperacionesEstado.Abierto Or enuOperacionesEstado.validado
> Exportar = enuOperacionesEstado.Abierto
> ExportarErrores = enuOperacionesEstado.Abierto Or
> enuOperacionesEstado.validado
> Validar = enuOperacionesEstado.Abierto
> Revisar = enuOperacionesEstado.Abierto
> Cerrar = enuOperacionesEstado.Abierto
> Eliminar = enuOperacionesEstado.Abierto Or
> enuOperacionesEstado.OperacionSeleccionada
> End Enum
>
>
> En Net lo podes armar mucho mejor y más dinámico.
>
> Bue, en este caso es para amnejar parte de los permisos sobre ciertos
> controladores de caso de uso.
>
> Saludos
>
> Daniel Calvin
>
>
>
>
>
> El 12 de septiembre de 2008 10:35, Leandro Halfon <[EMAIL PROTECTED]
> > escribió:
>
>> Lista..tengo un problema que supongo que muchos de ustedes habran tenido
>> en algun momento..a ver si me pueden ayudar
>>
>> Hace un tiempo tenia un sistema de tracking que era simplemente ABM'S
>> varios..
>> Por ej: una actividad tenia varios estados (nueva, en cola, terminada,
>> etc) pero sin logica alguna.
>>
>> A nivel de BD, la actividad tiene una FK a una tabla de estados...
>>
>> Esos estados, en la BD de produccion son diferentes a los de la BD de
>> testing ...
>>
>> El problema es que como ahora se agregaron varias validaciones, reglas de
>> negocios, etc en base a esos estado (porq fue un sistema que se fue haciendo
>> de a poco), si comparo los valores en base a un "id" dijo al momento de
>> realizar prueba se me complica....y tampoco me gusta mucho eso ya que seria
>> harcodeo..
>>
>> alguna idea?
>>
>> Espero que se haya entendido...
>>
>> Gracias!
>>
>> Leandro
>>
>
>
>
> --
> Daniel A. Calvin
> Cooperator Team Member
> http://www.cooperator.com.ar
> Microsoft Certified Professional
>