/CrystalQuartz

pluggable UI for Quartz.NET

Primary LanguageC#MIT LicenseMIT

Crystal Quartz Panel is a lightweight, completely pluggable module for displaying Quartz.NET scheduler jobs information.

Build Status Join the chat at https://gitter.im/guryanovev/CrystalQuartz

Features

  • simple and lightweight, could be embedded into existing application:
    • supports OWIN-based web or standalone applications;
    • supports non-OWIN web applications;
  • displays basic scheduler information:
    • scheduler state and properties;
    • triggers by jobs and groups;
    • job properties (JobDataMap);
  • ability to perform basic scheduler actions:
    • pause/resume triggers jobs and groups;
    • start/shutdown a scheduler;
    • delete (unschedule) job;
    • execute a job on demand ("Trigger Now").
  • easy integration with a remote scheduler (see examples);

Getting started

CrystalQuartzPanel is implemented as a module that can be embedded into an existing application. Getting started strategy depends on a kind of environment you use.

Option 1: OWIN

UPDATE 2017: Default panel url for OWIN is /quartz instead of /CrystalQuartsPanel.axd now. It helps to avoid issues with routing and runAllManagedModulesForAllRequests configuration. OWIN-based approach is the preferred way of configuring CrystalQuartz panel now as it allows to setup Simple, Remote or Self-Hosted scenarios in a clean, code-only manner.

Please check complete OWIN setup guide for getting started.

Examples

Option 2: Non-OWIN

Non-owin CrystalQuartzPanel implemented as an http module. It can work in web-applications only and requires some configuration to be added to the web.config file. There are two NuGet packages aimed to help in case of non-owin application, the choice depends on the type of scheduler you use.

Option 2.1: If Quartz Scheduler works in the app domain of your web application:

  1. Install CrystalQuartz.Simple NuGet package.

Install-Package CrystalQuartz.Simple

  1. Customize SimpleSchedulerProvider class that has been added by NuGet package
public class SimpleSchedulerProvider : StdSchedulerProvider
{
    protected override System.Collections.Specialized.NameValueCollection GetSchedulerProperties()
    {
        var properties = base.GetSchedulerProperties();
        // Place custom properties creation here:
        //     properties.Add("test1", "test1value");
        return properties;
    }

    protected override void InitScheduler(IScheduler scheduler)
    {
        // Put jobs creation code here
    }
}
  1. Run you application and go to YOUR_APP_URL/CrystalQuartzPanel.axd

Option 2.2: If Quartz Scheduler works in a separate application (remote scheduler):

  1. Install CrystalQuartz.Remote NuGet package.

Install-Package CrystalQuartz.Remote

  1. Customize url of the remote scheduler in web config file:
<crystalQuartz>
    <provider>
        <add property="Type" 
             value="CrystalQuartz.Core.SchedulerProviders.RemoteSchedulerProvider, CrystalQuartz.Core" />
        <add property="SchedulerHost" 
             value="tcp://localhost:555/QuartzScheduler" /> <!-- Customize URL here -->
    </provider>
</crystalQuartz>
  1. Run you application and go to YOUR_APP_URL/CrystalQuartzPanel.axd

Examples

Custom styles

It is possible to apply some custom css to CrystalQuartz UI. To do so you need:

  1. create a css file somewhere in your web application;
  2. add a reference to this css file in CrystalQuartz config:
<sectionGroup name="crystalQuartz" type="CrystalQuartz.Web.Configuration.CrystalQuartzConfigurationGroup">
  <section 
      name="provider" 
      type="CrystalQuartz.Web.Configuration.ProviderSectionHandler" 
      requirePermission="false" 
      allowDefinition="Everywhere" />
  <!-- options section is required -->
  <section 
      name="options" 
      type="CrystalQuartz.Web.Configuration.CrystalQuartzOptionsSection" 
      requirePermission="false" 
      allowDefinition="Everywhere" />
</sectionGroup>

<!-- ... -->
<crystalQuartz>
  <!-- ... -->
  <options
      customCssUrl="CUSTOM_CSS_URL">
  </options>
</crystalQuartz>

See custom styles example for details.

Building from source

Please use Build.bat script to build the project locally. Rebuilding directly from Visual Studio would not work correctly because some client-side assets should be regenerated. Build.bat is a bootstrapper for Rosalia build tool. Prerquirements:

  • Typescript should be installed on your machine and tsc command should be globally available

Once the build completes successfully, you can Run the VS project as usually.

Collaboration

Please use gitter to ask questions. Fill free to report issues and open pull requests.

Changelog

Latest update:

Added an ability to add triggers for existing Jobs

Add Trigger option in Job dropdown:

Add Trigger form:

See full changelog