Besides being an attractive and user-friendly GUI, QuartzDesk provides many unique features that we think you should know about when evaluating and considering QuartzDesk. These features are summarized on this page.
QuartzDesk supports all Java Quartz scheduler versions newer than or equal to 1.8.5.
This feature is available in all QuartzDesk editions.
QuartzDesk uses JMX to locally or remotely connect to all managed and monitored Quartz schedulers. QuartzDesk supports all popular JMX protocols such as the JMX/RMI (JMX over RMI protocol), JMXMP and REMOTING-JMX (JBoss proprietary protocol).
This feature is available in all QuartzDesk editions.
QuartzDesk Web Application implements a fine-grained security model that enables you to manage QuartzDesk users, groups and their permissions directly in the QuartzDesk GUI. There are over 50 access permissions that can be assigned to individual users and/or groups. A current user's effective permissions are calculated from permissions directly assigned to the user and permissions assigned to all groups the user is a member of.
QuartzDesk users are authenticated against a pluggable security realm. A security realm is an arbitrary "database" containing basic user details (e.g. first name, surname, email, etc.) and authentication credentials. QuartzDesk provides two out-of-the-box security realm implementations:
If required, users can provide and plug in their own custom security realm implementation.
This feature is available in all QuartzDesk editions.
QuartzDesk can manage multiple local and remote Quartz schedulers. Quartz scheduler connections can be organized using drag-and-drop into folders within the Schedulers tree panel. QuartzDesk provides an easy way to discover, test and register new scheduler connections.
This feature is available in all QuartzDesk editions.
QuartzDesk supports all common job management operations such as:
This feature is available in all QuartzDesk editions unless stated otherwise.
QuartzDesk supports all common trigger management operations such as:
This feature is available in all QuartzDesk editions unless noted otherwise.
QuartzDesk keeps track of and displays all trigger misfires. A trigger misfire occurs when a trigger cannot execute its associated job at the scheduled time due to the scheduler being stopped, paused, or if the scheduler cannot allocate a free worker thread to execute the job.
When a misfire is detected, the scheduler uses the misfire instruction set on the misfired trigger to determine whether and how the associated job should be executed.
For each trigger misfire, QuartzDesk GUI displays the current refire status for the misfired job so that you can see if the job was executed after the misfire condition was detected and what the status of that execution was (i.e. Success, Error, Veto).
This feature is available only in the QuartzDesk Standard and Enterprise editions.
QuartzDesk records individual job executions and vetoes. For each job execution, more than 30 runtime parameters are recorded. The collected data can then be easily accessed through the QuartzDesk GUI in the Execution History table. In the Execution History table, you can quickly identify all successful, failed and vetoed executions because these are shown with distinct row background colors.
If the executed job produced a result, you can view its textual representation by clicking on the icon in the Result column. If the job execution failed, you can view the execution exception by clicking on the icon in the Exception column.
The Execution History table is available at the job, trigger and scheduler level. Therefore you can easily obtain the execution history for the selected job, or trigger. Execution history on the scheduler level provides access to the complete execution history for the given scheduler across all of its jobs and triggers.
This feature is available only in the QuartzDesk Standard and Enterprise editions.
QuartzDesk can intercept log messages produced by executed jobs. The intercepted log messages are recorded and can be viewed by clicking on the icon in the Execution History table's Log column in the QuartzDesk GUI.
Log message interception is currently supported for all popular Java logging frameworks, such as the Java Utility Logging (JUL), Log4j, Log4j 2 and Logback.
This feature is available only in the QuartzDesk Standard and Enterprise editions.
In the Planned Job Executions tab, you can view the list of all jobs scheduled to execute between the specified start and finish datetimes. This is very useful, for example, when planning a downtime when you can use this feature to view the list of all jobs affected by the downtime.
In the Jobs and Triggers tabs, you can view the next fire times (planned scheduled times) of a selected job or trigger respectively.
This feature is available only in the QuartzDesk Standard and Enterprise editions.
The job chaining engine allows users to easily orchestrate the execution of their jobs and completely externalize job runtime dependencies and inter-job communication from the application code. The job chaining works seamlessly across local and remote schedulers.
If users need to chain execution of their jobs, they need to create a job chain. A job chain has a condition that is evaluated prior to the execution of the configured job chain target jobs. Only if the condition evaluates to true, the job chain target jobs are scheduled for execution. QuartzDesk supports the following job chain conditions:
Condition Type | Usage |
---|---|
Execution Status | Triggers target jobs when the source job execution finishes with a configure execution status (Success, Veto, Error). |
Max Duration | Triggers target jobs when the source job finishes executing and its execution time exceeds the configured number of milliseconds. |
Expression | The most powerful condition type that allows users to implement an arbitrary condition logic using the JavaScript language. Besides standard JavaScript objects, the expression can use more than 70 scripting objects exposed by the QuartzDesk runtime. Please note that the list of available scripting objects includes the textual representation of the source job's execution log that can be, for example, easily parsed and analyzed. |
QuartzDesk job chains can execute local and remote target jobs. These target jobs can be executed immediately, after a configured delay or at a specific datetime in the future returned by a custom JavaScript expression.
When a target job is executed, the following entries are automatically added to its job data map:
Name | Description |
---|---|
QD_JOB_CHAIN_ID | The ID of the job chain that triggered the target job. |
QD_JOB_CHAIN_NAME | The name of the job chain that triggered the target job. |
QD_JOB_CHAIN_SRC_JOB_GROUP_NAME | The group name of the source job. |
QD_JOB_CHAIN_SRC_JOB_NAME | The name of the source job. |
QD_JOB_CHAIN_SRC_TRIGGER_GROUP_NAME | The group name of the source trigger. |
QD_JOB_CHAIN_SRC_TRIGGER_NAME | The name of the source trigger. |
QD_JOB_CHAIN_SRC_EXEC_STATUS | The execution status (SUCCESS, VETO, ERROR) of the source job. |
QD_JOB_CHAIN_SRC_RESULT | The result object set by the source job. See the JobExecutionContext.setResult(Object) method. |
QD_JOB_CHAIN_SRC_USER_DATA | The user-data object set by the source job. User-data is a QuartzDesk-specific extension object that can be set in jobs by invoking JobExecutionContext.put("USER_DATA", Object). User-data objects can be viewed in the execution history in the QuartzDesk GUI and they can also be used in execution notification rules. |
QD_JOB_CHAIN_SRC_ERROR | The stack trace of the exception that caused the execution failure of the source job. |
Job chains can be defined at the job, trigger and scheduler levels.
This feature is available only in the QuartzDesk Enterprise edition.
With the help of 12 Execution Statistics provided by QuartzDesk, you can get a complete picture of what is going on inside the managed Quartz schedulers. For example, the Execution Statistics allow you to easily identify the most frequently failing jobs/triggers, the slowest jobs/triggers and more. If you find a problem, you can then use the Execution History to drill-down and find out further details (e.g. job execution exceptions). You can easily set up your SLAs for individual jobs and triggers and then use Execution Statistics to verify whether these SLAs have been met.
Execution Statistics are available at the job, trigger and scheduler level for the following time periods and granularities:
Period | Granularity |
---|---|
Day | Hourly |
Week | Daily |
Month | Daily |
Quarter | Monthly |
Year | Monthly |
This feature is available only in the QuartzDesk Enterprise edition.
Execution Notification Rules provide a very effective way of monitoring job executions following the Hollywood principle. Whenever a job gets executed by any of the managed Quartz schedulers, all associated notification rules are evaluated. If the notification rule condition evaluates to true, a configured message is enqueued for delivery through the selected message delivery channel and sent to the specified list of recipients.
QuartzDesk execution notification rules keep you informed about all non-standard job execution-related issues before they turn into a problem that impacts your business and customers.
QuartzDesk supports the following notification rule condition types:
Condition Type | Usage |
---|---|
Execution Status | Suitable for simple notifications based on the job execution status (Success, Veto, Error). |
Max Duration | Suitable for monitoring of job executions exceeding the specified number of milliseconds. |
Expression | The most powerful type of all execution conditions that uses an arbitrary JavaScript expression. This condition can be used to implement any notification logic. Besides standard JavaScript objects, you can use more than 70 scripting objects exposed by the QuartzDesk runtime. Please note that the list of available scripting objects includes the textual representation of the job execution log that can be easily parsed and analyzed. |
The following table presents examples of some of the typical JavaScript expressions that can be used in notification rules.
Expression | Description |
---|---|
true | Always notify. |
execHistory.jobName == 'MyJob' | Notify of all 'MyJob' job executions. |
execHistory.duration > 5000 | Notify of all job executions exceeding 5 seconds. |
execHistory.execStatus == 'ERROR' | Notify of all job execution failures. |
precedingExecHistory != null | Notify of a job execution status change. |
( precedingExecHistory == null || precedingExecHistory.execStatus == 'SUCCESS' ) | Notify of a job execution status change SUCCESS->ERROR (first error notification). |
( precedingExecHistory != null && precedingExecHistory.execStatus == 'ERROR' ) | Notify of a job execution status change ERROR->SUCCESS (recovery notification). |
execHistory.log != null && execHistory.log.match( /Some Text/ ) != null | Notify of the 'Some Text' text appearing in the intercepted job execution log. |
function isSuccess( result ) { log.info( 'Job exec result is: ' + result ); return result == '0'; } isSuccess( execHistory.result ); | Notify of the '0' job execution result set by the executed job. Please note the use of a JavaScript function. Functions can improve readability and logic reuse when called from cycles, other functions etc. Please note the use of a log statement. Log statements help debug created JavaScript expressions. Their output is available in the QuartzDesk JVM Agent log. |
Each notification rule defines a message that is enqueued and delivered to the defined recipients. When composing a notification message you can make use of more than 50 available message subject and body macros that get automatically expanded before the message is enqueued and delivered. Some notification channels allow for adding message attachments. The following message attachments can be added:
In the QuartzDesk GUI, it is possible for individual notification rules to view the history of enqueued notification messages with their delivery status. You can also display the message body and attachments.
Notification rules can be defined at the job, trigger and scheduler level.
This feature is available only in the QuartzDesk Enterprise edition.
A message channel profile is a configuration object that describes message delivery channel type and properties. For instance, an email message channel profile defines the sender email address, SMTP server host, SMTP server port and optional SMTP server authentication credentials. Message channel profiles are used by notification rules described in the preceding section to deliver notification messages. QuartzDesk currently supports the following message delivery channels (message channel profile types):
QuartzDesk Web Application provides a trivial test implementation of the MessageReceiverService endpoint at the following URL:
http(s)://<host>:<port>/<context>/services/msgrecv/<version>/MessageReceiverService
where:
This feature is available only in the QuartzDesk Enterprise edition.
QuartzDesk exposes a REST API to monitor individual managed schedulers, jobs and triggers. This API is primarily intended to be integrated into system / network monitoring solutions, such as Nagios, Cacti, etc. that provide URL monitoring capabilities.
The monitoring REST API is available at the following URLs.
Scheduler Monitoring
http(s)://<host>:<port>/<context>/monitor/quartz/scheduler/<scheduler_id>
Job Monitoring
http(s)://<host>:<port>/<context>/monitor/quartz/job/<scheduler_id>/<job_group_name>/<job_name>
Trigger Monitoring
http(s)://<host>:<port>/<context>/monitor/quartz/trigger/<scheduler_id>/<trigger_group_name>/<trigger_name>
where:
The monitoring URLs are shown in the QuartzDesk GUI from which they can be easily copied. The screenshot gallery below shows where these URLs are available in the application and the results that individual monitoring URLs return.
For these reasons, we recommend using this monitoring API primarily for scheduler monitoring where the expected frequency of state changes is typically very low, or for monitoring of jobs / triggers with low execution frequency (e.g. jobs executed few times a day). For all other use-cases, we strongly recommend using the Notification Rules that offer a robust, flexible and reliable job execution monitoring framework.
The scheduler, job, and trigger monitoring operations are also exposed through the Quartz Web Service described further below in this document.
This feature is available only in the QuartzDesk Standard and Enterprise editions.
QuartzDesk intercepts all actions performed by authenticated users in the QuartzDesk GUI as well as actions executed through QuartzDesk JAX-WS web-services. The history and details of these actions can be accessed in Audit Trail grids in the QuartzDesk GUI. This enables you to see who modified a particular Quartz / QuartzDesk objects such as a job, trigger, job chain etc. You can see who manually triggered a particular job, who interrupted an executing job etc.
There is a maintenance task that automatically purges audit trail entry records that are older than the configured number of days (default setting is 90 days). The configuration of this task can be accessed in Settings & Tools > Application Settings in the Quartzdesk GUI.
This feature is available only in the QuartzDesk Standard and Enterprise editions.
The Connection Web Service is a SOAP-based JAX-WS compliant web-service that exposes operations that allow you to manipulate registered scheduler connections and folders accessible through the Connections panel in the QuartzDesk GUI. The Connection Web Service is provided by the QuartzDesk Web Application at the following endpoint URL:
http(s)://<host>:<port>/<context>/services/connection/<version>/ConnectionService
where:
The WSDL of the Connection Web Service for the latest QuartzDesk release can be obtained here.
This feature is available in all QuartzDesk editions.
The Message Channel Profile Web Service is a SOAP-based JAX-WS compliant web-service that exposes operations that allow you to manipulate message channel profiles and folders accessible in the Settings > Message Channel Profiles window in the QuartzDesk GUI. The Message Channel Profile Web Service is provided by the QuartzDesk Web Application at the following endpoint URL:
http(s)://<host>:<port>/<context>/services/msg_channel_profile/<version>/MessageChannelProfileService
where:
The WSDL of the Message Channel Profile Web Service for the latest QuartzDesk release can be obtained here.
This feature is available only in the QuartzDesk Enterprise edition.
The Security Web Service is a SOAP-based JAX-WS compliant web-service that exposes operations that allow you to manipulate QuartzDesk GUI users and groups as well as their access permissions. The Security Web Service is provided by the QuartzDesk Web Application at the following endpoint URL:
http(s)://<host>:<port>/<context>/services/security/<version>/SecurityService
where:
The WSDL of the Security Web Service for the latest QuartzDesk release can be obtained here.
This feature is available in all QuartzDesk editions.
The Quartz Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can perform all common scheduler, job and trigger operations on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:
http(s)://<host>:<port>/<context>/services/quartz/<version>/QuartzService
where:
The WSDL of the Quartz Web Service for the latest QuartzDesk release can be obtained here.
This feature is available only in the QuartzDesk Enterprise edition.
The Quartz Exec History Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can access job and trigger execution history on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:
http(s)://<host>:<port>/<context>/services/quartz_exec_history/<version>/QuartzExecHistoryService
where:
The WSDL of the Quartz Exec History Web Service for the latest QuartzDesk release can be obtained here.
This feature is available only in the QuartzDesk Enterprise edition.
The Quartz Exec Notification Rule Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can manage execution notification rules on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:
http(s)://<host>:<port>/<context>/services/quartz_exec_notif_rule/<version>/QuartzExecNotificationRuleService
where:
The WSDL of the Quartz Exec Notification Rule Service for the latest QuartzDesk release can be obtained here.
This feature is available only in the QuartzDesk Enterprise edition.
The Quartz Job Chain Web Service is a SOAP-based JAX-WS compliant web-service that works as a single endpoint interface through which you can manage job chains on all managed Quartz schedulers. This web-service is provided by the QuartzDesk Web Application at the following endpoint URL:
http(s)://<host>:<port>/<context>/services/quartz_job_chain/<version>/QuartzJobChainService
where:
The WSDL of the Quartz Job Chain Web Service for the latest QuartzDesk release can be obtained here.
This feature is available only in the QuartzDesk Enterprise edition.
You can override the default login screen background image by copying your custom background image to customization/images/background/background.jpg file in the configured QuartzDesk Web Application work directory. The recommended dimensions of the custom background image are 2000 x 1152 px. The image format must be JPG.
This feature is available in all QuartzDesk editions.
You can add up to 3 custom images in the top panel of the QuartzDesk GUI. These images can, for example, contain your company or customer logos etc. Some of our customers use the custom images to help them visually distinguish between multiple QuartzDesk Web Application installations running in different environments (e.g. dev, test, prod etc.).
The dimensions of the custom logos must be 300 x 40 px and their format must be PNG.
The custom logo file names for the left, center and right logos must be logo-top-left.png, logo-top-center.png and logo-top-right.png respectively. The files must be copied to the customization/images directory in the configured QuartzDesk Web Application work directory.
This feature is available in all QuartzDesk editions.
You can define custom tabs and links in the Navigation panel of the QuartzDesk GUI. These tabs and links can, for example, point to external applications that provide custom views and functionality.
Custom navigation tabs and links are defined in an XML file named navigation-panel.xml in the customization directory inside the configured QuartzDesk Web Application work directory.
When a user clicks a custom link in the Navigation panel, a security token parameter (st) is passed to the configured target URL. The target application can use the QuartzDesk Public API's com.quartzdesk.api.web.security.SecurityTokenUtils.decrypt method to decrypt the security token and obtain the username of the currently logged in QuartzDesk user. The decrypt method expects the following two parameters:
Please note the security token is valid only for 60 seconds. If you attempt to decrypt an older security token, the QuartzDesk Public API will throw an exception.
This feature is available in all QuartzDesk editions.
The OEM Customization Framework is a simple to use, yet powerful framework provided by the QuartzDesk Web Application component. It allows our OEM partners to externalize changes they make to the QuartzDesk Web Application component. The changes typically include modifications to localized resources (i18n*.properties files), icons/logos (*.png files), CSS stylesheets (*.css files) and JavaScript resources (*.js files).
The OEM partner prepares their changes inside the ${quartzdesk-web.work.dir}/oem directory, where ${quartzdesk-web.work.dir} refers to the configured QuartzDesk Web Application work directory. Once the changes have been finalized, the OEM partner moves the contents of the ${quartzdesk.work.dir}/oem directory to the oem directory in the root of the quartzdesk-web-.x.y.z.war file. This modified WAR file is then ready to be distributed to the end users.
The OEM Customization Framework completely eliminates QuartzDesk Web Application redeploys and servlet container / application server restarts during the development phase on the OEM partner's side because all changes are automatically applied upon reloading the QuartzDesk Web Application browser window. Therefore the framework greatly reduces the development time to implement and test the OEM partner specific changes.
The OEM Customization Framework is enabled by a special type of a license key (OEM license key) that cannot be downloaded on our website. OEM license keys are provided upon request only. If you are interested in QuartzDesk OEM partnership, please contact us at This email address is being protected from spambots. You need JavaScript enabled to view it..
This feature is available only in the QuartzDesk Standard and Enterprise edition and it requires an OEM license key.