2010-08-17 6 views
0

Ce lien suggère de créer une classe de base abstraite qui peut lire les informations de carte de données d'emploi pour Quartz.net et chacun des emplois découleront de cette classe de base.classe de base abstraite quartz.net

http://quartznet.sourceforge.net/faq.html#howtochainjobs

que quelqu'un peut me fournir un échantillon de cette classe de base parce que je ne suis pas sûr de savoir comment récupérer les détails du travail dans la classe de base puis appeler la méthode Execute sur la classe dérivée?

Pratik

Répondre

0

Création d'une classe de base abstraite est juste une suggestion faite par la documentation Quartz.NET, et ne constitue pas une exigence pour la mise en œuvre Enchaînement des emplois. Essentiellement, ils suggèrent que si vous voulez des emplois de la chaîne: « AJOB » -> « BJob » -> « CJOB », vous feriez quelque chose le long des lignes de celle-ci:

  1. Créer classe abstraite « ChainBaseJob ».

  2. Faites votre classe d'emploi (toutes deux AJOB et BJob sont les types de) hériter de ChainBaseJob.

  3. ChainBaseJob contiendrait une sorte de méthode comme:

    string GetNextJobInChain() 
    

... qui retourne le nom du travail (ce qui signifie le nom du travail Quartz). Il y a une variété de façons de le faire utiliser, mais je suppose que la documentation suggère que vos chèques de TriggerListener à voir (au cours de la méthode de fin de travail) si un travail terminé (disons « AJOB ») hérite de ChainBaseJob. Si c'est le cas, il le lancera et appellera GetNextJobInChain, et utilisera le nom retourné par la méthode pour appeler le planificateur pour l'exécuter à la fin de AJob. Si tout est correctement implémenté, TriggerListener saura exécuter BJob, une fois AJob terminé.

Bonne chance.

+0

Merci beaucoup pour l'explication. Si je fais ce résumé de classe de base, comment puis-je lire la carte de données de travail pour le travail dans la classe de base. La chose est chacun de mon travail à peu près ont le même détail de l'emploi comme l'adresse e-mail, nom d'utilisateur, donc je voudrais lire ces valeurs dans les propriétés de la classe de base, donc je ne dois pas répéter ce code dans chaque classe dérivée. Si j'ai rendu la classe de base non abstraite, je peux appeler le constructeur de la classe de base à partir du constructeur de la classe dérivée et lire les propriétés. Je voudrais apprendre que si la classe de base est abstraite, comment puis-je y parvenir. –

+0

Voici comment je l'ai fait. classe abstraite QuartzJobBase publique: ijob { public int A {get; ensemble; } public void Execute (contexte JobExecutionContext) { JobDataMap dataMap = context.JobDetail.JobDataMap; A = dataMap.GetInt ("a"); ExecuteInternal (contexte); } public abstract void ExecuteInternal (contexte JobExecutionContext);}} Dans la classe dérivée pour chaque tâche, substituer la méthode ExecuteInternal. –

Questions connexes