msdevcon.ru #msdevcon STREAMINSIGHT И WORKFLOW. АНАЛИЗ ДАННЫХ НА ЗЕМЛЕ И В ОБЛАКЕ ДЛЯ МОНИТОРИНГА КРИТИЧЕСКИ ВАЖНЫХ ПОКАЗАТЕЛЕЙ Вячеслав Васильев Содержание Проблема анализа критически важных данных Показатели здоровья человека On-premise решение Спортзал с инструктором Спортзал без инструктора Hybrid и Cloud решения Проблема анализа критически важных данных Контрол состояния здоровья человека Параметры состояния здоровья человека Воздействие на организм Физические упражнения, диета, лекарства, режим, окружающая среда и т.д. Ответ организма на воздействие Частота сердечных сокращений (ЧСС, Пульс), артериальное давление, биохимические показатели крови, самочувствие и т.д. Контроль состояния здоровья Наблюдение за балансом воздействие-ответ Своевременное реагирование, когда параметры выходят за границы нормы Пример – диагностика сахарного диабета Параметр – содержание глюкозы в плазме крови Из книги А.А.Кишкун «Клиническая лабораторная диагностика» Пример – занятия фитнесом Показатели состояния здоровья ЧСС (Пульс) Баланс питания (килокалории) Воздействие на организм Питание и физические нагрузки Ответ организма на воздействие На физическое воздействие – увеличение ЧСС На питание – увеличение веса, мышечной массы и т.д. Изменение пульса (ЧСС) Ответ организма на изменение положения Мониторинг состояния здоровья On-premise решение Цель Главная цель – не навредить здоровью человека Все параметры должны находиться в пределах нормы Цель №2 – улучшение состояния здоровья Физическая активность, активный образ жизни Правильное сбалансированное питание Архитектура системы мониторинга Архитектура StreamInsight Основные сущности StreamInsight StreamInsight – Создание приложения string port = "8888"; string wcfSourceURL = String.Format(@"http://localhost:{0}/DevCon/wcf/Source/", port); string wcfSinkURL = String.Format(@"http://localhost:{0}/DevCon/wcf/Sink/", port); string wcfCritSinkURL = String.Format(@"http://localhost:{0}/DevCon/wcf/CritSink/", port); using (var server = Server.Create("DevCon")) { string AppName = "DevConApp"; if (server.Applications.ContainsKey(AppName)) { server.Applications[AppName].Delete(); } var app = server.CreateApplication(AppName); StreamInsight – Подключение клиента // Подключаемся к серверу StreamInsight (должен быть уже создан). using (var server = Server.Connect(new System.ServiceModel.EndpointAddress(@"http://localhost/DevCon"))) { // Находим наше приложение var app = server.Applications["DevConApp"]; // Источник данных var heartRateSource = app.GetObservable<HeartRatePoint>("HeartRateSource"); // Приёмник критических уведомлений var heartRateCriticalSink = app.GetObserver<HeartRateMeanValue>("HeartRateCriticalSink"); StreamInsight – Client Code // Получим ссылку на запрос с сервера. var minMaxQuery = app.GetStreamable<IQStreamable<HeartRateMeanValue>, double, HeartRateAlarmValue>("MinMaxAlarmQuery"); // Получаем Источник данных через Субъект. var inputMeanHR = app .GetSubject<HeartRateMeanValue, HeartRateMeanValue>("HeartRateAlarmSubject"); // Получаем Приёмник данных var alarmConsoleSink = app.GetObserver<string, HeartRateAlarmValue>("HeartRateAlarmConsoleSink"); // Создадим поток var streamMeanHR = inputMeanHR.ToPointStreamable(i => PointEvent.CreateInsert<HeartRateMeanValue>(i.MeanTimePoint, i), AdvanceTimeSettings.IncreasingStartTime); // Создаём новый запрос с новыми параметрами. var minMaxAlarm = minMaxQuery(streamMeanHR, 200); // Привязываем приёмник к запросу. var dynamicMinMaxQuery = minMaxAlarm.Bind(alarmConsoleSink("Personal Alarm")); // Запускаем новый процесс на сервере. IDisposable dynamicAlarmProcess = dynamicMinMaxQuery.Run("DynamicAlarmProcess"); StreamInsight - отладчик DEMO Спортзал с инструктором Используем StreamInsight Спортзал без инструктора Используем Workflow Цель Дать пользователю постоянную возможность контролировать свою физическую активность – дома, на стадионе, на отдыхе, на работе. Фитнес упражнение Атлет (пациент) Возраст, Вес, Рост, Пол Определение целевых границ ЧСС (Метод Карвонена) ЧСС в состоянии покоя - ЧССпок Максимальный ЧССмакс = 220 – Возраст Нижняя и верхняя границы целевой зоны тренировки ЧССниж = ЧССпок + (ЧССмакс – ЧССпок)*0.5 ЧССверх = ЧССпок + (ЧССмакс – ЧССпок)*0.95 Workflow + WP7 Rx (Reactive Extensions) - .Net, WinRT, WP class ExerciseScheduler : HistoricalScheduler { public delegate void SpeechMessage(string msgToSpeak); public event SpeechMessage SpeechMessageHandler; public void Run(TimeSpan delay, Queue<PlanEvent> eventQueue) { EventQueue = eventQueue; Scheduler.Default.Schedule(delay, self => { if (SpeechMessageHandler != null) { SpeechMessageHandler(pe.EventMessage); } var dt = next.DueTime; AdvanceTo(dt); self(TimeSpan.FromSeconds(pe.Delay)); Rx – работа с массивами var mean = from w in xAccelData.Window(winSize) from avg in w.Average() select avg; mean.Subscribe(w => Debug.WriteLine("X Average: {0}", w), ex => Debug.WriteLine("X Average ex:{0}", ex.Message), () => Debug.WriteLine("X Average Complete.") ); Архитектура hybrid-решения DEMO Спортзал без инструктора Hybrid -решение Спортзал везде и всегда Cloud-решение Цель Все предыдущие цели + беспрецедентная надёжность и безопасность, обеспечиваемые облаком Azure. Архитектура Очереди Хранилища Сервисная шина SQL Azure Mobile services …. Workflow и StreamInsight в облаке Azure Виртуальная машина Azure с установленным AppFabric for Windows Server Виртуальная машина Azure с установленным Workflow Manager 1.0 StreamInsight – проект Austin (CTP) Что изменится с использованием высоких технологий в области анализа критически важных данных? В области здравоохранения и здорового образа жизни Проблемы Каждый год на занятиях физкультурой в школах умирают ученики (наиболее вероятная причина – физическая нагрузка без учёта индивидуального состояния здоровья ученика). Современные системы экспресс анализа биологических материалов уже имеют цифровой формат обмена данными, но диагностика по-прежнему проводится вручную. У населения имеется большое количество медицинских приборов бытового уровня (термометры, тонометры и др.), но результаты не анализируются должным образом. Решения Технологии StreamInsight, Rx и Workflow обеспечивают реализацию гибких систем автоматического мониторинга состояния здоровья человека. Технологии хостинга Workflow – AppFabric for Windows Server, Workflow Manager обеспечивают надёжное исполнение Workflow как в on-premise, так и в гибридной или полностью облачной среде Azure. Знакомые разработчикам технологии .NET, LinQ и среда Microsoft Visual Studio 2012 обеспечивают комфорт и эффективность процесса разработки. Ресурсы StreamInsight Team blog: blogs.msdn.com/b/streaminsight Home page: http://blogs.msdn.com/b/streaminsight Reactive Extensions (Rx) Rx Home: http://msdn.microsoft.com/en-us/data/gg577609 Rx Source Code: http://rx.codeplex.com/ Rx Introduction: http://introtorx.com Workflow Workflow: msdn.com/workflow AppFabric for Windows Server: msdn.com/appfabric Дополнительные ресурсы Roman Schindlauer – blogs.msdn.com/b/streaminsight Richard Seroter - seroter.wordpress.com Steve Danielson, Ron Jacobs http://blogs.msdn.com/b/workflowteam/ LinQPad – www.linqpad.net Контакты Вячеслав Васильев ООО Красный Угол vaswork@gmail.com © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.