2009-08-04 28 views
5

Tôi đang xem xét đưa JasperReport vào một ứng dụng web hiện có để báo cáo. Webapp nằm trên đầu trang của một cơ sở dữ liệu hiện có mà là cổ xưa và phức tạp, và thực sự không thích hợp cho các nhà văn báo cáo sử dụng để viết báo cáo trực tiếp.JasperBáo cáo và các nguồn dữ liệu tùy chỉnh

Điều tôi muốn xem là viết một số loại trình bao bọc quanh lớp truy cập dữ liệu hiện có của chúng tôi (được viết để giúp cuộc sống của chúng ta dễ nói chuyện với db nói trên và phức tạp nói trên). Có ai có kinh nghiệm viết các nguồn dữ liệu tùy chỉnh cho JasperResports hay làm bất cứ điều gì như thế này không?

Cập nhật

Tôi đoán tôi có lẽ là không rõ ràng trong câu hỏi của tôi - mà có lẽ bởi vì yêu cầu của tôi không rõ ràng một trong hai. Tôi muốn cung cấp một số cách mà người dùng cuối có thể sử dụng một cái gì đó như iReport để tác giả báo cáo chống lại cơ sở dữ liệu, và sau đó sử dụng JasperReportServer để lên lịch/xem các báo cáo. Tuy nhiên, cơ sở dữ liệu thực sự, thực sự khó chịu và không bao giờ được thiết kế để sử dụng theo cách này. Chúng tôi đã có một lớp truy cập xung quanh nó mà webapp sử dụng để nói chuyện với nó. Tôi muốn giữ cho người dùng cuối của mình tránh xa DB hoàn toàn và ý tưởng về nguồn dữ liệu tùy chỉnh sử dụng lớp truy cập dường như là một lựa chọn tốt. Tuy nhiên, tôi đã tìm thấy rất ít tài liệu về cách thực hiện điều đó. Có lẽ nó dễ dàng hơn rất nhiều so với tôi nghĩ, và tôi chỉ đang cố gắng làm một điều đơn giản chết quá phức tạp.

Cập nhật

Cảm ơn câu trả lời. Tôi không nghĩ rằng vấn đề của tôi đã được giải quyết, nhưng tôi nghĩ rằng các câu trả lời đã giúp thông báo cho giai đoạn yêu cầu.

Trả lời

3

Mỗi mẫu JasperReports có thể có hai nguồn dữ liệu khác nhau. Một là hooking nó trực tiếp đến một cơ sở dữ liệu bằng cách sử dụng một số trình điều khiển jdbc hoặc, trong trường hợp của bạn, cung cấp một tập hợp các hạt java (POJO's), thường là danh sách.

Mẫu JasperReports tương tự như định nghĩa phương thức. Nó có tên, tức là đối tượng JR được biên dịch và các tham số (nguồn dữ liệu và danh sách các tham số đầu vào của một số loại Java phổ biến nhất).

Đề xuất của tôi là sử dụng công cụ iReport. Mở một số ví dụ đi kèm với gói JasperReports, phân tích nó và tinh chỉnh nó. Nó không quá phức tạp.

CẬP NHẬT

khách hàng Cho authoring JasperReports mẫu, biên dịch và thêm vào classpath có nghĩa là bạn sẽ cần phải mở hệ thống của bạn quá nhiều. Thông thường, khách hàng cung cấp mô tả về báo cáo mong muốn và (các) nhà phát triển tạo nguồn dữ liệu và thiết kế mẫu. JasperReports có thể có các tham số. Nếu các tham số này được hiển thị thông qua người dùng UI có thể thay đổi hành vi của các báo cáo trong thời gian chạy.

Nếu bạn thực sự cần phải cho phép linh hoạt hơn thì hãy sử dụng API được cung cấp bởi JasperReports để tạo mẫu. Tôi có thể tưởng tượng một số DLS đơn giản cho người dùng nâng cao để giao tiếp với hệ thống của bạn tạo báo cáo trực tuyến.

+0

Tôi không biết họ có thể có nhiều dữ liệu nguồn. Kế hoạch là sử dụng iReport để tạo báo cáo. Tôi nghĩ rằng những gì tôi đang thiếu ở đây là về truy vấn lớp truy cập của tôi, không ai trong số các ví dụ tôi đã thấy đã cho thấy bất cứ điều gì về điều đó. Tôi đã cập nhật câu hỏi. –

4

Báo cáo Jasper cho phép bạn sử dụng nguồn dữ liệu "JavaBean". Bạn có thể tải dữ liệu của bạn vào bất kỳ cấu trúc Java Bean nào và xây dựng các báo cáo chống lại điều đó. Hoạt động tốt.

Xem phần "Nguồn dữ liệu tùy chỉnh" here.

+0

Cảm ơn. Tôi đã nhìn thấy bit đó, và nó chỉ cho thấy một ví dụ cơ bản.Tôi nghĩ rằng tôi có thể xem làm thế nào để kéo các thông số khác nhau ra khỏi báo cáo. Những gì tôi không thể thấy là cách trình bày các trường có sẵn cho tác giả báo cáo. –

+1

Cách chúng tôi làm điều này là tạo một tệp jar với tất cả các Hạt Java cho các báo cáo trong đó. Sau đó, bạn thêm tệp jar vào đường dẫn lớp trong iReport. Chúng ta đặt trong lớp nhà cung cấp như trong Hình 3.5 trong liên kết ở trên. Nó đã được một thời gian nhưng tôi nghĩ rằng đó là cách nó làm việc. –

+0

@Jacob Schoen Xin chào, tôi tự hỏi liệu có thể chuyển tham số vào đậu java không? Sau đó, chúng tôi có thể xử lý một số logic kinh doanh, cảm ơn. – coastline

Các vấn đề liên quan