Недавно мы опубликовали статью об использовании библиотеки Quartz.NET с нашими отчетами в контексте автоматизации задач, связанных с отчетностью.
Кроме этого, для добавления и возможности использования планировщика, необходимо установить пакет Node Schedule.
Что такое Node Schedule?
Node Schedule – это гибкий планировщик задач для Node.js, основанный на синтаксисе cron. Планировщик осуществляет выполнение задач с необязательными правилами повторения на основе времени, а не интервалов. Node Schedule используется, например, для отправки электронных писем с отчетами, регулярного обслуживания базы данных или выполнения задач периодического анализа данных. Подробнее о планировщике - здесь.Создание проекта
Сначала мы создаём проект под управлением платформы JavaScript. Соответственно, использовать будем JS-генератор отчетов - широкий набор компонентов отчетности, разработанный на чистом JavaScript. Его легко интегрировать в пользовательское приложение, установив соответствующий npm-пакет.Установка пакетов
Для работы с отчетами нам понадобится пакет = stimulsoft-reports-js, а для дашбордов - stimulsoft-dashboards-js.Кроме этого, для добавления и возможности использования планировщика, необходимо установить пакет Node Schedule.
Определение задач и настройка расписания
Переходим непосредственно к основному вопросу нашей статьи. Итак, мы взяли за основу пример экспорта отчета в PDF. Далее устанавливаем выполнение экспорта на 10:00 ежедневно:// Node Schedule module
var schedule = require("node-schedule");
console.log("Node Schedule loaded");
// Stimulsoft Reports module
var Stimulsoft = require("stimulsoft-reports-js");
console.log("Stimulsoft Reports loaded");
// Creating new report
var report = new Stimulsoft.Report.StiReport();
console.log("New report created");
// Loading report template
report.loadFile("SimpleList.mrt");
console.log("Report template loaded");
// Run the task every day at 10:00
var rule = new schedule.RecurrenceRule();
rule.hour = 10;
rule.minute = 0;
console.log("Rule for the task created");
// Scheduling the task
schedule.scheduleJob(rule, function () {
// Renreding report
report.renderAsync(() => {
console.log("Report rendered. Pages count: ", report.renderedPages.count);
// Export to PDF
report.exportDocumentAsync((pdfData) => {
// Converting Array into buffer
var buffer = Buffer.from(pdfData);
// File System module
var fs = require("fs");
// Saving string with rendered report in PDF into a file
fs.writeFileSync("./SimpleList.pdf", buffer);
console.log("Rendered report saved into PDF-file.");
}, Stimulsoft.Report.StiExportFormat.Pdf);
});
});
Таким образом, сегодня мы на примере показали автоматизацию процесса, и теперь каждый день в 10:00 отчет будет преобразовываться в PDF-файл и сохраняться на диск в этом формате.