Ejemplo n.º 1
0
        public IProceso ObtenerProcesoActual(IFlujograma iFlujograma, IIdentificable identificable)
        {
            XMLProceso proceso = null;

            string nombreFichero = string.Format("{0} {1}.{2}", identificable.Entidad, iFlujograma.Nombre, "xml");

            if (!File.Exists(nombreFichero))
            {
                proceso = new XMLProceso();

                proceso.EntidadIDentificable = identificable;
                proceso.FlujogramaDef        = iFlujograma;
            }
            else
            {
                XmlSerializer s = new XmlSerializer(typeof(XMLProceso));



                using (TextReader r = new StreamReader(nombreFichero))
                {
                    proceso = s.Deserialize(r) as XMLProceso;

                    r.Close();
                }

                proceso.EntidadIDentificable = identificable;
            }

            return(proceso);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            List <IIdentificable> people = new List <IIdentificable>();

            while (true)
            {
                string[] tokens = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
                if (tokens.Length == 1 && tokens[0] == "End")
                {
                    break;
                }
                if (tokens.Length == 2)
                {
                    IIdentificable t = (IIdentificable) new Robot(tokens[0], tokens[1]);
                    people.Add(t);
                }
                if (tokens.Length == 3)
                {
                    IIdentificable t = (IIdentificable) new Citizen(tokens[0], int.Parse(tokens[1]), tokens[2]);
                    people.Add(t);
                }
            }
            string lastDigits = Console.ReadLine();

            for (int i = 0; i < people.Count; i++)
            {
                if (people[i].Check(lastDigits) == false)
                {
                    Console.WriteLine(people[i].ID);
                }
            }

            Console.ReadKey();
        }
Ejemplo n.º 3
0
        public IProceso Realizar(ITransicion transicion, IIdentificable identificable)
        {
            //comprobamos si los estados origen y destino tienen el mismo flujograma
            if (!transicion.Origen.Flujograma.Equals(transicion.Destino.Flujograma))
                throw new NoMismoFlujogramaException();

            //obtenemos el proceso asociado al flujograma y su identificable
            IProceso proceso = factoria.ObtenerProcesoActual(transicion.Flujograma, identificable);

            //comprobamos que la transición esté perfectamente definida
            if (!proceso.FlujogramaDef.EsValido(transicion))
                throw new InvalidOperationException("Transición no definida.");

            //preparamos las precondiciones por defecto, y lanzamos un evento de precondición que el usuario puede
            //cancelar en cualquier momento para abortar la transición
            PrecondicionTransicionCancelableEventArgs precondicion = new PrecondicionTransicionCancelableEventArgs() { Transicion = transicion };
            if (OnAntesTransicion != null)
            {
                OnAntesTransicion(this, precondicion);
            }

            //comprobamos que la ultima transición realizada tenga elementos válidos
            if (proceso.UltimaTransicion != null && proceso.UltimaTransicion.Destino == null)
                throw new NoSuchElementException();

            //miramos si efectivamente la transición que se quiere realizar tiene como estado origen
            //el mismo estado destino de la última transición que se realizó en el proceso
            if (proceso.UltimaTransicion != null && !proceso.UltimaTransicion.Destino.Equals(transicion.Origen))
                throw new InvalidOperationException("El estado origen tiene que ser el mismo que el estado destino de la última transición.");

            //vemos si el usuario ha cancelado la operación
            if (!precondicion.Cancelar)
            {
                //si hasta ahora todo va bien, realizamos el cambio de transicion

                //primero guardamos la ultima transición en el histórico
                if (proceso.UltimaTransicion != null)
                {
                    proceso.ProcesosAnteriores.Add(proceso.UltimaTransicion.FechaTransicion, proceso.UltimaTransicion);
                }

                //actualizamos el proceso
                transicion.FechaTransicion = DateTime.Now;
                proceso.UltimaTransicion = transicion;
                proceso.EstadoActual = transicion.Destino;

                factoria.Almacenar(proceso);

                if (OnDespuesTransicion != null)
                {
                    OnDespuesTransicion(this, new TransicionEventArgs() { Trancion = transicion });
                }
            }
            return proceso;
        }
