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); } }
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(); } }
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(); } }
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); } }
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. } }
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. } }
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); } }
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); } }
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()); }
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); } }