После первой части «Как вы делаете свои отчеты? « Я хочу показать, каковы преимущества использования приложения централизованного сервера отчетов. Даже сегодня я слышу, что в некоторых малых или средних компаниях внутренние отчеты создаются вручную. Люди пишут свои sql в своем любимом инструменте разработки, а затем получают данные и помещают в файл Excel, чтобы передать кому это может быть важно. Я даже слышал случай, когда «человек», который должен был составить конкретный отчет, должен был быть там, чтобы запустить его вручную в полдень. О, МОЙ БОГ!
Поэтому, если вам нужно создать некоторые отчеты для вашего использования или для использования клиентами, вы знаете, что создание их — это только первый шаг. Вы должны использовать их с умом. Вам нужен сервер отчетов. Мы также создали NextReports Server , сервер веб-отчетов, который помогает автоматизировать производство и доставку бизнес-отчетов. Это молодое приложение, созданное с помощью JackRabbit (реализация Content Repository for Java Technology API JCR, определенная в JSR 170 и 283 ), сред Spring и Wicket.
Основные преимущества для любого сервера отчетов можно резюмировать следующим образом:
1. Централизация
Нам нужно, чтобы все наши отчеты были в одном месте, независимо от того, для кого, независимо от бизнеса, независимо от важности. Соединение их было самым правильным.
2. Управление
Сервер отчетов позволяет управлять всеми вашими источниками данных, отчетами, диаграммами, группировать их в папки, просматривать определенную информацию, такую как параметры, идентификаторы, запросы.
3. Планирование
Если вы все еще запускаете свои отчеты вручную, вы должны спросить себя, почему. Планирование, пожалуй, самая необходимая функция в отчетности. И вам не нужно изобретать велосипед. Есть очень надежные реализации там. Мы выбираем Quartz, который может настраивать cron-подобные задания, делая возможным сложные форматы расписаний.
4. Распространение
Очень важным вопросом является то, что вы делаете со своими отчетами. Вы можете увидеть результат на сервере, вы можете автоматически отправить результат или ссылку на результат некоторым клиентам, вы можете автоматически поместить его на чужой компьютер через протоколы FTP, SSH, Windows Share, WebDAV.
5. История
Вам может понадобиться узнать, как отчет выглядел неделю или месяц назад, чтобы сравнить данные и провести анализ. Вести свою историю бега — твой друг.
6. Управление версиями
Изменение некоторых отчетов и диаграмм происходит очень часто, поэтому вам нужно сохранить свои предыдущие версии. Но вы можете сделать больше. Вы можете запустить любую версию, вы можете установить любую версию по умолчанию. Поскольку мы использовали JackRabbit, у нас было это из коробки.
7. Монитор
Вы наверняка хотите знать, какие отчеты запущены, сколько времени прошло с момента их запуска, когда они снова запустятся, какие значения параметров были использованы. Вы также хотите узнать, был ли отчет сформирован правильно или произошла ошибка и что это была за ошибка. Вы можете остановить запущенный процесс, если прошло слишком много времени. Для всего этого вам нужен монитор.
8. Безопасность
Поскольку у вас есть все отчеты вместе, вам нужна безопасность для всех объектов. Если вы используете Spring, то Spring Security должен быть вашим выбором. Для каждой сущности вы можете определить и установить разрешения, такие как чтение, запись, удаление, выполнение, безопасность для конкретных пользователей или группы пользователей.
9. Визуализация
в реальном времени. Просмотр данных в реальном времени очень важен для некоторых компаний. Вам нужны графики, сигнализации, таблицы данных. Вы можете сгруппировать их в информационных панелях, чтобы можно было рассмотреть всю перспективу вашего бизнеса.
10. Расширенный анализ.
Вам нужны какие-то модные вещи, такие как детализация? Вы можете сделать это на сервере отчетов
11. Веб-сервисы
У вас есть отчеты на сервере, вы можете запускать их там, но вы также хотите иметь возможность запускать их из своего приложения. Веб-сервис предлагает вам такую возможность и позволяет подключаться к серверу по протоколу https с использованием SSL. Мы использовали Jersey с эталонной реализацией JAX-RS (JSR 311) с открытым исходным кодом для создания Web-сервисов RESTful. Вы создаете своего клиента очень легко:
WebServiceClient client = new WebServiceClient();
client.setServer("http://localhost:8081/nextserver/api");
client.setUsername("guest");
client.setPassword("pass");
client.setPasswordEncoder(new Md5PasswordEncoder());
Для запуска отчета мы предоставляем простой api. Вам нужно знать идентификатор отчета на сервере (он виден внутри информационных данных) и передавать все значения параметров:
RunReportMetaData runReportMetaData = new RunReportMetaData();
runReportMetaData.setReportId("3cb331e0-5ed9-4e03-b11c-b7f4bb8b6a4c");
runReportMetaData.setFormat(RunReportMetaData.HTML_FORMAT);
// set your parameters values
Map<String, Object> parametersValues = new HashMap<String, Object>();
parametersValues.put("Id", 2);
runReportMetaData.setParametersValues(parametersValues);
try {
String documentUrl = client.runReport(runReportMetaData);
} catch (WebServiceException e) {
// do whatever you need to do
}
12. Поддержка других механизмов.
Существуют решения для создания отчетов, которые требуют наличия сервера для каждого модуля, который у вас может быть. Для нас это был не очень хороший подход, потому что мы также хотели, чтобы наши отчеты Jasper находились в одном месте со следующими отчетами. Итак, обертка над движком Jasper была создана. Как правило, если вам нужно что-то другое, обязательно учитывайте это и позволяйте вашему приложению легко расширяться.
В следующей части «Как вы настраиваете свою платформу отчетности?» Я напишу о настройках, которые вам могут понадобиться для быстрого реагирования или интеграции с другими приложениями.
связи
- Сайт NextReports: http://www.next-reports.com
- Руководство по серверу NextReports: http://www.next-reports.com/index.php/documentation/nextreports-server-documentation.html
- Демонстрация сервера NextReports Online: http://www.next-reports.com/index.php/documentation/nextreports-server-documentation/online-demo.html
- JackRabbit: http://jackrabbit.apache.org/
- Весна: http://www.springsource.com/developer/spring
- Калитка: http://wicket.apache.org/
- Кварц: http://www.quartz-scheduler.org/
- Джерси: http://jersey.java.net/