Quartz Scheduler ব্যবহার করে রিপোর্ট অটোমেশন

JasperReports এবং Scheduling - জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

348

JasperReports এর মাধ্যমে রিপোর্ট তৈরি এবং এক্সপোর্ট করা হয়, তবে অনেক ক্ষেত্রে রিপোর্টের নির্দিষ্ট সময় বা নির্দিষ্ট সময় অন্তর তৈরি করা প্রয়োজন হয়। যেমন, আপনি যদি একটি ডেইলি রিপোর্ট, ওয়িকলি রিপোর্ট বা মেন্থলি রিপোর্ট অটোমেটেডভাবে এক্সপোর্ট করতে চান, তবে আপনি Quartz Scheduler ব্যবহার করতে পারেন। Quartz Scheduler একটি শক্তিশালী ওপেন সোর্স শিডিউলার যা Java অ্যাপ্লিকেশনের মধ্যে টাস্ক অটোমেটেডভাবে রান করতে সক্ষম করে।

Quartz Scheduler এবং JasperReports একত্রিত করার মাধ্যমে আপনি রিপোর্ট জেনারেশন প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে করতে পারেন।


Quartz Scheduler কি?

Quartz Scheduler হল একটি জাভা লাইব্রেরি যা টাস্ক শিডিউলিং এবং অটোমেশন কাজের জন্য ব্যবহৃত হয়। এটি আপনাকে নির্দিষ্ট সময়ে বা নির্দিষ্ট সময় অন্তর কোনো নির্দিষ্ট টাস্ক (যেমন, রিপোর্ট জেনারেশন) চালাতে সাহায্য করে। Quartz Scheduler ব্যাকগ্রাউন্ডে কাজ করে এবং নির্ধারিত সময় বা নির্দিষ্ট শর্তে কাজ সম্পাদন করে।


JasperReports এবং Quartz Scheduler এর ইন্টিগ্রেশন

Quartz Scheduler এবং JasperReports এর মাধ্যমে আপনি একটি report generation job শিডিউল করতে পারেন, যা নির্দিষ্ট সময়ে রিপোর্ট তৈরি করবে এবং সেই রিপোর্টটি নির্দিষ্ট ফরম্যাটে এক্সপোর্ট করবে (যেমন, PDF, Excel, HTML, CSV ইত্যাদি)।

1. Quartz Scheduler সেটআপ করা

প্রথমে, Quartz Scheduler সেটআপ করতে হবে। আপনি Maven ব্যবহার করলে Quartz-এর ডিপেন্ডেন্সি pom.xml ফাইলে যোগ করতে হবে।

Maven Dependency:

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version> <!-- Use the appropriate version -->
</dependency>

2. Quartz Job তৈরি করা

Quartz Job হল একটি ক্লাস যা নির্দিষ্ট কাজ (যেমন, রিপোর্ট তৈরি) সম্পাদন করবে। আমরা একটি Job তৈরি করব যা JasperReports ব্যবহার করে রিপোর্ট তৈরি করবে।

Quartz Job Example:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import net.sf.jasperreports.engine.*;

import java.util.HashMap;

public class ReportGenerationJob implements Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        try {
            // JasperReports-এ রিপোর্ট জেনারেট করা
            String reportPath = "path/to/your/jasper_report.jasper"; // কম্পাইল করা Jasper রিপোর্ট
            JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportPath);

            // প্যারামিটার এবং ডেটা প্রক্রিয়া
            HashMap<String, Object> parameters = new HashMap<>();
            parameters.put("ReportTitle", "Scheduled Sales Report");

            // রিপোর্ট ফিলিং
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());

            // রিপোর্ট পিডিএফ আউটপুট
            JasperExportManager.exportReportToPdfFile(jasperPrint, "scheduled_sales_report.pdf");

            System.out.println("Report generated successfully.");
        } catch (JRException e) {
            e.printStackTrace();
        }
    }
}

এখানে, ReportGenerationJob ক্লাসটি Job ইন্টারফেস ইমপ্লিমেন্ট করছে। এই ক্লাসটি JasperReports এর মাধ্যমে রিপোর্ট তৈরি এবং এক্সপোর্ট করে PDF ফরম্যাটে।

3. Quartz Scheduler Job Scheduling

