Table of Contents |
---|
Starting Situation
- User might be interested to automatically receive reports about the daily plan that states what jobs are scheduled for what timepast job executions.
- The reports include the same information as available from the JOC Cockpit Daily Plan History view for tasks.
- The reports are provided as Excel® files similar to what is available for export from the JOC Cockpit Daily Plan History view.
- The report can be scheduled e.g. on a daily basis or more frequently to provide ongoing information about completed tasks and outstanding tasksreport about past job execution results.
Use Cases
Report
...
Task History from a job
The PowerShell CLI is used by jobs to create reports. Two modules are applied for this purpose:
...
Please consider that below jobs are examples that have to be adjusted for your environment.
Windows Version
Download: report_daily_plan_windows.job.xml
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="ISOUTF-8859-18" ?> <job title="Report DailyTask PlanHistory" process_class="agent_windows"> <settings/> <script language="powershell"><![CDATA[ Import-Module $env:SCHEDULER_DATA/config/powershell/Modules/ImportExcel Import-Module $env:SCHEDULER_DATA/config/powershell/Modules/JobScheduler Connect-JS -Url $JOCCockpitUrl -Credential $JOCCockpitCredential | Out-Null # startDates in mode mapping $startModes = @{"0"="single start"; "1"="repeat start-start"; "2"="repeat end-start"} # Dates in local time zone, output includes local date format Get-JSDailyPlan -Timezone (Get-Timezonelocal timezone, output includes local date format Get-JSTaskHistory -Timezone (Get-Timezone ) ` | Select-Object -Property @{name="JobJobScheduler Chain/JobID"; expression={ "$($_.jobChain)$($_.job)"jobschedulerId}}, ` @{name="OrderTask ID"; expression={$_.orderIdtaskId}}, ` @{name="StatusJob"; expression={$_.state._textjob}}, ` @{name="Job StreamStatus"; expression={$_.jobStreamstate._text}}, ` @{name="LateStart Time"; expression={ Get-Date $_.latestartTime }}, ` @{name="StartEnd TypeTime"; expression={ $startModes[Get-Date "$($_.startMode)"]endTime }}, ` @{name="Repeat IntervalDuration (sec.)"; expression={$_.period.repeat}}, ` @{name="Planned Start Time"; expression={ Get-Date $_.plannedStartTime }}, ` @{name="Expected End Time"; expression={ Get-Date $_.expectedEndTime }}, ` @{name="Expected Duration (sec.)"; expression={ (New-Timespan -Start "$($_.plannedStartTime)" -End "$($_.expectedEndTime)").Seconds }}, ` @{name="Start Time"; expression={ Get-Date $_.startTime (New-Timespan -Start "$($_.startTime)" -End "$($_.endTime)").Seconds }}, ` @{name="End TimeCriticality"; expression={ Get-Date $_.endTime criticality}}, ` @{name="Duration (sec.)"; expression={ (New-Timespan -Start "$($_.startTime)" -End "$($_.endTime)").Seconds Exit Code"; expression={$_.exitCode}} ` | Export-Excel -Path /tmp/jobscheduler_reporting.xlsx -WorksheetName "DailyTask-PlanHistory" -ClearSheet Write-Output ".. report created: /tmp/jobscheduler_reporting.xls" ]]></script> <run_time/> </job> |
...
- Line 2-3: The job is executed with a Windows Agent that is assigned by a process class. The job is of type "powershell" and will use the Powershell version provided with the server.
- Line 4-5: The required PowerShell modules are imported. They could be installed with any location in the filesystemfile system
- Line 7: The Connect-JS cmdlet is used to authenticate with the JOC Cockpit REST Web Service. The required URL and credentials are specified in a PowerShell profile, see PowerShell CLI 1.2 - Use Cases - Credentials Management
- Line 10: For better readability of the report the start types of jobs are mapped to a textual representation (single start, cyclic start etc.).
- Line 13: The Get-JSDailyPlanJSTaskHistory cmdlet is called
- with the parameter
-Timezone
to specify to which timezone date values in the report should be converted. The parameter value-Timezone (Get-Timezone)
specifies that the timezone of the Agent's server is used. Otherwise specify the desired timezone e.g. like this:-Timezone (Get-Timezon Timezone -Id 'GMT Standard Time')
. Without using this parameter all any date values are stored as UTC dates to the report. - optionally with additional parameters, e.g. to specify the date range for which the report is created A value
-DateTo DateFrom (Get-Date -Hour 0 -Minute 0 -Second 0).AddDays(8-7).ToUniversalTime()
specifies that the report should cover the next last 7 days (until from midnight). Keep in mind that dates have to be specified for the UTC timezone. Without this parameter the report will be created for the next last day. - see the Get-JSDailyPlan JSTaskHistory cmdlet for a full parameter reference.
- with the parameter
- Line 14-26: From the output of the Get-JSDailyPlan JSTaskHistory cmdlet a number of properties are selected and and are specified in for the sequence in which they should occur in the report.
- To add more speaking column headers the property names are mapped to a more readable textual representation.
- Consider the handling of date formats in line 21, 22 and 24, 25. Use of the
Get-Date
cmdlet converts the output format of dates (not the timezone) to the default format that is in place on the Agent's server. Without using theGet-Date
cmdlet all any date values will be stored to the report in ISO format, e.g.2020-12-31 10:11:12+02:00
for a date in the European central timezone that is UTC+1 in winter time and UTC+2 in summer time. - Lines 23, 26 introduce a new property, a calculated duration. From the start time and end time values of a planned start and optionally of a past start the difference in seconds is calculated and is forwarded to the report.
- Line 27: The list of properties per daily plan item is piped to the
Export-Excel
cmdlet that is available with the ImportExcel PowerShell Module. The report file name is specified and optionally the worksheet. For a full list of parameters see the ImportExcel PowerShell Module.
Linux Version
Download: report_daily_plan_linux.job.xml
...