Chargement des gestionnaires de tâches

Découvrez la façon dont l'application Job Processor charge les gestionnaires de tâches au démarrage.

Job Processor charge les gestionnaires de tâches Autodesk et les gestionnaires de tâches tiers.

  1. Charger tous les gestionnaires de tâches à partir du dossier Extension
  2. Consultez les informations relatives à la configuration du gestionnaire de tâches.
  3. Chargez les gestionnaires de tâches d'Autodesk.
  4. Associez les types de tâches aux gestionnaires de tâches et vérifiez si ces derniers sont activés.

Extensions du gestionnaire de tâches de tiers

Chaque extension de tiers doit figurer dans son propre dossier dans le répertoire d'extension :

%allusersprofile%\Autodesk\Vault[année]\Extensions\

Par exemple, si vous avez une extension de gestionnaire de tâches appelée "JobHandlerSample", elle peut se trouver dans le répertoire %allusersprofile%\Autodesk\Vault [année]\Extensions\JobHandlerSample.

Pour chaque dossier du répertoire d'extension, Job Processor recherche un fichier de configuration.  Le fichier de configuration est un simple fichier texte pouvant être nommé à votre convenance, mais qui doit se terminer par l'extension .vcet.config.  Si le fichier de configuration n'existe pas, l'extension ne pourra pas être chargée.  Voici le contenu d'un fichier de configuration d'exemple, JobHandlerSample.vcet.config :

<configuration>
    <connectivity.ExtensionSettings2>
         <assembly>JobHandlerSample</assembly>
         <extensionType>JobProcessor</extensionType>
    </connectivity.ExtensionSettings2>
</configuration>

L'élément d'ensemble indique le nom de l'extension dll.  Ainsi, dans l'exemple ci-dessus, l'extension DLL est nommée JobHandlerSample.dll.  Le type d'extension JobProcessor indique qu'il s'agit d'une extension pour Job Processor (d'autres types d'extension peuvent également figurer dans ce répertoire : WebService et VaultClient).

L'ensemble d'extension (dans notre exemple, JobHandlerSample.dll) est à présent chargé.  Les vérifications suivantes sont effectuées lors du chargement :

  1. Les références de l'ensemble DLL sont vérifiées afin de s'assurer qu'il n'est lié à aucun des fichiers DLL du coffre-fort (ceux dont le nom commence par "Connectivité").  Si un ensemble d'extension est lié à l'un de ces fichiers DLL (de manière directe ou indirecte), il ne sera pas chargé.
  2. L'ensemble est vérifié par rapport à un seul type d'exportation mettant en oeuvre l'interface IJobHandler.  Dans notre exemple JobHandlerSample, au sein de notre projet d'ensemble, nous pouvons disposer de la classe C# pour mettre en oeuvre l'interface IJobHandler :
    namespace JobHandlerSample
    {
        public class JobHandlerSample : IJobHandler
         {
             public bool CanProcess(string strJobType)
              {
                 return strJobType.Equals("jobhandlersample");
              }
    
              public JobOutcome Execute(IJobProcessorServices context, IJob job)
               {
                  return JobOutcome.Success;
               }
          }
    }         

    L'ensemble mettant en oeuvre IJobHandler doit comporter exactement 1 type public.  Si tel n'est pas le cas, l'extension ne pourra pas être chargée.  Une occurrence de ce type est instanciée.

  3. Certains attributs d'ensemble nécessaires sont vérifiés dans l'ensemble. Notamment,
    1. ApiVersion, un attribut de type Autodesk.Connectivity.Extensibility.Framework.ApiVersionAttribute qui indique la version de l'API pour laquelle l'extension a été créée.  Si la version correspond à la version actuelle de l'API Vault, l'extension ne pourra pas être chargée.
    2. Company, Description, ProductName : les attributs de l'espace de nom System.Reflection des types AssemblyCompanyAttribute, AssemblyDescriptionAttribute, AssemblyProductAttribute sont nécessaires et les chaînes ne doivent pas être vides.  S'ils n'existent pas ou s'ils sont vides, l'extension ne pourra pas être chargée.
    3. ExtensionId : un attribut de type Autodesk.Connectivity.Extensibility.Framework.ExtensionIdAttribute qui spécifie un identifiant unique en tant que chaîne (au format GUID).  Si cet attribut n'existe pas ou est vide, l'extension ne pourra pas être chargée.

