Version 3

    Reporting Services

     

    This project purpose is to provide reporting services

    for enterprises applications in a simple way.

    All reports are deployed in JBoss as a file or an archive and then

    become available for applications to execute.

    In J2EE environment, security checks can be applied.

     

    Reporting Services will be available for several underlying

    report engines (ie. JasperReports, JFreeReport ...)

     

     

    Services

     

    • security checking

    • executing

    • scheduling

    • distributing

    • storing executed reports

    • notifying when report is available

    • providing the scheduled reports list filtered by the caller's roles

    • report caching ?

     

    +(special case of execution: scheduling is set in metadata, then

    when apps execute report, execute instruction are ignored, last

    execution date should be available )+

    • versioning reports, executed reports ?

    • automatic report generation ?

     

     

    Enterprise Report Archive (xxx.era)

     

    It's a J2EE-like module where metadata are added to a set of reports.

    Then, they are deployed inside JBoss to be used from J2EE applications thru

    a simple API.

     

    Metadata

     

         <reports>
              <default>
                   <datasource></datasource>
                   <parameters ></parameters>
                   <execute>
                        <schedule></schedule>
                        <output-format></output-format>
                        <distribute></distribute>
                   </execute>
              </default>
    
              <security-constraints (a la web.xml)></security-constraints>
    
              <report>
                   <name>/aaa/bbb/myReport</name>
                   <datasource></datasource>
                   <parameters ></parameters>
                   <execute>
                        <schedule></schedule>
                        <output-format></output-format>
                        <distribute></distribute>
                   </execute>
              </report>
    
              <!--
              |  start dreaming ... 
              -->
              <automatic-report>
                   <name>/aaa/bbb/myReport</name>
                   <ejb-jndi-name>
                   <ejb-finder (name, parameters)>
                   <ejb-printed-properties>
                   <report-model>
              </automatic-report>
    
              <!-- ??? more dream : will become ejb annotations -->
    
         </reports>
    

     

     

    Client APIs

     

     

    The shortest : obtain the pdf now.

      byte[] pdf = ReportTaskFactory.getInstance().executeToByteArray("/reports/myReports.era/HelloWorld");
    

     

    Execute a report in one hour and send the pdf result by mail

      ReportTask rt = ReportTaskFactory.getInstance();
      ret.setReport(     new Report("/reports/myReports.era/HelloWorld")    );
      rt.setSchedule(    new ScheduleOnce( Calendar.newInstance().add(Calendar.HOUR,1) )  );
      rt.setDistribute(  new DistributeByMail("noel.rocher@jboss.org")  );
      rt.execute();
    

     

     

    Package could be :

     

    • Report

    • ReportTask

    • distribute/

      •      Distribute (interface)

      •      DistributeByMethodReturn

      •      DistributeByMail

      •      DistributeByFtp

      •      DistributeByFileCopy

      •      DistributeByJMS

      •      DistributeByPrinter

      •      ...

    • output/

      •      OutputFormat   

    • schedule/

      •      Schedule (interface)

      •      ScheduleOnce

      •      ScheduleNow

      •      SchedulePeriodic

      •      ScheduleEventListener ?

     

     

    Plus an administration part that will allow shceduling and right managment

     

    • admin/

      •    ...

     

     

     

    Reports Console (JSF)

     

    • browse deployed reports (report explorer)

    • execute/schedule a report

    • managing scheduled reports

    • deploy new reports

     

     

    JSF Components

     

    Allowing to enter a report's parameters, scheduling, output format and distribution data.

    A set of component should be developed to fit the simplest case (execute now with these parameters) and

    the most complex one (all could be provided by the user).

     

     

    Underlying Technology

     

    • JasperReports, JFreeReport

    • Deployers, Service, ServiceListener

    • JBoss Remoting