コード例 #1
0
ファイル: AppChatten.cs プロジェクト: slieser/sandbox
        public void Run() {
            FlowRuntimeConfiguration.SynchronizationFactory = () => new SyncWithWPFDispatcher();
            var frc = new FlowRuntimeConfiguration();
            frc.AddStreamsFrom("appchatten.application.root.flow", Assembly.GetExecutingAssembly());

            var chat = new Chat(new QueueFinder<Message>());
            var mainWindow = new MainWindow();

            frc.AddAction<string>("anmelden", chat.Anmelden);
            frc.AddAction<string>("verbinden", chat.Verbinden);
            frc.AddFunc<string, Message>("absender_hinzufuegen", chat.Absender_hinzufuegen);
            frc.AddFunc<Message, Message>("versenden", chat.Versenden).MakeAsync();
            frc.AddFunc<Message, string>("formatieren", m => string.Format("{0}: {1}", m.Absender, m.Text));
            frc.AddAction<string>("anzeigen", mainWindow.MessageHinzufügen).MakeSync();
            frc.AddOperation(new Timer("timer", 500));
            frc.AddAction<Message>("empfangen", chat.Empfangen).MakeAsync();
            frc.AddAction<FlowRuntimeException>("fehler_anzeigen", ex => mainWindow.FehlerAnzeigen(ex.InnerException.Message)).MakeSync();

            using (var fr = new FlowRuntime(frc)) {
                fr.Message += Console.WriteLine;

                fr.UnhandledException += fr.CreateEventProcessor<FlowRuntimeException>(".exception");

                mainWindow.Anmelden += fr.CreateEventProcessor<string>(".anmelden");
                mainWindow.Verbinden += fr.CreateEventProcessor<string>(".verbinden");
                mainWindow.TextSenden += fr.CreateEventProcessor<string>(".senden");

                var app = new Application{MainWindow = mainWindow};
                app.Run(mainWindow);
            }
        }     
コード例 #2
0
ファイル: Receiver.cs プロジェクト: slieser/sandbox
        public void Run() {
            var mailAccess = MailAccessRepository.LoadFrom("mailfollowup.receiver.application.mail.access.txt", Assembly.GetExecutingAssembly());
            var awsSecrets = SecretsRepository.LoadFrom("mailfollowup.receiver.application.awssecrets.txt", Assembly.GetExecutingAssembly());

            var frc = new FlowRuntimeConfiguration();

            frc.AddStreamsFrom("mailfollowup.receiver.application.root.flow", Assembly.GetExecutingAssembly());

            var imap = new Imap(mailAccess);
            var erinnerungsauftraege = new Erinnerungsauftraege(Now, new FollowupParser());
            var store = new MailStore(awsSecrets);

            frc.AddAction<Mail>("mail_abholen", imap.Mail_holen);
            frc.AddFunc<Mail, Erinnerungsauftrag>("erinnerungsauftrag_erstellen", erinnerungsauftraege.Erinnerungsauftrag_erstellen);
            frc.AddFunc<Erinnerungsauftrag, string>("erinnerungsauftrag_speichern", store.Save);
            frc.AddAction<string>("mail_verschieben", imap.Mail_verschieben);

            using (var fr = new FlowRuntime(frc)) {
                fr.Message += Console.WriteLine;
                fr.UnhandledException += e => {
                    Console.WriteLine(e);
                    Environment.Exit(1);
                };

                fr.Process(".start");
                fr.WaitForResult();
            }
        }
