VOOZH about

URL: https://www.nuget.org/packages/Hangfire.Community.JobsLauncher.Dashboard/

⇱ NuGet Gallery | Hangfire.Community.JobsLauncher.Dashboard 2.0.2




Hangfire.Community.JobsLauncher.Dashboard 2.0.2

dotnet add package Hangfire.Community.JobsLauncher.Dashboard --version 2.0.2
 
 
NuGet\Install-Package Hangfire.Community.JobsLauncher.Dashboard -Version 2.0.2
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Hangfire.Community.JobsLauncher.Dashboard" Version="2.0.2" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Hangfire.Community.JobsLauncher.Dashboard" Version="2.0.2" />
 
Directory.Packages.props
<PackageReference Include="Hangfire.Community.JobsLauncher.Dashboard" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Hangfire.Community.JobsLauncher.Dashboard --version 2.0.2
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Hangfire.Community.JobsLauncher.Dashboard, 2.0.2"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Hangfire.Community.JobsLauncher.Dashboard@2.0.2
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Hangfire.Community.JobsLauncher.Dashboard&version=2.0.2
 
Install as a Cake Addin
#tool nuget:?package=Hangfire.Community.JobsLauncher.Dashboard&version=2.0.2
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Hangfire.Community.JobsLauncher.Dashboard

A Hangfire Dashboard extension that fills the gap between scheduled automation and ad‑hoc operations. It was born from the need to launch jobs on demand without redeploying and to keep a permanent, searchable audit trail of those manual interventions.


✨ Highlights

Area What you can do
Assisted Launch Discover classes, methods and parameters via reflection if the business assembly is loaded in the dashboard.
Manual Launch Type the class name, method and a JSON payload – no business dependencies required on the dashboard side.
Execution Modes Fire & Forget, Schedule (delay or UTC date), Recurring (with Cron expression) and Continuation.
Recurring Engines Built‑in (lightweight, uses the dispatcher) or DynamicJobs – selectable directly from the UI.
Smart Parameter Editor Native inputs for simple types; JSON editor for complex types (lists, dictionaries, objects, enums, nullables).
Cron Generator Visual builder with minute / hour / day / month / weekday tabs, preview of next executions and human‑readable description.
Reusable Templates Save any job configuration as a named template, load it later, or export/import as JSON files.
History with Pagination Browse recent launches with full pagination, relaunch, clone‑and‑launch or save as template.
Immutable Audit Log Optional, read‑only log of every launch, independent of the volatile history. Support for filtering by user, date range and pagination.
Critical Queues Warns the user when targeting a production queue and asks for explicit confirmation.
Live Preview & Shortcuts See a summary of the job before launching and use Ctrl+Enter to fire.
Decoupled Execution The dashboard never references your business classes directly; a lightweight JobLauncherDispatcher is enqueued and resolves the real type at runtime on the worker.

🔧 Recent Enhancements

  • Scalable storage: history and audit log are stored in Hangfire’s native List data structure, permitting efficient trimming and pagination without ever loading the entire collection when using a supported storage (SQL Server, Redis, etc.).
  • Pagination on both history and audit tabs, with configurable page size and prev/next navigation.
  • Audit filters: search by user, UTC date range and page size; dates are parsed once for performance.
  • Recurring engine per launch: in assisted mode you can choose Direct, Built‑In or DynamicJobs; in manual mode Built‑In or DynamicJobs. The backend automatically builds the correct expression or dynamic job.
  • Queue awareness: all non‑recurring jobs are now enqueued to the chosen queue using the BackgroundJobClient.
  • Multiple bug fixes and robustness improvements across the launcher, history and audit APIs.

📸 Screenshots

Launch Tab (Assisted & Manual)

👁 1

👁 2

👁 3

👁 4

👁 5

👁 6

👁 7

👁 8

👁 9

👁 91

👁 92

History & Templates

👁 93

👁 94

📦 Requirements

  • Hangfire 1.8.0 or later
  • .NET Standard 2.0 (compatible with .NET Core 2.1+ and .NET Framework 4.6.1+)
  • Common library Hangfire.Community.JobsLauncher.Common (required only on workers if manual mode is going to be used)
  • Bootstrap 3 and jQuery (already included in the Hangfire dashboard)
  • [Optional] Hangfire.DynamicJobs if you want to use the advanced recurring engine

📥 Installation

1. Dashboard

Add the NuGet package to the project where you configure the dashboard:

dotnet add package Hangfire.Community.JobsLauncher.Dashboard

2. Workers (only if you launch jobs in manual mode)

Install the common library in the worker projects that will execute manually launched jobs:

dotnet add package Hangfire.Community.JobsLauncher.Common

During worker startup, add this line to avoid "unused package" warnings and clearly document the intent:

Hangfire.Community.JobsLauncher.Common.JobLauncherDispatcher.EnableDynamicJobSupport();

Workers do not need the common library if you only use assisted mode (with assemblies available) or never run manual jobs.


⚙️ Configuration

In the method where you set up Hangfire (e.g., Startup.cs), add:

GlobalConfiguration.Configuration.UseJobLauncher(new JobLauncherOptions
{
 CriticalQueues = new List<string> { "production", "critical" },
 HistoryMaxEntries = 50,
 EnableAuditLog = true,
 InheritTheme = true
});

Setup for ASP.NET Core

using Hangfire;
using Hangfire.Community.JobsLauncher.Dashboard;

