public void Almacenar(IProceso proecso) { XMLProceso xmlpro = XMLProceso.Transformar(proecso); string nombreFichero = string.Format("{0} {1}.{2}", proecso.EntidadIDentificable.Entidad, proecso.FlujogramaDef.Nombre, "xml"); XmlSerializer s = new XmlSerializer(typeof(XMLProceso)); using (TextWriter w = new StreamWriter(nombreFichero)) { s.Serialize(w, xmlpro); w.Close(); } //throw new NotImplementedException(); }
public static XMLProceso Transformar(IProceso proceso) { XMLProceso sol = null; if (proceso is XMLProceso) { sol = proceso as XMLProceso; } else { sol = new XMLProceso(); sol.EntidadIDentificable = proceso.EntidadIDentificable; sol.EstadoActual = proceso.EstadoActual; sol.FlujogramaDef = proceso.FlujogramaDef; //sol.ProcesosAnteriores = proceso.ProcesosAnteriores; sol.UltimaTransicion = proceso.UltimaTransicion; } return(sol); }
public Bicicleta(IProceso ensamblar, IProceso pintar) : base(ensamblar, pintar) { }
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); }
protected Vehiculo(IProceso ensamblar, IProceso pintar) { this._ensamblar = ensamblar; this._pintar = pintar; }
// Constructor public GerenteProcesos(IProceso w) { unProceso = w; }
public static XMLProceso Transformar(IProceso proceso) { XMLProceso sol = null; if (proceso is XMLProceso) { sol = proceso as XMLProceso; } else { sol = new XMLProceso(); sol.EntidadIDentificable = proceso.EntidadIDentificable; sol.EstadoActual = proceso.EstadoActual; sol.FlujogramaDef = proceso.FlujogramaDef; //sol.ProcesosAnteriores = proceso.ProcesosAnteriores; sol.UltimaTransicion = proceso.UltimaTransicion; } return sol; }
public Yate(IProceso ensamblar, IProceso pintar) : base(ensamblar, pintar) { }