/CrystalQuartz

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

Primary LanguageC#

Crystal Quartz Panel is a lightweight, completely pluggable module for displaying Quartz.NET scheduler jobs information. This module can be embedded into an existing Web Forms or MVC application by referencing libs and adding a number of rows to a web.config file.

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

#Features#

  • simple and lightweight, could be embedded into existing application;
  • displays basic scheduling information:
    • scheduler state and properties;
    • triggers by jobs and groups;
    • job properties (JobDataMap);
  • ability to perform simple action:
    • pause/resume triggers jobs and groups;
    • start/shutdown a scheduler;
    • execute a job on demand ("Trigger Now").
  • easy integration with a remote scheduler (see examples);

#Getting started#

CrystalQuartzPanel is implemented as an http module that embeds to an existing web-application. Configuration options depends of a kind of used scheduler.

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
    }
}

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

  1. Install CrystalQuartz.Remote NoGet 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>

Checkout a working sample of remote scheduler integration: https://github.com/guryanovev/CrystalQuartz/tree/master/examples/RemoteScheduler

#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.

#Collaboration#

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

#Changelog#

  • March, 2015
    • web part completely rewritten as Single Page Application;
    • migrated to the latest Quartz.NET version.
  • Junuary, 2016
    • ability to set custom styles.