namespace Application
{
 public class Startup
 {
 public void ConfigureServices(IServiceCollection services)
 {
 services.AddHangfire(configuration =>
 {
 configuration
 .UseMemoryStorage() // or your storage
 .UseJobLauncher(); // Add the Jobs launcher page
 });

 services.AddHangfireServer();
 }
 }
}

Setup for ASP.NET (.NET Framework)

using Hangfire;
using Hangfire.Community.JobsLauncher.Dashboard;

namespace Application
{
 public class Startup
 {
 public void Configuration(IAppBuilder app)
 {
 GlobalConfiguration.Configuration
 .UseJobLauncher(); // Add the Jobs launcher page

 app.UseHangfireDashboard();
 }
 }
}

Register the dashboard in your application:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
 // ... your authorization configuration, etc.
});

The plugin automatically appears as a new "Job Launcher" tab in the navigation menu.


🚀 Usage

Launch Tab

  1. Assisted mode (requires the class to be available in the AppDomain):

    • Enter the full class name (Namespace.ClassName) and click Load Methods.
    • Pick a method from the list.
    • Fill in the parameters: suitable inputs are generated for simple types (numbers, dates, text), and a JSON editor for complex types.
    • Choose the execution mode: Fire & Forget, Schedule, Recurring, Continuation.
    • Specify the queue (with autocomplete from known queues).
    • Optionally, check PerformContext or CancellationToken.
    • Click Launch Job. If the queue is critical, an additional confirmation will be required.
  2. Manual mode (without access to the assembly):

    • Manually enter the class name, method, and a JSON payload.
    • Validate and format the JSON using the provided buttons.
    • The rest of the process is identical to assisted mode.
    • For recurring jobs, a dropdown lets you choose between the Built‑in engine (lightweight) and DynamicJobs (if installed).

History Tab

  • Shows the last launches (up to HistoryMaxEntries).
  • Each entry offers:
    • Relaunch: loads the job parameters into the Launch form.
    • Clone & Launch: creates and enqueues an identical copy without modifying the form.
  • The Clear history button deletes the volatile history (it does not affect the audit log).

Templates Tab

  • Save the current form configuration as a named template.
  • Load a template to prefill the form.
  • Delete templates you no longer need.
  • Export a single template as a JSON file.
  • Import a template from a JSON file (prompting if the name already exists).

🧱 Internal Architecture

Project Description
Hangfire.Community.JobsLauncher.Dashboard Dashboard plugin (APIs, Razor page)
Hangfire.Community.JobsLauncher.Common Shared library containing JobLauncherDispatcher

Execution duality

  • If the business class is available in the dashboard, a DirectJobInvoker enqueues the job directly with real types (no dispatcher involved). The worker only needs the business assembly.
  • If the class is not available, JobLauncherDispatcher.ExecuteJob(...) is used, receiving the class name, method, and serialized parameters as JSON. The dispatcher performs the reflection on the worker. The worker requires the common library.

🔒 Security

  • Critical queues can be configured to require explicit confirmation before a job is launched.
  • The dashboard inherits the authorization configured in DashboardOptions.
  • Optionally, assisted mode type discovery can be restricted to allowed assembly prefixes.

📄 License

This project is distributed under the MIT License. See the file for details.


🤝 Contributing

All contributions are welcome. Please open an issue or pull request in the official repository.

Product Versions Compatible and additional computed target framework versions.
.NET net5.0 net5.0 was computed.  net5.0-windows net5.0-windows was computed.  net6.0 net6.0 was computed.  net6.0-android net6.0-android was computed.  net6.0-ios net6.0-ios was computed.  net6.0-maccatalyst net6.0-maccatalyst was computed.  net6.0-macos net6.0-macos was computed.  net6.0-tvos net6.0-tvos was computed.  net6.0-windows net6.0-windows was computed.  net7.0 net7.0 was computed.  net7.0-android net7.0-android was computed.  net7.0-ios net7.0-ios was computed.  net7.0-maccatalyst net7.0-maccatalyst was computed.  net7.0-macos net7.0-macos was computed.  net7.0-tvos net7.0-tvos was computed.  net7.0-windows net7.0-windows was computed.  net8.0 net8.0 was computed.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 was computed.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 was computed.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
.NET Core netcoreapp2.0 netcoreapp2.0 was computed.  netcoreapp2.1 netcoreapp2.1 was computed.  netcoreapp2.2 netcoreapp2.2 was computed.  netcoreapp3.0 netcoreapp3.0 was computed.  netcoreapp3.1 netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 netstandard2.0 is compatible.  netstandard2.1 netstandard2.1 was computed. 
.NET Framework net461 net461 was computed.  net462 net462 was computed.  net463 net463 was computed.  net47 net47 was computed.  net471 net471 was computed.  net472 net472 was computed.  net48 net48 was computed.  net481 net481 was computed. 
MonoAndroid monoandroid monoandroid was computed. 
MonoMac monomac monomac was computed. 
MonoTouch monotouch monotouch was computed. 
Tizen tizen40 tizen40 was computed.  tizen60 tizen60 was computed. 
Xamarin.iOS xamarinios xamarinios was computed. 
Xamarin.Mac xamarinmac xamarinmac was computed. 
Xamarin.TVOS xamarintvos xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.2 103 5/19/2026
2.0.1 101 5/19/2026
1.0.0 145 5/2/2026 1.0.0 is deprecated because it is no longer maintained and has critical bugs.