Небольшое лирическое отступление
Так получилось, что в последнее время я занимаюсь разработкой программ работающих в связке с различным оборудованием. На прошлой работе это были роботы и станции тестирования для полупроводниковой промышленности, на текущей – масс-спектрометры для химии и медицины. Казалось бы, совершенно различные отрасли и назначение программ, но с точки зрения разработчика есть много общих моментов.
Типичную конфигурацию, с которой мы работаем, можно описать так: станция, к которой присоединен клиентский компьютер. На компьютере установлено базовое приложение, взаимодействующее с оборудованием и предоставляющее интерфейсы для сбора данных. Этими интерфейсами пользуется десяток вертикальных приложений, необходимых для решения конкретных задач пользователя. Для решения одной задачи обычно необходимо взаимодействие двух-трех приложений. Весь этот набор приложений зависит от многочисленных конфигурационных файлов и генерирует большой объем отчетов и данных.
Это длинное вступление было необходимо для того, что бы объяснить, почему когда в системе происходит ошибка, для ее локализации нам важно как можно точнее знать состояние системы. Отчет об ошибке может включать несколько десятков файлов – логи, конфигурационные фалы, файлы данных и проектов. Объяснять пользователю, по телефону, как все это собрать – не самое приятное занятие.
Если вы находитесь в похожей ситуации, то вам может пригодиться программа для автоматизации создания отчетов об ошибках – Sedge. С ее помощью вы можете опросить пользователя о произошедшей ошибке, автоматически сформировать отчет, включающий пользовательскую информацию, данные о системе, все необходимые файлы, упаковать и отправить его.
Как это работает
Для понимания принципа работы Sedge важны два понятия – Suite (набор приложений) и Application (приложение). Набор приложений может быть описан в одном или нескольких .sedge файлах и определяет для набора связанных программ общие свойства, такие как пользовательский интерфейс, общие файлы и метод отправки отчета.
Например, ваша компания может иметь базовый сервис, ответственный за доступ к данным и две программы для обработки и отображения этих данных. Тогда, набор состоит из трех приложений и может быть разбит на три конфигурационных файла: main.sedge, определяющий, что должно быть включено в отчет в случае ошибки в любом из приложений, app1.sedge и app2.sedge, задающих дополнительные параметры отчета, специфичные для соответствующего приложения. Файлы app1.sedge и app2.sedge могут добавляться или удаляться во время установки или деинсталляции программ.
Конфигурационный файл полностью определяет поведение программы. В нем задаются шаги визарда, какие файлы должны быть добавлены в отчет, какая информация и как будет представлена в HTML отчете.
Пример простого конфигурационного файла
<?xml version="1.0" encoding="UTF-8" ?>
<Sedge>
<Suite name="LunarFrog.TaggedFrog" caption="TaggedFrog Error Reporting" partial="no">
<Schedule>
<Step name="Screenshot" />
<Step name="ErrorDetails" />
<Step name="Contacts" />
<Step name="Collect" />
</Schedule>
<Transport name="Email">
<Option name="to" value="error_mail@company.com" />
<Option name="subject" value="Error report" />
</Transport>
<Report>
<Group name="UserGroup" caption="User Information">
<Page name="ImagePage" caption="Screenshot">
<Temp name="screenshot" caption="Screen" />
</Page>
<Page name="InfoPage" caption="Information">
<Temp name="ReportDetails" caption="Details"/>
<Temp name="Contacts" caption="Contact Information" />
<Temp name="UserFiles" />
</Page>
</Group>
<Group name="EnvGroup" caption="Enviroment">
<Page name="ProcessesPage" caption="Processes">
<Data name="Processes" />
</Page>
<Page name="SystemPage" caption="System">
<Data name="System" />
</Page>
</Group>
</Report>
<Application name="TaggedFrog" caption="TaggedFrog">
<Report>
<Group name="ApplicationGroup" caption="Application">
</Group>
</Report>
</Application>
</Suite>
</Sedge>
* This source code was highlighted with Source Code Highlighter.
Первый шаг визарда

Одна из страниц отчета, созданного согласно этой конфигурации

Источники информации для отчета: cкриншоты, реестр, автоматически собираемые файлы, информация о системе, памяти, процессоре, список запущенных процессов, информация предоставленная пользователем (описание проблемы, файлы данных и т. д.).
Поскольку сценарии создания отчетов могут сильно различаться в зависимости от приложения, программа имеет широкие возможности по настройке и расширению. Достаточно легко вы можете создать свои собственные шаги визарда или источники информации, к примеру, если вам необходимо получить данные из базы данных, что не поддерживается программой по умолчанию. Примеры создания расширений доступны вместе с исходным кодом программы.
Изменен может быть и внешний вид отчета, поскольку шаблон задается с помощью HTML и CSS. Любой текст (интерфейс, сообщения) доступен для замены или локализации. По умолчанию поддерживается английский и русский интерфейсы.
Информация о программе
Платформа: .NET Framework 2.0 / C# 3.0
Лицензия: MIT
Статус: Beta
Сайт: sedge.codeplex.com