Пример #1
0
        public async Task RunWorkflow()
        {
            var nm = new NotifyManager();

            var configuration = new ConfigurationBuilder().Build();

            var scriptEngine = new ScriptEngine();

            var lg = new A2v10.ProcS.Tests.FakeLogger();

            var epm = new EndpointManager();

            var sp = new Services(epm);

            var rm = new ResourceManager(sp);

            var storage = new A2v10.ProcS.Tests.FakeStorage(rm, "../../../workflows/");

            var repository = new Repository(storage, storage, configuration);

            var mgr = new SagaManager(sp);

            var pmr = new PluginManager(sp);

            String pluginPath = ChatbotTests.GetPluginPath();

            ProcS.RegisterSagas(rm, mgr, scriptEngine, repository);
            ProcS.RegisterActivities(rm);

            pmr.LoadPlugins(pluginPath, configuration);


            pmr.RegisterResources(rm, mgr);


            var taskManager = new SyncTaskManager();
            var keeper      = new InMemorySagaKeeper(mgr.Resolver);
            var bus         = new ServiceBus(taskManager, keeper, lg, nm);
            var engine      = new WorkflowEngine(repository, bus, scriptEngine, lg, nm);

            sp.Add(bus);
            sp.Add(engine);

            var param = new DynamicObject
            {
                ["ChatId"] = "0c3af6d2-0000-0000-d2f6-3a0c00000000"
            };
            IInstance inst = await engine.StartWorkflow(new Identity("ChatBotTest.json"), param);

            await bus.Process();

            var plug = pmr.GetPlugin <Plugin>(Plugin.Name);
            await plug.GetBotAsync(BotEngine.Mocking, "TestBot");

            var m1json = msg1.Replace('\'', '"');
            var m1do   = DynamicObjectConverters.FromJson(m1json);
            var m1     = rm.Unwrap <IMessage>(m1do);

            bus.Send(m1);

            await bus.Process();

            var ni = await repository.Get(inst.Id);

            Assert.AreEqual("WaitForName", ni.CurrentState);
        }