コード例 #3
0
ファイル: Reminder.cs プロジェクト: slieser/sandbox2
        public void Run() {
            var awsSecrets = SecretsRepository.LoadFrom("mailfollowup.reminder.app.awssecrets.txt", Assembly.GetExecutingAssembly());
            var smtpSecrets = MailAccessRepository.LoadFrom("mailfollowup.reminder.app.mail.smtp.txt", Assembly.GetExecutingAssembly());

            var frc = new FlowRuntimeConfiguration();

            frc.AddStreamsFrom("mailfollowup.reminder.app.root.flow", Assembly.GetExecutingAssembly());

            var store = new MailStore(awsSecrets);
            var smtp = new Smtp(smtpSecrets);

            frc.AddFunc("aktuelle_zeit_ermitteln", Now);
            frc.AddAction<DateTime, Erinnerungsauftrag>("erinnerungsauftrag_holen", store.Load);
            frc.AddFunc<Erinnerungsauftrag, Erinnerungsauftrag>("erinnerung_versenden", smtp.Send);
            frc.AddAction<Erinnerungsauftrag>("erinnerungsauftrag_loeschen", store.Delete);

            using (var fr = new FlowRuntime(frc)) {
                fr.Message += Console.WriteLine;
                fr.UnhandledException += e => {
                    Console.WriteLine(e);
                    Environment.Exit(1);
                };

                fr.Process(".start");
                fr.WaitForResult();
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: slieser/sandbox
        public static void Main() {
            using (var fr = new FlowRuntime()) {
                fr.Message += Console.WriteLine;
                fr.UnhandledException += ex => MessageBox.Show(ex.ToString());

                var mainWindow = new MainWindow();
                var viewModel = new MainWindowVM();
                mainWindow.DataContext = viewModel;
                var mapper = new Mapper(viewModel);
                var metronom = new Metronom(new Play());
                var stopuhr = new Stopuhr();
                var pausenuhr = new Pausenuhr();
                var aufgabentimer = new Timer("aufgaben_timer");
                var pausentimer = new Timer("pausen_timer");
                var uebungsdauertimer = new Timer("uebungsdauer_timer");
                var repository = new Repository();

                var frc = new FlowRuntimeConfiguration();

                frc.AddStreamsFrom("metronom.logik.flows.root.flow", typeof(Metronom).Assembly);

                frc.AddAction<string>("aufgabe_laden", repository.Naechste_Aufgabe)
                    .AddAction<Metrum>("metrum_laden", repository.Naechstes_Metrum)
                    .AddAction("ende_der_aufgaben", repository.Ende_der_Aufgaben)
                    .AddAction<string>("aufgabe_anzeigen", mapper.Aufgabe_anzeigen)
                    .AddOperation(aufgabentimer)
                    .AddFunc<Metrum, int>("timer_konfigurieren", metronom.Timer_konfigurieren)
                    .AddAction("metronom_click", metronom.Click)
                    .AddFunc("uebungsdauer_timer_konfigurieren", stopuhr.Timer_konfigurieren)
                    .AddFunc("uebungsdauer_ermitteln", stopuhr.Uebungsdauer_ermitteln)
                    .AddOperation(uebungsdauertimer)
                    .AddAction<string>("uebungsdauer_anzeigen", mapper.Uebungsdauer_anzeigen)
                    .AddAction<string>("restdauer_anzeigen", mapper.Restdauer_anzeigen)
                    .AddAction("aufgabentimer_ausschalten", aufgabentimer.Stop)
                    .AddFunc("pausentimer_konfigurieren", pausenuhr.Pausentimer_konfigurieren)
                    .AddAction("pausentimer_ausschalten", pausentimer.Stop)
                    .AddFunc("restdauer_ermitteln", pausenuhr.Restdauer_ermitteln)
                    .AddOperation(pausentimer)
                    .AddAction<int>("restdauer_pruefen", pausenuhr.Restdauer_pruefen)
                    .AddAction("uebungsdauer_timer_ausschalten", uebungsdauertimer.Stop)
                    ;
                fr.Configure(frc);

                mainWindow.Start += fr.CreateEventProcessor(".start");
                mainWindow.Pause += fr.CreateEventProcessor(".pause");

                var app = new Application { MainWindow = mainWindow };
                app.Run(mainWindow);
            }
        }
コード例 #5
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            /*
             * The dialog/clock are outside the flow; they are viewed as part of the environment.
             * They are bound to the flow as event source using CreateEventProcessor().
             */
            using (var fr = new FlowRuntime())
            {
                var frc = new FlowRuntimeConfiguration();

                // Register streams
                frc.AddStreamsFrom("Alarm_clock.Flow2.flow", typeof(Program2).Assembly);

                // Register operations
                var dlg    = new Dialog2();
                var clock  = new Clock2();
                var player = new Soundplayer();

                frc.AddAction("Alarm switched off", dlg.Alarm_switched_off).MakeSync()
                .AddAction("Alarm switched on", dlg.Alarm_switched_on).MakeSync()
                .AddAction <TimeSpan>("Alarm time reached", Alarm_time_reached)
                .AddFunc <Tuple <DateTime, DateTime>, TimeSpan>("Calc time diff", Calc_time_diff)
                .AddAction <TimeSpan>("Display time diff", dlg.Display_time_diff).MakeSync()
                .AddManualResetJoin <DateTime, DateTime>("Join")
                .AddAction("Sound alarm", player.Start_playing)
                .AddAction("Stop alarm", player.Stop_playing);
                fr.Configure(frc);

                // Wire-up event sources
                dlg.SetAlarm      += fr.CreateEventProcessor <DateTime>(".setAlarm");
                dlg.ResetAlarm    += fr.CreateEventProcessor(".resetAlarm");
                clock.CurrentTime += fr.CreateEventProcessor <DateTime>(".now");

                fr.Message            += Console.WriteLine;
                fr.UnhandledException += Console.WriteLine;

                // Execute flow
                // Feature: start application
                Application.Run(dlg); // needs to run on this thread; cannot be done on flow runtime thread.
            }
        }
コード例 #6
0
ファイル: Program2.cs プロジェクト: kennychou0529/NPantaRhei
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            /*
             * The dialog/clock are outside the flow; they are viewed as part of the environment.
             * They are bound to the flow as event source using CreateEventProcessor().
             */
            using(var fr = new FlowRuntime())
            {
                var frc = new FlowRuntimeConfiguration();

                // Register streams
                frc.AddStreamsFrom("Alarm_clock.Flow2.flow", typeof(Program2).Assembly);

                // Register operations
                var dlg = new Dialog2();
                var clock = new Clock2();
                var player = new Soundplayer();

                frc.AddAction("Alarm switched off", dlg.Alarm_switched_off).MakeSync()
                   .AddAction("Alarm switched on", dlg.Alarm_switched_on).MakeSync()
                   .AddAction<TimeSpan>("Alarm time reached", Alarm_time_reached)
                   .AddFunc<Tuple<DateTime, DateTime>, TimeSpan>("Calc time diff", Calc_time_diff)
                   .AddAction<TimeSpan>("Display time diff", dlg.Display_time_diff).MakeSync()
                   .AddManualResetJoin<DateTime, DateTime>("Join")
                   .AddAction("Sound alarm", player.Start_playing)
                   .AddAction("Stop alarm", player.Stop_playing);
                fr.Configure(frc);

                // Wire-up event sources
                dlg.SetAlarm += fr.CreateEventProcessor<DateTime>(".setAlarm");
                dlg.ResetAlarm += fr.CreateEventProcessor(".resetAlarm");
                clock.CurrentTime += fr.CreateEventProcessor<DateTime>(".now");

                fr.Message += Console.WriteLine;
                fr.UnhandledException += Console.WriteLine;

                // Execute flow
                // Feature: start application
                Application.Run(dlg); // needs to run on this thread; cannot be done on flow runtime thread.
            }
        }
