Heute tauchen wir in einen modernen Trend der Software-Entwicklung – Prozessautomatisierung, natürlich, im Rahmen der Arbeit mit Berichten in Stimulsoft-Produkten ein. Also, in diesem Artikel erzählen wir darüber, wie man die mit Berichten verbundenen Aufgaben mit Hilfe von Drittsoftwares in den Web-Projekten automatisieren kann. Als ein Beispiel der Aktion mit dem Bericht zeigen wir die Umwandlung in die PDF-Datei und Senden per E-Mail und als Beispiel des Automatisierungstools – Quartz.NET. Wollen wir beginnen.

Was ist Quartz.NET?

Quartz.NET ist ein Open-Source-Framework für Planung und Erfüllen von Aufgaben nach einem Zeitplan. Quartz.NET kann einfach in jede auf der Plattform .NET entwickelte Anwendung – von kleinen Dienstleistungen bis zu weiträumigen Enterprise-Systemen – integriert werden. Das Framework verwendet zwei Hauptkonzepte: die Aufgabe, die nach einem Zeitplan im Hintergrund erfüllt wird, und der Planer, der für das Erfüllen der Aufgabe basierend auf einem Trigger verantwortlich ist.

Erstellen vom Projekt

Zuerst erstellen wir ein Projekt unter der Steuerung der Plattform .NET 6. In diesem Fall verwenden wir das .NET Core-Berichtstool, das vollfunktionsfähige, universelle, plattformübergreifende Tool für Erstellen, Bearbeiten, Rendern, Anzeigen und Umwandeln von Berichten und Dashboards. Sie können den Berichts-Generator durch die Installation vom erforderlichen NuGet-Paket in jede Benutzer-Anwendung integrieren.

Installation von Paketen

Also, da in diesem Beispiel keine visuellen Komponenten (Designer und Viewer) verwendet werden, ist es für Erfüllen vom Export ausreichend, das NuGet-Paket - Stimulsoft.Reports.Engine.NetCore zu installieren.

Zusätzlich, man muss das Quartz-Paket für Hinzufügen und Verwenden vom Planer installieren.

Nach der erfolgreichen Installation der Pakete wird die Einstellung des Projektes beendet, und man kann weiter den Zeitplan und die Aufgaben festlegen. Bemerken Sie!

Für die Arbeit mit Dashboards muss man das Paket Stimulsoft.Dashboards.Web.NetCore installieren.

Festlegen von Aufgaben

Wollen wir neue Klasse StiReportJob.cs, die die Realisierung der IJob-Schnittstelle mit dem Festlegen der Execute()-Methode enthalten muss, erstellen. Auch fügen wir zwei Methoden hinzu: Erstellen (oder Laden) vom Bericht, und auch die Methode vom Export und Senden vom Bericht per E-Mail. So wird in der Methode Execute() die Methode des Erstellens vom Bericht aufgerufen, und dann – die asynchrone Methode des Sendens per E-Mail. Unten ist der Code der Klasse StiReportJob.cs angezeigt.

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("Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.", "Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein."))
		{
			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);
		}
	}
}

Wir haben nur der einfachste Fall der Arbeit mit dem Bericht berücksichtig, aber hier können verschiedene komplizierte und sogar schöpferische Aufgaben erfüllt werden.

Einstellung des Zeitplans

Wollen wir noch eine neue Klasse erstellen - StiJobScheduler.cs, in der wir den Planer initialisieren und einen Trigger hinzufügen. Der Trigger in diesem Fall ist die Bedingung, die den Planer startet. Im oben dargestellten Beispiel der Trigger ist die Zeit 10:00 Uhr, jeden Tag. Man kann dabei zahlreiche Trigger verwenden, z.B., endloser Zyklus vom Erfüllen des Planers jede Minute. Unten ist der Code der Klasse StiJobScheduler.cs dargestellt.

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);
	}
}

Danach muss man in der Hauptklasse der Anwendung, in diesem Fall – in Program.cs, die statische Methode Start() der Klasse StiJobScheduler.cs aufrufen.

Program.cs
StiJobScheduler.Start();

Wir haben mit dem Beispiel die Automatisierung des Prozesses angezeigt, und jetzt wird der Bericht jeden Tag um 10:00 Uhr in die PDF-Datei umgewandelt, und ein Brief mit diesem Bericht wird an die angegebene Person gesendet.

Auch haben wir eine ausführliche Videostunde über die Arbeit vom Quartz.NET-Planer in unseren Softwares vorbereitet.

Wenn Sie noch Fragen haben, kontaktieren Sie uns!
By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.