Ejemplo n.º 4
0
        private int Find(IIdentificable[] checks, IIdentificable value)
        {
            for (int x = 0; x < checks.Length; x++)
            {
                if (checks[x].Equals(value))
                {
                    return(x);
                }
            }

            return(-1);
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            //Clase2();

            Curso      curso      = new Curso();
            Instructor instructor = new Instructor()
            {
                nombre    = "Andres",
                apellido  = "Villa",
                Documento = new Documento()
                {
                    TipoDocumento   = "DU",
                    NumeroDocumento = "1234123"
                }
            };

            curso.InstructorCurso = instructor;

            for (int i = 0; i < 30; i++)
            {
                Alumno alumno = new Alumno()
                {
                    apellido  = $"apellido alumno {i}",
                    nombre    = $"nombre alumno {i}",
                    Documento = new Documento()
                    {
                        TipoDocumento   = "DU",
                        NumeroDocumento = $"{i}"
                    }
                };
                curso.Alumnos[i] = alumno;
            }

            Persona[] arrayDePersonas = curso.ObtenerParticipantes();

            for (int i = 0; i < arrayDePersonas.Length; i++)
            {
                Console.WriteLine(arrayDePersonas[i].ObtenerCodigoPersona());
            }

            IIdentificable miCurso = curso;

            Console.ReadKey();
        }
Ejemplo n.º 6
0
        public IProceso ObtenerProcesoActual(IFlujograma iFlujograma, IIdentificable identificable)
        {
            XMLProceso proceso = null;

            string nombreFichero = string.Format("{0} {1}.{2}", identificable.Entidad, iFlujograma.Nombre, "xml");

            if (!File.Exists(nombreFichero))
            {
                proceso = new XMLProceso();

                proceso.EntidadIDentificable = identificable;
                proceso.FlujogramaDef = iFlujograma;

            }
            else
            {
                XmlSerializer s = new XmlSerializer(typeof(XMLProceso));

                using (TextReader r = new StreamReader(nombreFichero))
                {
                    proceso = s.Deserialize(r) as XMLProceso;

                    r.Close();
                }

                proceso.EntidadIDentificable = identificable;
            }

            return proceso;
        }
Ejemplo n.º 7
0
        public IProceso Realizar(ITransicion transicion, IIdentificable identificable)
        {
            //comprobamos si los estados origen y destino tienen el mismo flujograma
            if (!transicion.Origen.Flujograma.Equals(transicion.Destino.Flujograma))
            {
                throw new NoMismoFlujogramaException();
            }

            //obtenemos el proceso asociado al flujograma y su identificable
            IProceso proceso = factoria.ObtenerProcesoActual(transicion.Flujograma, identificable);

            //comprobamos que la transición esté perfectamente definida
            if (!proceso.FlujogramaDef.EsValido(transicion))
            {
                throw new InvalidOperationException("Transición no definida.");
            }

            //preparamos las precondiciones por defecto, y lanzamos un evento de precondición que el usuario puede
            //cancelar en cualquier momento para abortar la transición
            PrecondicionTransicionCancelableEventArgs precondicion = new PrecondicionTransicionCancelableEventArgs()
            {
                Transicion = transicion
            };

            if (OnAntesTransicion != null)
            {
                OnAntesTransicion(this, precondicion);
            }

            //comprobamos que la ultima transición realizada tenga elementos válidos
            if (proceso.UltimaTransicion != null && proceso.UltimaTransicion.Destino == null)
            {
                throw new NoSuchElementException();
            }

            //miramos si efectivamente la transición que se quiere realizar tiene como estado origen
            //el mismo estado destino de la última transición que se realizó en el proceso
            if (proceso.UltimaTransicion != null && !proceso.UltimaTransicion.Destino.Equals(transicion.Origen))
            {
                throw new InvalidOperationException("El estado origen tiene que ser el mismo que el estado destino de la última transición.");
            }

            //vemos si el usuario ha cancelado la operación
            if (!precondicion.Cancelar)
            {
                //si hasta ahora todo va bien, realizamos el cambio de transicion

                //primero guardamos la ultima transición en el histórico
                if (proceso.UltimaTransicion != null)
                {
                    proceso.ProcesosAnteriores.Add(proceso.UltimaTransicion.FechaTransicion, proceso.UltimaTransicion);
                }

                //actualizamos el proceso
                transicion.FechaTransicion = DateTime.Now;
                proceso.UltimaTransicion   = transicion;
                proceso.EstadoActual       = transicion.Destino;


                factoria.Almacenar(proceso);

                if (OnDespuesTransicion != null)
                {
                    OnDespuesTransicion(this, new TransicionEventArgs()
                    {
                        Trancion = transicion
                    });
                }
            }
            return(proceso);
        }