Configuration du gestionnaire de tâches

Le fichier de configuration du gestionnaire de tâches est un fichier XML contenant des informations sur la configuration de Job Processor.  Il est situé dans le même répertoire que le fichier JobProcessor.exe (généralement C:\Program Files\Autodesk\Vault Professional [année]\Explorer) et s'appelle JobProcessor.exe.config.  La section appropriée pour la configuration des gestionnaires de tâches se trouve sous configuration\connectivityExplorer\jobHandlers.  Dans la section XML, chaque élément jobHandler représente un gestionnaire de tâches.  Les éléments jobHandler XML sont aux formats suivants :

<jobHandler class="jobType" handler="NameOfTypeImplementingIJobHandler"/>

Emplacement :

  1. la classe représente le type de tâche.  Lorsqu'une tâche est ajoutée à la file d'attente du serveur de tâches, le type de tâche est spécifié et cette chaîne unique est utilisée pour décider quel gestionnaire traitera cette tâche.
  2. l'identificateur représente le nom du type au sein de l'ensemble mettant en oeuvre l'interface IJobHandler.  Cela peut être spécifié de différentes manières.  Vous devez spécifier une chaîne qui, une fois transmise à System.Type.GetType(string) (reportez-vous à la rubrique http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx), renvoie le type d'objet dans votre ensemble mettant en oeuvre IJobHandler.

Ainsi, un élément jobHandler correct pour notre exemple d'extension sera :

<jobHandler class="jobhandlersample" handler="JobHandlerSample.JobHandlerSample, JobHandlerSample"/>

Dans le fichier JobProcessor.exe.config, vous remarquerez qu'il existe déjà une entrée jobHandler pour chacun des gestionnaires de tâches intégrés d'Autodesk.  Les gestionnaires de tâches intégrés ne peuvent être chargés que s'ils disposent déjà d'une entrée jobHandler.  Les fichiers DLL du gestionnaire de tâches intégré sont situés dans le même répertoire que le fichier JobProcessor.exe.

Vérifier l'activation des gestionnaires de tâches

Les informations de configuration ci-dessus sont utilisées pour associer un type de tâche à un gestionnaire de tâches particulier.  Une fois la procédure terminée, chaque gestionnaire de tâches est invité à déterminer s'il est en mesure de traiter ce type de tâche spécifique.  Le gestionnaire de tâches répond à cette question en mettant en oeuvre la méthode d'interface IJobHandler.CanProcess.  C'est alors que le gestionnaire de tâches doit vérifier s'il dispose de tous les outils nécessaires pour traiter les tâches de son type (par exemple, certains gestionnaires de tâches de création de fichiers DWF vérifient si Inventor est installé). 

Lorsque vous vérifiez les types de tâches actuellement traités par Job Processor (à l'aide du menu Administration->Types de tâches...), chaque entrée de la liste indique qu'un gestionnaire de tâches pour ce type de tâche a été chargé.  Si l'entrée est activée, cela indique que le gestionnaire de tâches est activé (c'est-à-dire qu'il retourne "vrai" pour la mise en oeuvre de IJobHandler.CanProcess).  Afin que Job Processor redemande au gestionnaire de tâches s'il est en mesure de procéder au traitement, quittez Job Processor puis redémarrez-le.

Une fois les gestionnaires de tâches chargés et interrogés, Job Processor est prêt à retirer les tâches de la file d'attente et à les traiter.

Exemple de gestionnaire de tâches

Le SDK de Vault contient un exemple de gestionnaire de tâches dénommé JobProcessorApiSamples.  Pour plus d’informations, cliquez ici.