예제 #1
0
        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();
        }
예제 #2
0
        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();
        }
예제 #3
0
        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);
        }
예제 #4
0
 public Bicicleta(IProceso ensamblar, IProceso pintar) :
     base(ensamblar, pintar)
 {
 }
예제 #5
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);
        }
예제 #6
0
 protected Vehiculo(IProceso ensamblar, IProceso pintar)
 {
     this._ensamblar = ensamblar;
     this._pintar    = pintar;
 }
예제 #7
0
 // Constructor
 public GerenteProcesos(IProceso w)
 {
     unProceso = w;
 }
예제 #8
0
        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;
        }
예제 #9
0
 public Yate(IProceso ensamblar, IProceso pintar) : base(ensamblar, pintar)
 {
 }