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); }
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(); }
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; }
private int Find(IIdentificable[] checks, IIdentificable value) { for (int x = 0; x < checks.Length; x++) { if (checks[x].Equals(value)) { return(x); } } return(-1); }
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(); }
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; }
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); }