将 Quartz.NET 调度框架与 Stimulsoft Reports 结合使用

发布时间 : 2024-01-30 10:34:33.457|阅读 8 次

概述:在本文中,我们将讨论如何使用第三方调度程序自动执行与 Web 项目中的报告相关的任务。

今天,我们将深入探讨软件开发的一种现代趋势 - 流程自动化,这自然是 Stimulsoft 产品中报表处理的一部分。在本文中,我们将讨论如何使用第三方调度程序自动执行与 Web 项目中的报告相关的任务。作为对报告执行操作的示例,我们考虑将其转换为 PDF 文件并通过电子邮件发送结果,利用 Quartz.NET 作为自动化工具。让我们从它开始吧。

Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了所有内容!

Stimulsoft Reports.Ultimate不仅拥有强大的报表导出系统,而且还支持多种报表导出格式,拥有简单且强大的报表引擎。Stimulsoft Reports.Ultimate基本原则是,用简单常规的方法创建报表,将不同的技术应用于应用程序。

Stimulsoft Reports官方正版下载   

什么是 Quartz.NET?

Quartz.NET是一个用于调度各种任务的开源框架。它可以集成到.NET 平台上创建的任何应用程序中,范围从最小的服务到大型企业系统。该框架基于两个主要概念:在后台按计划运行的任务和负责根据触发器执行任务的调度程序。

创建项目

首先,让我们创建一个在.NET 6 平台上运行的项目。在本例中,我们将利用.NET Core 报告工具,它是一个功能齐全、通用且跨平台的工具,用于创建、处理、构建、显示和转换报告和仪表板。通过安装适当的 NuGet 包,可以轻松将其集成到自定义应用程序中。

安装软件包

因此,由于此示例不会使用可视化组件(查看器和报表设计器),因此要导出报表,安装 NuGet 包 - Stimulsoft.Reports.Engine.NetCore就足够了。

此外,要添加和使用调度程序,您必须安装Quartz 包。

成功安装软件包后,项目设置就完成了,您可以继续定义任务和计划。
笔记!

要使用仪表板,您需要安装Stimulsoft.Dashboards.Web.NetCore包。

定义任务

让我们创建一个新类StiReportJob.cs,它应包含 IJob 接口的实现以及Execute()方法的定义。我们还将添加两种方法:一种用于创建(或加载)报告,另一种用于导出报告并通过电子邮件发送。因此,Execute()方法将调用报表创建方法,然后调用异步电子邮件发送方法。以下是StiReportJob.cs类的代码。

StiReportsJob.cs


public class StiReportJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
var report = CreateReport();

await SendEmail(report);
}

private StiReport CreateReport()
{
var report = new StiReport();
// report.Load();
return report;
}

private async Task SendEmail(StiReport report)
{
using (MailMessage mail = new MailMessage("admin@gmail.com", "user@gmail.com"))
{
mail.Subject = "New Report";
mail.Body = "Body Info";

using var stream = new MemoryStream();
report.ExportDocument(StiExportFormat.Pdf, stream);
stream.Position = 0;

var attachment = new Attachment(stream, "report.pdf", "application/pdf");
mail.Attachments.Add(attachment);

using var client = new SmtpClient
{
EnableSsl = true,
Host = "host.com",
Port = 25,
};
await client.SendMailAsync(mail);
}
}
}


尽管我们已经考虑了使用报表的基本情况,但这里可以实现更复杂和创造性的任务

制定时间表

让我们创建另一个新类 - StiJobScheduler.cs,我们将在其中初始化调度程序并向其添加触发器。在本例中,触发器是启动调度程序的条件。在下面的示例中,触发器设置为每天上午 10:00 到中午之间的时间。然而,触发器可能有很多种,从重复的计划到每分钟触发调度程序的无限循环。以下是StiJobScheduler.cs类的代码。

StiJobScheduler.cs

public class StiJobScheduler
{
public static async void Start()
{
var scheduler = await StdSchedulerFactory.GetDefaultScheduler();
await scheduler.Start();

var job = JobBuilder.Create<StiReportJob>().Build();

var trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule($"0 0 10 ? * *")//At 10:00 AM
.Build();

await scheduler.ScheduleJob(job, trigger);
}
}

之后,在主应用程序类中,在本例中为Program.cs,需要调用StiJobScheduler.cs类的静态Start()方法。程序.cs

StiJobScheduler.Start();

因此,今天我们演示了一个自动化流程的示例,现在,每天 10:00,报告将被转换为 PDF 文件,并将包含该文件的一封信发送给指定的人。


想要了解Stimulsoft Reports 报价信息的朋友,欢迎咨询慧都官方客服

加入官方社群 740060302,欢迎相互交流


在线
客服
微信
QQ 电话
023-68661681
返回
顶部