翻譯|行業(yè)資訊|編輯:胡濤|2024-01-30 10:34:33.457|閱讀 96 次
概述:在本文中,我們將討論如何使用第三方調(diào)度程序自動執(zhí)行與 Web 項目中的報告相關(guān)的任務(wù)。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
今天,我們將深入探討軟件開發(fā)的一種現(xiàn)代趨勢 - 流程自動化,這自然是 Stimulsoft 產(chǎn)品中報表處理的一部分。在本文中,我們將討論如何使用第三方調(diào)度程序自動執(zhí)行與 Web 項目中的報告相關(guān)的任務(wù)。作為對報告執(zhí)行操作的示例,我們考慮將其轉(zhuǎn)換為 PDF 文件并通過電子郵件發(fā)送結(jié)果,利用 Quartz.NET 作為自動化工具。讓我們從它開始吧。
Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于創(chuàng)建報表和儀表板的通用工具集。該產(chǎn)品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他環(huán)境的完整工具集。無需比較產(chǎn)品功能,Stimulsoft Ultimate包含了所有內(nèi)容!
Stimulsoft Reports.Ultimate不僅擁有強大的報表導出系統(tǒng),而且還支持多種報表導出格式,擁有簡單且強大的報表引擎。Stimulsoft Reports.Ultimate基本原則是,用簡單常規(guī)的方法創(chuàng)建報表,將不同的技術(shù)應(yīng)用于應(yīng)用程序。
Quartz.NET是一個用于調(diào)度各種任務(wù)的開源框架。它可以集成到.NET 平臺上創(chuàng)建的任何應(yīng)用程序中,范圍從最小的服務(wù)到大型企業(yè)系統(tǒng)。該框架基于兩個主要概念:在后臺按計劃運行的任務(wù)和負責根據(jù)觸發(fā)器執(zhí)行任務(wù)的調(diào)度程序。
首先,讓我們創(chuàng)建一個在.NET 6 平臺上運行的項目。在本例中,我們將利用.NET Core 報告工具,它是一個功能齊全、通用且跨平臺的工具,用于創(chuàng)建、處理、構(gòu)建、顯示和轉(zhuǎn)換報告和儀表板。通過安裝適當?shù)?NuGet 包,可以輕松將其集成到自定義應(yīng)用程序中。
因此,由于此示例不會使用可視化組件(查看器和報表設(shè)計器),因此要導出報表,安裝 NuGet 包 - Stimulsoft.Reports.Engine.NetCore就足夠了。
此外,要添加和使用調(diào)度程序,您必須安裝Quartz 包。
成功安裝軟件包后,項目設(shè)置就完成了,您可以繼續(xù)定義任務(wù)和計劃。
筆記!
要使用儀表板,您需要安裝Stimulsoft.Dashboards.Web.NetCore包。
讓我們創(chuàng)建一個新類StiReportJob.cs,它應(yīng)包含 IJob 接口的實現(xiàn)以及Execute()方法的定義。我們還將添加兩種方法:一種用于創(chuàng)建(或加載)報告,另一種用于導出報告并通過電子郵件發(fā)送。因此,Execute()方法將調(diào)用報表創(chuàng)建方法,然后調(diào)用異步電子郵件發(fā)送方法。以下是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); } } }
盡管我們已經(jīng)考慮了使用報表的基本情況,但這里可以實現(xiàn)更復雜和創(chuàng)造性的任務(wù)
讓我們創(chuàng)建另一個新類 - StiJobScheduler.cs,我們將在其中初始化調(diào)度程序并向其添加觸發(fā)器。在本例中,觸發(fā)器是啟動調(diào)度程序的條件。在下面的示例中,觸發(fā)器設(shè)置為每天上午 10:00 到中午之間的時間。然而,觸發(fā)器可能有很多種,從重復的計劃到每分鐘觸發(fā)調(diào)度程序的無限循環(huán)。以下是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); } }
之后,在主應(yīng)用程序類中,在本例中為Program.cs,需要調(diào)用StiJobScheduler.cs類的靜態(tài)Start()方法。程序.cs
StiJobScheduler.Start();
因此,今天我們演示了一個自動化流程的示例,現(xiàn)在,每天 10:00,報告將被轉(zhuǎn)換為 PDF 文件,并將包含該文件的一封信發(fā)送給指定的人。
想要了解Stimulsoft Reports 報價信息的朋友,歡迎咨詢。
加入官方社群 740060302,歡迎相互交流
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn