## Lesson 5: Scheduling a report set from JSP

You have been asked to run EmployeeInformation.cls from the JSP application and allow the user to schedule the report set from the JSP application. We will use an HTML page to ask the user for the scheduling information and then run the report set simply by calling submitScheduledTask().

This lesson needs an HTML and a JSP file:

1. Copy scheduleRequest.html in `<install_root>\Demo\source` to `<install_root>\public_html\jag`.
2. Open scheduleRequest.html in your favorite editor.

       <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

       <html>

       <head>

       <title>Schedule ListByCategory to run once at a future time.</title>

       </head>

       <body>

       <p>Schedule running ListByCategory in PDF format and publish the pdf file
       to the servers file system:

       <form method=get action="scheduleReport.jsp">

         Specify the pdf file path and name :

              <input type="text" name="filepath" value="C:\temp\" size="30">

              <input type="text" name="filename" value="EmployeeInformation.pdf" size ="20"><br>

       Run this task on: <input type="text" name="month" value="1" size="5"> (Month)

                         <input type="text" name="day" value="1" size="5"> (Day),

                                  <input type="text" name="year" value="2007" size="7"> (Year), at

                                    <input type="text" name="hour" value="17" size="5"> (Hour)

                                  <input type="text" name="min" value="0" size="5"> (Minute) <br><br><br>

       <input type="submit" value="Schedule this task">

       </form>

       </body>

       </html>

3. Copy scheduleReport.jsp in `<install_root>\Demo\source` to `<install_root>\public_html\jag`.
4. Open scheduleReport.jsp in your favorite editor to view it.

       <%@ page import="jet.web.dhtml.*"%>

       <!-- specify the error page for this is jsp, a user can customize it and it's optional. -->

       <%@ page errorPage="../dhtmljsp/errorpage.jsp" %>

       <!-- include the jsp for check user login -->

       <%@ include file="../dhtmljsp/AuthCheck.jsp" %>

       <html>

       <head>

       <title> Schedule according to date and time provided by scheduleRequest.html </title>

       </head>

       <body>

       <%

           //get RptServer

            HttpRptServer server = DHTMLHttpUtil.getHttpRptServer(request);

           Properties props = new Properties();

               props.put("jrs.cmd", "jrs.submit_schedule");

              props.put("jrs.task_class", "jet.server.schedule.jrtasks.PublishToDiskTask");

              props.put("jrs.to_disk", "true");

         props.put("jrs.to_disk_pdf_path_type", "1");

              props.put("jrs.result_type", "2");

        props.put("jrs.to_pdf", "true"); // run in PDF format

              props.put("jrs.launch_type", "1");

        props.put("jrs.catalog", "/USERFOLDERPATH/admin/JinfonetGourmetJava/ JinfonetGourmetJava.cat");

           props.put("jrs.report", "/USERFOLDERPATH/admin/JinfonetGourmetJava/ EmployeeInformation.cls");

             props.put("jrs.auth_uid", "admin"); // set log user ID to avoid login dialog popup

         props.put("jrs.auth_pwd", "admin");  // set log user password to avoid login dialog popup

          props.put("jrs.pdf_dir", request.getParameter("filepath"));

        props.put("jrs.pdf", request.getParameter("filename"));

            props.put("jrs.exe_year", request.getParameter("year"));

           props.put("jrs.exe_month", request.getParameter("month"));

         props.put("jrs.exe_day", request.getParameter("day"));

             props.put("jrs.exe_hour", request.getParameter("hour"));

           props.put("jrs.exe_min", request.getParameter("min"));

           //get user information

             HttpUserSessionManager umg = server.getHttpUserSessionManager();

           UserSession us = umg.getUserSession(request);

              String userId = us.getUserID();

           //Submit a scheduled task and return the task ID.

         String taskID = server.submitScheduledTask(userId, props);

         out.print("The task has been scheduled. The task ID is:" + taskID);

       %>

       </body>

       </html>

5. Browse http://localhost:8888/jag/scheduleRequest.html, and the following page appears:

6. Specify the current date, but choose a time about 10 minutes from the current time. You can change the default file name and scheduled location if desired.

   Note: Only whole numbers can be specified for each field.

7. After the specified time, view the report result in its target location.

   Scheduling report sets in this way has two advantages:

   - The data captured by the report can correlate to a specific window, that is, a report of monthly activity can be generated at the exact minute the month is over.
   - JReport Enterprise Server can operate at off hours, thereby allowing more throughput during peak time.

### Lesson 5 summary

In this task you have learned how to use JSP and JReport Server API to run a report set according to a schedule provided by an application.