Inspirado por la falta de búsqueda y agrupación, Hangfire.tags proporciona una forma de buscar y agrupar diferentes trabajos.
En el startup.cs de .NET Core:
public void ConfigureServices ( IServiceCollection services )
{
services . AddHangfire ( config =>
{
config . UseSqlServerStorage ( " connectionSting " ) ;
// config.UseTagsWithPostgreSql();
// config.UseTagsWithMySql();
// config.UseTagsWithRedis();
config . UseTagsWithSql ( ) ;
} ) ;
}De lo contrario,
GlobalConfiguration . Configuration
. UseSqlServerStorage ( " connectionSting " )
//.UseTagsWithPostgreSql()
//.UseTagsWithMySql()
//.UseTagsWithRedis();
. UseTagsWithSql ( ) ; Nota : Si tiene panel de control y servidor que se ejecuta por separado, deberá llamar UseTags() , UseTagsWithSql() , UseTagsWithPostgreSql() , UseTagsWithMySql() o UseTagsWithRedis() en ambos.
Si tiene un esquema personalizado en su base de datos, deberá pasar sus opciones SQL a su método de almacenamiento. Por ejemplo:
var tagsOptions = new TagsOptions ( ) { TagsListStyle = TagsListStyle . Dropdown } ;
var hangfireSqlOptions = new SqlServerStorageOptions
{
SchemaName = " MyCustomHangFireSchema " ,
} ;
services . AddHangfire ( hangfireConfig => hangfireConfig
. SetDataCompatibilityLevel ( CompatibilityLevel . Version_180 )
. UseColouredConsoleLogProvider ( )
. UseSimpleAssemblyNameTypeSerializer ( )
. UseRecommendedSerializerSettings ( )
. UseSqlServerStorage ( " dbConnection " , hangfireSqlOptions )
. UseTagsWithSql ( tagsOptions , hangfireSqlOptions )
) ; Como de costumbre, puede proporcionar opciones adicionales para el método UseTags() .
Esto es lo que puede configurar:
Nota : Después de agregar inicialmente hangfire.TAGS (o cambiar las opciones anteriores), es posible que deba borrar el caché del navegador, como el navegador puede almacenar en caché el CSS/JS generado.
Para limpiar adecuadamente las etiquetas para trabajos caducados, se requiere una extensión para los proveedores de almacenamiento predeterminados. En este momento, hay tres proveedores: para SQL Server, para PostgreSQL y para MySQL.
Hangfire.tags proporciona métodos de extensión en el objeto PerformContext , por lo tanto, deberá agregarlo como argumento de trabajo.
Nota : Al igual que IJobCancellationToken , PerformContext es un tipo de argumento especial que Hangfire lo sustituirá automáticamente. Debe pasar null al enqueizar un trabajo.
Ahora puede agregar una etiqueta:
public void TaskMethod ( PerformContext context )
{
context . AddTags ( " Hello, world! " ) ;
}que resulta en la etiqueta Hello-World.
También puede agregar etiquetas usando atributos, ya sea en la clase o en el método (¡o ambos!)
[ Tag ( " TaskMethod " ) ]
public void TaskMethod ( PerformContext context )
{
....
} En el tablero, al hacer clic en trabajos, verá un nuevo elemento de menú, llamado etiquetas. Por defecto, esta página le mostrará todas las etiquetas definidas en el sistema. Haga clic en una etiqueta mostrará una lista de todos los trabajos con esa etiqueta adjunta.
La vista predeterminada para mostrar las etiquetas es una llamada TagCloud. Si prefiere una lista desplegable AutoComplete, puede especificar que utilizando las opciones:
var options = new TagsOptions ( )
{
TagsListStyle = TagsListStyle . Dropdown
} ;
config . UseTagsWithSql ( options ) ;El resultado se verá así:
Copyright (c) 2018 2face-it bv
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "software"), para tratar el software sin restricción, incluidos los derechos de los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicensa y/o vender copias del software, y para permitir que las personas a quienes se les proporciona el software para que lo haga, sujeto a las siguientes condiciones: las siguientes condiciones: las siguientes condiciones: las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otra responsabilidad, ya sea en una acción de contrato, agravio o de otra manera, que surge, de o en relación con el software o el uso u otros tratos en el software.