Uploaded image for project: 'JITL - JobScheduler Integrated Template Library'
  1. JITL - JobScheduler Integrated Template Library
  2. JITL-228

Provide a function for checking the job chain and order history in job monitors by use of the XML interface

    XMLWordPrintable

Details

    Description

      Current Situation
      The check run history function does not support

      • time limits
      • job chains
      • orders

      Desired Behaviour
      The check run history function should support

      • time limits
      • job chains
      • orders

      Feature
      see https://change.sos-berlin.com/browse/JITL-217, additionally

        • Time limits can be given
          • var jobHistoryInfo = jobHistory.getJobInfo("job1","-8:10:00:00..-4:14:00:00");
        • int getCount());
        • int getNumberOfCompleted()
        • int getNumberOfCompletedSuccessful()
        • int getNumberOfCompletedWithError()
        • int getNumberOfStarts());
        • boolean isCompletedBefore
        • boolean isCompletedWithErrorBefore
        • boolean isCompletedSuccessfulBefore
      function spooler_process()  {
       
          // using the current job name and default limit
          var jobChainHistoryInfo = getjobChainHistoryInfoObject("test");
      
          // using the current job chain name and the given limit        
          // var jobChainHistoryInfo = getjobChainHistoryInfoObject( "", 30 );
      
          // using the given job chain name and default limit
          // var jobChainHistoryInfo = getjobChainHistoryInfoObject( "jobchain1" );
      
          // using the given job chain name and the given limit
          // var jobChainHistoryInfo = getjobChainHistoryInfoObject( "jobchain1", 20 );
      
          // using the given job chain name and a given order_id
          // var jobChainHistoryInfo = getjobChainHistoryInfoObject( "jobchain1(order_id)", 20 );
      
          // reporting some info on job runs
      
          report( jobChainHistoryInfo.getLastCompleted() );
          report( jobChainHistoryInfo.getRunning() );
          report( jobChainHistoryInfo.getLastCompletedSuccessful() );
          report( jobChainHistoryInfo.getLastCompletedWithError() );
      
          // report on currently running job
          report( jobChainHistoryInfo.getLastExecution() );
       
          spooler_log.info("isStartedToday: " + jobChainHistoryInfo.isStartedToday());
          spooler_log.info("isStartedTodayCompletedSuccessful: " + jobChainHistoryInfo.isStartedTodayCompletedSuccessful());
          spooler_log.info("isStartedTodayCompletedWithError: " + jobChainHistoryInfo.isStartedTodayCompletedWithError());
          spooler_log.info("isStartedTodayCompleted: " + jobChainHistoryInfo.isStartedTodayCompleted());
          spooler_log.info("isCompletedToday: " + jobChainHistoryInfo.isCompletedToday());
          spooler_log.info("isCompletedTodaySuccessful: " + jobChainHistoryInfo.isCompletedTodaySuccessful());
          spooler_log.info("isCompletedTodayWithError: " + jobChainHistoryInfo.isCompletedTodayWithError());
      
          spooler_log.info("endedAfter: " + jobChainHistoryInfo.endedAfter("03:00:00"));
          spooler_log.info("endedWithErrorAfter: " + jobChainHistoryInfo.endedWithErrorAfter("03:00:00"));
          spooler_log.info("endedSuccessfulAfter: " + jobChainHistoryInfo.endedSuccessfulAfter("03:00:00"));
      
          spooler_log.info("startedAfter: " + jobChainHistoryInfo.startedAfter("03:00:00"));
          spooler_log.info("startedWithErrorAfter: " + jobChainHistoryInfo.startedWithErrorAfter("03:00:00"));
          spooler_log.info("startedSuccessfulAfter: " + jobChainHistoryInfo.startedSuccessfulAfter("03:00:00"));
      
       
      
      	spooler_log.info("isStartedToday:" + jobChainHistoryInfo.queryHistory("isStartedToday"));
          spooler_log.info("isStartedTodayCompletedSuccessful:" + jobChainHistoryInfo.queryHistory("isStartedTodayCompletedSuccessful"));
          spooler_log.info("isStartedTodayCompletedWithError:" + jobChainHistoryInfo.queryHistory("isStartedTodayCompletedWithError"));
          spooler_log.info("isStartedTodayCompleted:" + jobChainHistoryInfo.queryHistory("isStartedTodayCompleted"));
          spooler_log.info("isCompletedToday:" + jobChainHistoryInfo.queryHistory("isCompletedToday"));
          spooler_log.info("isCompletedTodaySuccessfully:" + jobChainHistoryInfo.queryHistory("isCompletedTodaySuccessful"));
          spooler_log.info("isCompletedTodayWithError:" + jobChainHistoryInfo.queryHistory("isCompletedTodayWithError "));
      		
          //since 1.10.2 1.9.8 also possible
          spooler_log.info("isCompletedAfter:" + jobChainHistoryInfo.queryHistory("isCompletedAfter(-1:10:48:33)"));
          spooler_log.info("isCompletedWithErrorAfter:" + jobChainHistoryInfo.queryHistory("isCompletedWithErrorAfter(03:00:00)"));
          spooler_log.info("isCompletedSuccessfulAfter:" + jobChainHistoryInfo.queryHistory("isCompletedSuccessfulAfter(03:00:00)"));
      
          spooler_log.info("isStartedAfter:" + jobChainHistoryInfo.queryHistory("isStartedAfter(-1:10:48:33)"));
          spooler_log.info("isStartedWithErrorAfter:" + jobChainHistoryInfo.queryHistory("isStartedWithErrorAfter(03:00:00)"));
          spooler_log.info("isStartedSuccessfulAfter:" + jobChainHistoryInfo.queryHistory("isStartedSuccessfulAfter(03:00:00)"));
      
          // example how to convert Date fields (start date)
          if ( jobChainHistoryInfo.getLastCompletedSuccessful().found ) {
              var d = jobChainHistoryInfo.getLastCompletedSuccessful().start;
              if (d != null) {
       
                  spooler_log.info ("------->" + d );
                  spooler_log.info("-------------> d.toString(): " + lastRunCompleted);
                  spooler_log.info("-------------> with format: " + d.format(java.time.format.DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")));
              }
          }
      
          spooler_log.info ( "check if the job chain started on the previous day before a specific point in time" );
          var jobChainHistoryInfo = getjobChainHistoryInfoObject( "jobchain1", "", "-1:10:43:56" );
          spooler_log.info ( "completedBefore -1:10:43:56: " + jobChainHistoryInfo.isCompletedBefore());
          spooler_log.info ( "completedWithErrorBefore -1:10:43:56: " + jobChainHistoryInfo.isCompletedWithErrorBefore() );
          spooler_log.info ( "completedSuccessfulBefore -1:10:43:56: " + jobChainHistoryInfo.isCompletedSuccessfulBefore() );
      
          //since 1.10.2 1.9.8 also possible
          spooler_log.info ( "completedBefore -1:10:43:56: " + jobChainHistoryInfo.queryHistory("isCompletedBefore"));
          spooler_log.info ( "completedWithErrorBefore -1:10:43:56: " + jobChainHistoryInfo.queryHistory("isCompletedWithErrorBefore"));
          spooler_log.info ( "completedSuccessfulBefore -1:10:43:56: " + jobChainHistoryInfo.queryHistory("isCompletedSuccessfulBefore"));
           
          return false;
      }
      
      function getjobChainHistoryInfoObject(jobchain, limit, timelimit) {
          var jobChainHistory = new Packages.com.sos.jitl.checkrunhistory.JobChainHistory( spooler.delegate );
      
          if ((jobchain === undefined) || (jobchain === "")) {
            jobchain = spooler_task.order.job_chain.name;
          }
          if (limit === undefined || limit === "") {
             limit = "100";
          }
          if (timelimit === undefined) {
             timelimit = "";
          }
      
          var jobChainHistoryInfo = jobChainHistory.getJobChainInfo( jobchain, limit, timelimit );
          return jobChainHistoryInfo;
      }
      
      function report( reportItem ) {
          spooler_log.info( "_____________________________" );
          if (reportItem.found) {
              spooler_log.info( "Name:" + reportItem.name );
              spooler_log.info( "id: " + reportItem.id );
              spooler_log.info( "Job chain name: " + reportItem.jobChainName );
              spooler_log.info( "Position: " + reportItem.position );
              spooler_log.info( "Start Time: " + reportItem.start );
              spooler_log.info( "End Time: " + reportItem.end );
              spooler_log.info( "Duration: " + reportItem.duration );
              spooler_log.info( "Error: " + reportItem.error );
              
              
          } else {
              spooler_log.info( "Name: " + reportItem.name + " not found" );
          }
      }
      

      Attachments

        Issue Links

          Activity

            People

              ur Uwe Risse
              ur Uwe Risse
              Andreas Püschel Andreas Püschel
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: