Example #1
0
        private static void Main(string[] args)
        {
            var xml        = SimulationCases.LoadXmlAsync(SimulationCases.Case01).Result;
            var simulation = new RentalContractSimulationFromXml(xml);
            var simulator  = new Simulator(simulation);

            SimulatorPrinter.PrintInfo("blablabla balbla");

            simulator.Start();

            Console.WriteLine("---- END ----");
            Console.ReadKey();
        }
        public async Task <ProcessSimulation> LoadAsync(string caseName)
        {
            var processKind = await LoadDefinitionAsync();

            var caseXml = await SimulationCases.LoadXmlAsync(caseName);

            var simulation = new RentalContractSimulationFromXml(caseXml);

            simulation.Prepare();
            var transactions = simulation.ProcessInstance.GetTransactions();

            foreach (var instance in transactions)
            {
                TreeStructureHelper.Traverse <TransactionInstance, TransactionKind>(instance,
                                                                                    (node) => processKind.GetTransactionById(node.Id), (transactionInstance, transactionKind) =>
                {
                    transactionInstance.TransactionKind = transactionKind;
                });
            }

            return(simulation);
        }
        public async Task Start()
        {
            if (timer == null)
            {
                timer = new Timer(NotifySimulationNextStep);
            }

            // var caseParser = new SimulationCaseParser();
            var parser = new ProcessKindXmlParser();

            var xml = await SimulationCases.LoadXmlAsync(SimulationCases.ModelDefinition);

            processKind = parser.ParseDefinition(xml);

            var caseXml = await SimulationCases.LoadXmlAsync(SimulationCases.Case01);

            simulation = new RentalContractSimulationFromXml(caseXml);
            simulation.Prepare();

            //send model definition
            await Hub.Clients.All.NotifyStart(processKind);

            timer.Change(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1));
        }
        private static async Task <ProcessKind> LoadDefinitionAsync()
        {
            var xml = await SimulationCases.LoadXmlAsync(SimulationCases.ModelDefinition);

            return(new ProcessKindXmlParser().ParseDefinition(xml));
        }