コード例 #7
0
ファイル: Mp3Viewer.cs プロジェクト: slieser/sandbox
        public void Run() {
            FlowRuntimeConfiguration.SynchronizationFactory = () => new SyncWithWPFDispatcher();

            var frc = new FlowRuntimeConfiguration();
            frc.AddStreamsFrom("mp3viewer.application.root.flow", Assembly.GetExecutingAssembly());

            frc.AddAction<string, string>("mp3_dateien_ermitteln", filenameReader.Read);
            frc.AddFunc<string, Title>("titel_bilden", mp3TagsReader.Read).MakeAsync();
            frc.AddAction("clear", mapper.Clear).MakeSync();
            frc.AddFunc<Title, IRowVM>("titel_in_row_umwandeln", mapper.CreateRow);
            frc.AddAction<IRowVM>("map", mapper.Map).MakeSync();

            using (var fr = new FlowRuntime(frc)) {
                fr.Message += Console.WriteLine;

                mainWindow.Scan += fr.CreateEventProcessor<string>(".scan");

                var app = new Application {
                    MainWindow = (Window)mainWindow
                };
                app.Run((Window)mainWindow);
            }
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: ralfw/dnp2012
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            var config = new FlowRuntimeConfiguration();

            config.AddStreamsFrom("WinScratchpad.flows.flow", Assembly.GetExecutingAssembly());

            config.AddFunc<string, string>("toUpper", Program.ToUpper).MakeParallel();
            config.AddFunc<string, string>("reverse", Program.Reverse);

            var dlg = new Dialog();
            config.AddAction<Correlation>("display", dlg.Display).MakeSync();
            config.AddOperation(new Correlator());

            using (var fr = new FlowRuntime(config))
            {
                dlg.Transform_text += fr.CreateEventProcessor<Correlation>(".transform_text");

                Application.Run(dlg);
            }
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: ralfw/dnp2012
        static void Main(string[] args)
        {
            var config = new FlowRuntimeConfiguration();

            // aus embeddded resource laden
            config.AddStreamsFrom("Scratchpad.flows.flow", Assembly.GetExecutingAssembly());

            //            // im 3GL Quelltext
            //            config.AddStreamsFrom(@"/
            //                                    .in, Transform.in
            //                                    Transform.out, .out
            //
            //                                    Transform
            //                                    .in, toUpper
            //                                    toUpper, reverse
            //                                    reverse, .out");

            //            // als Liste von Streams
            //            config.AddStream(".in", "Transform.in")
            //                    .AddStream("Transform.out", ".out")

            //                    .AddStream("Transform/.in", "Transform/toUpper")
            //                    .AddStream("Transform/toUpper", "Transform/reverse")
            //                    .AddStream("Transform/reverse", "Transform/.out");

            config.AddFunc<string, string>("toUpper", Program.ToUpper);
            //config.AddOperation(new ToUpperOperation());
            config.AddFunc<string, string>("reverse", Program.Reverse);

            config.AddOperation(new Get_text());
            config.AddAction<string>("display_text", (string text) => Console.WriteLine("-> {0}\n", text), true);

            using(var fr = new FlowRuntime(config))
            {
                //fr.Message += Console.WriteLine;
                //fr.Throttle(1000);

                //fr.Process(".in", string.Join(" ", args));
                //fr.WaitForResult(_ => Console.WriteLine(_.Data));
                fr.Process(".run");
                fr.WaitForResult();
            }

            var f = new F(new A(), new S(), new T());
            var g = new G(new A(), new O(), new P());
        }
コード例 #10
0
        public void TestMethod1()
        {
            string email = "*****@*****.**";
            string password = "";
            reader = new FeedRepository(Reader.CreateReader(email, password, "scroll") as Reader);
            //reader = new FeedRepositoryForTests();

            var frc = new FlowRuntimeConfiguration();
            frc.AddStreamsFrom(@"
                                .in, getFeeds
                                getFeeds.out0, getLinks
                                getFeeds.out1, join.in0
                                getLinks, getAddress
                                getAddress, scatter
                                scatter.count, gather.count
                                scatter.stream, downloadFile
                                downloadFile, gather.stream
                                gather, join.in1
                                join, .out
                                ");

            frc.AddAction<string, UrlAndFeed, int>("getFeeds", getFeeds);
            frc.AddFunc<int, bool>("feedCount", i => { return true; });
            frc.AddFunc<UrlAndFeed, IEnumerable<PodcastLinkInformation>>("getLinks", urlAndFeed => reader.GetItemsForFeed(urlAndFeed.Url, DateTime.Now.AddDays(-1)));
            frc.AddFunc<IEnumerable<PodcastLinkInformation>, IEnumerable<RemoteAndLocalAddress>>("getAddress", getAddress);
            frc.AddFunc<RemoteAndLocalAddress, RemoteAndLocalAddress>("downloadFile", downloadFile).MakeParallel();
            frc.AddOperation(new Scatter<RemoteAndLocalAddress>("scatter"));
            frc.AddOperation(new Gather<RemoteAndLocalAddress>("gather"));
            frc.AddOperation(new MySimpleJoin());

            using (var fr = new FlowRuntime(frc))
            {
                fr.Process(".in", "Listen Subscriptions");

                object erg;
                fr.WaitForResult(message => erg = message.Data);
                //Thread.Sleep(60000);
            }
        }