Files
SilkierQuartz/index.html
2020-07-12 17:24:48 +08:00

139 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Silkier Quartz by maikebing</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="stylesheets/normalize.css" media="screen">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="stylesheets/github-light.css" media="screen">
</head>
<body>
<section class="page-header">
<h1 class="project-name">Silkier Quartz</h1>
<h2 class="project-tagline"> SilkierQuartz can host jobs using HostService and Provide a web management tools for Quartz !</h2>
<a href="https://github.com/maikebing/SilkierQuartz" class="btn">View on GitHub</a>
<a href="https://github.com/maikebing/SilkierQuartz/zipball/master" class="btn">Download .zip</a>
<a href="https://github.com/maikebing/SilkierQuartz/tarball/master" class="btn">Download .tar.gz</a>
</section>
<section class="main-content">
<p><a href="https://www.nuget.org/packages/SilkierQuartz"><img src="https://img.shields.io/nuget/v/SilkierQuartz.svg" alt="NuGet"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green.svg" alt="License: MIT"></a>
<a href="https://ci.appveyor.com/project/MaiKeBing/silkierquartz"><img src="https://ci.appveyor.com/api/projects/status/0ojmooqvycks11kw?svg=true" alt="Build status"></a>
<img src="https://github.com/maikebing/SilkierQuartz/workflows/.NET%20Core/badge.svg?branch=master" alt=".NET Core"></p>
<p>SilkierQuartz is a new after merging <a href="https://github.com/jlucansky/Quartzmin">Quartzmin</a> and <a href="https://github.com/mukmyash/QuartzHostedService">QuartzHostedService</a>!</p>
<blockquote>
<p><a href="https://www.quartz-scheduler.net">Quartz.NET</a> is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems.</p>
</blockquote>
<blockquote>
<p><a href="https://github.com/jlucansky/Quartzmin">Quartzmin</a> Quartzmin is powerful, easy to use web management tool for Quartz.NET</p>
</blockquote>
<blockquote>
<p><a href="https://github.com/mukmyash/QuartzHostedService">QuartzHostedService</a> QuartzHostedService is easy to host Quartz as service in .Net Core !</p>
</blockquote>
<p>So</p>
<p>SilkierQuartz can be used within your existing application with minimum effort as a Quartz.NET plugin when it automatically creates embedded web server. Or it can be plugged into your existing OWIN-based web application as a middleware.</p>
<p><img src="https://raw.githubusercontent.com/jlucansky/public-assets/master/Quartzmin/demo.gif" alt="Demo"></p>
<p>The goal of this project is to provide convenient tool to utilize most of the functionality that Quartz.NET enables. The biggest challenge was to create a simple yet effective editor of job data map which is heart of Quartz.NET. Every job data map item is strongly typed and SilkierQuartz can be easily extended with a custom editor for your specific type beside standard supported types such as String, Integer, DateTime and so on.</p>
<p>SilkierQuartz was created with <strong>Semantic UI</strong> and <strong>Handlebars.Net</strong> as the template engine.</p>
<h2>
<a id="silkierquartzs-features" class="anchor" href="#silkierquartzs-features" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>SilkierQuartz's Features</h2>
<ul>
<li>automatically discover IJob subclasses with SilkierQuartzAttribute</li>
<li>With QuartzHostedService and more extensions</li>
</ul>
<h2>
<a id="quartzmins-features" class="anchor" href="#quartzmins-features" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Quartzmin's Features</h2>
<ul>
<li>Add, modify jobs and triggers</li>
<li>Add, modify calendars (Annual, Cron, Daily, Holiday, Monthly, Weekly)</li>
<li>Change trigger type to Cron, Simple, Calendar Interval or Daily Time Interval</li>
<li>Set typed job data map values (bool, DateTime, int, float, long, double, decimal, string, byte[])</li>
<li>Create custom type editor for complex type in job data map</li>
<li>Manage scheduler state (standby, shutdown)</li>
<li>Pause and resume job and trigger groups</li>
<li>Pause and resume triggers individually</li>
<li>Pause and resume all triggers for specific job</li>
<li>Trigger specific job immediately</li>
<li>Watch currently executing jobs</li>
<li>Interrupt executing job</li>
<li>See next scheduled dates for Cron</li>
<li>See recent job history, state and error messages</li>
</ul>
<h2>
<a id="install" class="anchor" href="#install" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Install</h2>
<p>SilkierQuartz is available on <a href="https://www.nuget.org/packages/SilkierQuartz">nuget.org</a></p>
<p>To install SilkierQuartz, run the following command in the Package Manager Console</p>
<div class="highlight highlight-source-powershell"><pre>PM<span class="pl-k">&gt;</span> <span class="pl-c1">Install-Package</span> SilkierQuartz</pre></div>
<h2>
<a id="minimum-requirements" class="anchor" href="#minimum-requirements" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Minimum requirements</h2>
<ul>
<li>.NET Core 3.1</li>
</ul>
<h3>
<a id="owin-middleware" class="anchor" href="#owin-middleware" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>OWIN middleware</h3>
<p>Add to your <code>Startup.cs</code> file:</p>
<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">void</span> <span class="pl-en">Configuration</span>(<span class="pl-en">IAppBuilder</span> <span class="pl-smi">app</span>)
{
<span class="pl-smi">app</span>.<span class="pl-en">UseSilkierQuartz</span>(<span class="pl-k">new</span> <span class="pl-en">SilkierQuartzOptions</span>()
{
<span class="pl-smi">Scheduler</span> <span class="pl-k">=</span> <span class="pl-smi">StdSchedulerFactory</span>.<span class="pl-en">GetDefaultScheduler</span>().<span class="pl-smi">Result</span>
});
}</pre></div>
<h3>
<a id="aspnet-core-middleware" class="anchor" href="#aspnet-core-middleware" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ASP.NET Core middleware</h3>
<p>Add to your <code>Program.cs</code> file:</p>
<div class="highlight highlight-source-cs"><pre> <span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">Program</span>
{
<span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">Main</span>(<span class="pl-k">string</span>[] <span class="pl-smi">args</span>)
{
<span class="pl-en">CreateHostBuilder</span>(<span class="pl-smi">args</span>).<span class="pl-en">Build</span>().<span class="pl-en">Run</span>();
}
<span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-en">IHostBuilder</span> <span class="pl-en">CreateHostBuilder</span>(<span class="pl-k">string</span>[] <span class="pl-smi">args</span>) <span class="pl-k">=&gt;</span>
<span class="pl-smi">Host</span>.<span class="pl-en">CreateDefaultBuilder</span>(<span class="pl-smi">args</span>)
.<span class="pl-en">ConfigureWebHostDefaults</span>(<span class="pl-smi">webBuilder</span> <span class="pl-k">=&gt;</span>
{
<span class="pl-smi">webBuilder</span>.<span class="pl-en">UseStartup</span>&lt;<span class="pl-en">Startup</span>&gt;();
})
.<span class="pl-en">ConfigureSilkierQuartzHost</span>();
}
</pre></div>
<p>Add to your <code>Startup.cs</code> file:</p>
<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">void</span> <span class="pl-en">ConfigureServices</span>(<span class="pl-en">IServiceCollection</span> <span class="pl-smi">services</span>)
{
<span class="pl-smi">services</span>.<span class="pl-en">AddSilkierQuartz</span>();
}
<span class="pl-k">public</span> <span class="pl-k">void</span> <span class="pl-en">Configure</span>(<span class="pl-en">IApplicationBuilder</span> <span class="pl-smi">app</span>)
{
<span class="pl-smi">app</span>.<span class="pl-en">UseSilkierQuartz</span>(<span class="pl-k">new</span> <span class="pl-en">SilkierQuartzOptions</span>()
{
<span class="pl-smi">Scheduler</span> <span class="pl-k">=</span> <span class="pl-smi">scheduler</span>,
<span class="pl-smi">VirtualPathRoot</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>/SilkierQuartz<span class="pl-pds">"</span></span>,
<span class="pl-smi">UseLocalTime</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>,
<span class="pl-smi">DefaultDateFormat</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>yyyy-MM-dd<span class="pl-pds">"</span></span>,
<span class="pl-smi">DefaultTimeFormat</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>HH:mm:ss<span class="pl-pds">"</span></span>
});
}</pre></div>
<h2>
<a id="notes" class="anchor" href="#notes" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Notes</h2>
<p>In clustered environment, it make more sense to host SilkierQuartz on single dedicated Quartz.NET node in standby mode and implement own <code>IExecutionHistoryStore</code> depending on database or ORM framework you typically incorporate. Every clustered Quarz.NET node should be configured with <code>ExecutionHistoryPlugin</code> and only dedicated node for management may have <code>SilkierQuartzPlugin</code>.</p>
<h2>
<a id="license" class="anchor" href="#license" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>License</h2>
<p>This project is made available under the MIT license. See <a href="LICENSE">LICENSE</a> for details.</p>
<footer class="site-footer">
<span class="site-footer-owner"><a href="https://github.com/maikebing/SilkierQuartz">Silkier Quartz</a> is maintained by <a href="https://github.com/maikebing">maikebing</a>.</span>
<span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a> by <a href="https://twitter.com/jasonlong">Jason Long</a>.</span>
</footer>
</section>
</body>
</html>