ป้ายกำกับ: Jasperreports

JoGet: Save PDF From Jasper ReportJoGet: Save PDF From Jasper Report

การจัดการรายงาน (Reporting) เป็นส่วนสำคัญของระบบงานที่ต้องการการตรวจสอบข้อมูลอย่างละเอียด การส่งรายงานในรูปแบบ PDF ที่สร้างจาก JasperReports และต้องการให้ผู้ใช้สามารถตรวจสอบความถูกต้องของไฟล์ที่บันทึกไว้ก่อนการอนุมัติ ถือเป็นขั้นตอนที่สำคัญอย่างยิ่ง

ในสภาพแวดล้อมที่ใช้ JoGet เป็น Workflow Engine และมี PostgreSQL เป็นฐานข้อมูลหลัก การบันทึกหรือจัดเก็บรายงาน PDF ที่สร้างจาก Jasper Reports อย่างมีประสิทธิภาพ จำเป็นต้องมีการผสานรวม (Integration) ที่ถูกต้อง โดยเฉพาะการจัดการข้อมูลพารามิเตอร์ (Parameters) และการเรียกใช้ฟังก์ชันที่เหมาะสม

หลักการทำงาน: การบันทึก Jasper Report เป็น PDF ใน JoGet ด้วย PostgreSQL

แม้ว่าการสร้างไฟล์ PDF จะเป็นกระบวนการที่ต้องอาศัยไลบรารีภายนอก (เช่น JasperReports Library) แต่บทบาทของ PostgreSQL คือการรับผิดชอบในการจัดเตรียมข้อมูลที่สมบูรณ์แบบ (Data Preparation) และการจัดการ Workflow Parameters เพื่อให้แน่ใจว่าเมื่อถึงขั้นตอนการ Export รายงาน ข้อมูลที่ส่งไปนั้นถูกต้องและครบถ้วน

ในเชิงสถาปัตยกรรม (Architecture) เราจะใช้ PostgreSQL Function เพื่อดึงข้อมูลที่จำเป็นทั้งหมด (เช่น ช่วงวันที่, รหัสผู้ใช้, รายการสินค้า) จากตารางต่างๆ และส่งชุดข้อมูลนี้ไปยัง JoGet Activity เพื่อให้ JasperReports สามารถนำไป Fill และ Export เป็นไฟล์ PDF ได้อย่างแม่นยำ

ตัวอย่างการใช้ PostgreSQL Function เพื่อเตรียมข้อมูลสำหรับ Report

ตัวอย่างโค้ดนี้แสดงการสร้างฟังก์ชันใน PostgreSQL เพื่อจำลองการดึงชุดข้อมูลที่จำเป็น (เช่น รายการ ID และชื่อ) ซึ่งเป็นข้อมูลหลักที่ JasperReport จะนำไปใช้ในการสร้างรายงาน PDF:

SQL

-- สร้างฟังก์ชันเพื่อดึงข้อมูลที่จำเป็นสำหรับ Jasper Report
CREATE OR REPLACE FUNCTION get_report_data_for_jasper(p_start_date DATE, p_end_date DATE) 
RETURNS TABLE (item_id VARCHAR, item_name VARCHAR, quantity INT) 
LANGUAGE plpgsql
AS $$
BEGIN
    -- จำลองการดึงข้อมูลจากตาราง orders หรือ transaction
    RETURN QUERY SELECT
        'A101'::VARCHAR, 'Apple'::VARCHAR, 5::INT
    UNION ALL
    SELECT
        'B202'::VARCHAR, 'Banana'::VARCHAR, 12::INT
    UNION ALL
    SELECT
        'C303'::VARCHAR, 'Orange'::VARCHAR, 3::INT;
END;$$;

-- วิธีการเรียกใช้ฟังก์ชันเพื่อดึงชุดข้อมูล (ใช้เป็น Input Parameter ใน JoGet)
SELECT * FROM get_report_data_for_jasper('2023-10-01', '2023-10-31');

คำอธิบายโค้ด: ฟังก์ชันนี้ทำหน้าที่เป็นแหล่งข้อมูล (Data Source) ที่เชื่อถือได้ โดยการส่งชุดข้อมูลที่ถูกจัดรูปแบบแล้ว (item_id, item_name, quantity) ออกมา ซึ่งชุดข้อมูลนี้จะถูกส่งผ่าน JoGet ไปยัง JasperReports Engine เพื่อให้สามารถสร้างไฟล์ PDF ที่มีเนื้อหาตามตัวอย่างข้อมูลได้อย่างสมบูรณ์

บทสรุป: การผสานรวมที่สมบูรณ์แบบ

การใช้ PostgreSQL ในการจัดการข้อมูลสำหรับ Jasper Reports ผ่าน JoGet ไม่เพียงแต่ช่วยให้กระบวนการทำงาน (Workflow) มีความเสถียรและเชื่อถือได้เท่านั้น แต่ยังช่วยลดโอกาสเกิดข้อผิดพลาดของข้อมูล (Data Integrity) ได้อย่างมาก การออกแบบฟังก์ชันใน PostgreSQL ที่ชัดเจนและเป็นมาตรฐาน จะทำให้การเรียกใช้รายงาน PDF เป็นไปอย่างราบรื่น ทำให้ผู้ใช้งานมั่นใจได้ว่าไฟล์ที่ได้รับนั้นเป็นข้อมูลที่ผ่านการตรวจสอบความถูกต้องจากฐานข้อมูลหลักก่อนการนำไปใช้งานจริง