Beispiel #1
0
        public void Run(SimulationSettings settings)
        {
            _chainLinkFactory.SetSettings(settings);
            _timerService.SetSettings(settings);

            var checkIn = _chainLinkFactory.CreateCheckInDesk();
            var checkInToConveyorConnector = _chainLinkFactory.CreateConveyorConnector();
            var checkInToPsc = _chainLinkFactory.CreateManyToOneConveyor(settings.ConveyorSettingsCheckInToPsc[0].Length);
            var psc          = _chainLinkFactory.CreatePsc();
            var PscToMpa     = _chainLinkFactory.CreateOneToOneConveyor(settings.ConveyorSettingsPscToMpa[0].Length);
            var PscToAsc     = _chainLinkFactory.CreateOneToOneConveyor(settings.ConveyorSettingsPscToAsc[0].Length);
            var asc          = _chainLinkFactory.CreateAsc();
            var ascToMpa     = _chainLinkFactory.CreateOneToOneConveyor(settings.ConveyorSettingsAscToMpu[0].Length);
            var mpa          = _chainLinkFactory.CreateMpa();
            var bsu          = _chainLinkFactory.CreateBsu();
            var mpaToBsu     = _chainLinkFactory.CreateOneToOneConveyor(10);         //Implement conveyorSettings
            var bsuToMpa     = _chainLinkFactory.CreateOneToOneConveyor(10);         //Implement conveyorSettings
            var MpaToAA      = _chainLinkFactory.CreateOneToOneConveyor(settings.ConveyorSettingsMpaToAa[0].Length);
            var aa           = _chainLinkFactory.CreateAa();
            var pua          = _chainLinkFactory.CreatePua();

            //EndNodes
            var checkInDispatcher = _chainLinkFactory.CreateCheckInDispatcher();
            var bagCollector      = _chainLinkFactory.CreateBagCollector();

            //Linking
            checkInDispatcher.SetCheckIns(new List <ICheckInDesk> {
                checkIn
            });

            checkIn.AddSuccessor(checkInToConveyorConnector);
            //checkIn1.AddSuccessor(checkIn1ToConveyorConnector);
            //checkIn2.AddSuccessor(checkIn2ToConveyorConnector);
            checkInToConveyorConnector.SetNextNode(checkInToPsc, 0);
            checkInToPsc.SetSuccessor(psc);
            //checkIn1ToConveyorConnector.SetNextNode(checkIn2ToPsc, 1);
            //checkIn2ToConveyorConnector.SetNextNode(checkIn2ToPsc, 2);

            // checkInToPsc.SetSuccessor(psc);

            //Transporting nodes
            mpaToBsu.SetSuccessor(bsu);
            PscToMpa.SetSuccessor(mpa);
            PscToAsc.SetSuccessor(asc);
            ascToMpa.SetSuccessor(mpa);
            MpaToAA.SetSuccessor(aa);
            bsuToMpa.SetSuccessor(mpa);

            //Processing and complex nodes
            psc.AddSuccessor(PscToMpa);
            psc.AddSuccessor(PscToAsc);
            asc.AddSuccessor(ascToMpa);
            asc.AddSuccessor(bagCollector);
            aa.AddSuccessor(bagCollector);
            mpa.AddSuccessor(MpaToAA);
            mpa.AddSuccessor(mpaToBsu);
            bsu.SetSuccessor(bsuToMpa);
            aa.AddSuccessor(bagCollector);

            //Starting
            _timerService.RunNewTimer();
            checkInToPsc.Start();

            PscToMpa.Start();
            MpaToAA.Start();
            mpaToBsu.Start();
            bsuToMpa.Start();
            checkInDispatcher.Start();
        }