এখন, আমরা Quartz Scheduler ব্যবহার করে এই Job-কে নির্দিষ্ট সময় বা নির্দিষ্ট সময়ে চালানোর জন্য শিডিউল করতে পারি।

Scheduler Example:

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzSchedulerExample {

    public static void main(String[] args) throws SchedulerException {
        // Scheduler তৈরি
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // JobDetail তৈরি করা
        JobDetail job = JobBuilder.newJob(ReportGenerationJob.class)
                .withIdentity("reportGenerationJob", "group1")
                .build();

        // Trigger তৈরি করা (এখানে, প্রতি দিন একটি নির্দিষ্ট সময়ে রিপোর্ট চালানো হবে)
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("dailyTrigger", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInHours(24) // প্রতি ২৪ ঘণ্টায়
                        .repeatForever())
                .build();

        // Job এবং Trigger Scheduler এ যোগ করা
        scheduler.scheduleJob(job, trigger);

        // Scheduler শুরু করা
        scheduler.start();
    }
}

এখানে, Scheduler তৈরি করা হয়েছে এবং Trigger ব্যবহার করে ReportGenerationJob প্রতিদিন নির্দিষ্ট সময়ে (এখানে প্রতি ২৪ ঘণ্টায়) চালানোর জন্য শিডিউল করা হয়েছে।

4. Job এর এক্সিকিউশন এবং রিপোর্ট আউটপুট

এই কোডটি চালানোর পর ReportGenerationJob ক্লাসটি প্রতিদিন একবার চালানো হবে এবং রিপোর্ট PDF ফরম্যাটে "scheduled_sales_report.pdf" নামের ফাইলে এক্সপোর্ট হবে।


Quartz Scheduler এর সুবিধা

  1. Automated Report Generation:
    • Quartz Scheduler এর মাধ্যমে রিপোর্ট তৈরি অটোমেটেডভাবে করা সম্ভব। আপনি নির্দিষ্ট সময় অন্তর রিপোর্ট তৈরি করতে পারেন, যেমন ডেইলি রিপোর্ট, মেন্থলি রিপোর্ট, ইত্যাদি।
  2. Flexible Scheduling:
    • Quartz Scheduler আপনাকে daily, weekly, monthly বা আপনার প্রয়োজন অনুযায়ী custom interval সেট করতে সাহায্য করে। এটি রিপোর্ট সিস্টেমের স্বয়ংক্রিয় কাজের জন্য আদর্শ।
  3. Job Management:
    • Quartz আপনাকে জব এবং ট্রিগারগুলি পরিচালনা করতে দেয়, যার মাধ্যমে আপনি রিপোর্টগুলি চালানোর জন্য নির্দিষ্ট সময় বা শর্ত নির্বাচন করতে পারেন।
  4. Performance Optimization:
    • Quartz Scheduler ব্যাকগ্রাউন্ডে কাজ করে এবং সিস্টেমের পারফরম্যান্সে প্রভাব ফেলে না। এটি আপনার অ্যাপ্লিকেশনের মূল কাজ চালানোর পাশাপাশি রিপোর্ট তৈরি করতে সাহায্য করে।
  5. Scalability:
    • Quartz Scheduler অনেক বড় পরিসরের রিপোর্টের জন্য কার্যকরী, যেখানে একাধিক রিপোর্টের শিডিউল করা এবং এক্সিকিউট করা প্রয়োজন।

Quartz Scheduler এবং JasperReports এর মাধ্যমে আপনি আপনার রিপোর্টিং সিস্টেমের কাজ অটোমেটেড করতে পারেন। Quartz Scheduler এর সাহায্যে আপনি নির্দিষ্ট সময়ের মধ্যে রিপোর্ট তৈরি এবং এক্সপোর্ট করতে পারবেন, যা বিশেষত ডেইলি, সাপ্তাহিক, বা মাসিক রিপোর্টিং সিস্টেমের জন্য অত্যন্ত উপকারী। এটি আপনাকে ডেটাবেস রিপোর্ট, ফিনান্সিয়াল রিপোর্ট, বিক্রয় রিপোর্ট ইত্যাদি এক্সপোর্ট করার জন্য একটি সম্পূর্ণ স্বয়ংক্রিয় সমাধান প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...