Cómo se cargan los gestores de tareas

Obtenga información sobre la forma en que el procesador de trabajos carga los gestores de tareas en el inicio.

El procesador de trabajos carga gestores de tareas de Autodesk y de terceros.

  1. Carga de todos los gestores de tareas de terceros desde la carpeta Extension
  2. Lee la información de configuración del gestor de tareas.
  3. Cargue los gestores de tareas de Autodesk.
  4. Asocie los tipos de tareas con los gestores de tareas y compruebe si todos los gestores están activados.

Extensiones de gestores de tareas de terceros

Cada extensión de terceros debe existir en su propia carpeta del directorio de extensiones:

%allusersprofile%\Autodesk\Vault 2016\Extensions\

Por ejemplo, si tenemos una extensión del gestor de tareas denominada "JobHandlerSample", puede residir en el directorio %allusersprofile%\Autodesk\Vault 2016\Extensions\JobHandlerSample.

El procesador de trabajos busca un archivo de configuración para cada carpeta que se encuentra dentro del directorio de extensiones.  El archivo de configuración es un archivo de texto sin formato que puede tener cualquier nombre, pero debe terminar con la extensión .vcet.config.  Si el archivo de configuración no existe, la extensión no se cargará.  Aquí se muestra el contenido de un archivo de configuración de muestra, JobHandlerSample.vcet.config:

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

El artículo de ensamblaje especifica el nombre de la extensión dll.  Así, en el ejemplo anterior, la extensión dll se denomina JobHandlerSample.dll.  El tipo de extensión JobProcessor indica que esta es una extensión del procesador de trabajos (también se pueden encontrar otros tipos de extensión en este directorio: WebService y VaultClient).

El ensamblaje de la extensión (en el ejemplo, JobHandlerSample.dll) ahora está cargado.  Después de la carga, se realizan las siguientes comprobaciones:

  1. Se comprueban las referencias de las dll del ensamblaje para verificar que no están vinculadas con las dll de Vault (aquellas cuyo nombre comienza por "Connectivity").  Si un ensamblaje de la extensión está vinculado a una de estas dll (ya sea de forma directa o indirecta), no se cargará.
  2. Se comprueba el ensamblaje para buscar un único tipo exportado que implemente la interfaz IJobHandler.  En el ejemplo de JobHandlerSample, se podría tener la siguiente clase C# dentro del proyecto del ensamblaje para implementar la interfaz 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;
               }
          }
    }         

    Debe ser exactamente un tipo público del ensamblaje que implemente IJobHandler.  Si no es así, no se cargará la extensión.  Se creará una instancia de este tipo.

  3. Se buscan en el ensamblaje determinados atributos de ensamblaje requeridos. Específicamente,
    1. ApiVersion: atributo de tipo Autodesk.Connectivity.Extensibility.Framework.ApiVersionAttribute que especifica la versión de la API para la que se escribió esta extensión.  Si la versión no coincide con la versión actual de la API de Vault, la extensión no se cargará.
    2. Company, Description, ProductName: atributos del espacio de nombres System.Reflection de los tipos AssemblyCompanyAttribute, AssemblyDescriptionAttribute, AssemblyProductAttribute que son necesarios y no deben ser cadenas vacías.  Si no existe o está vacío, la extensión no se cargará.
    3. ExtensionId: atributo de tipo Autodesk.Connectivity.Extensibility.Framework.ExtensionIdAttribute que especifica un id. único como una cadena (en forma de GUID).  Si este atributo no existe o está vacío, la extensión no se cargará.

Configuración del gestor de tareas

El archivo de configuración del gestor de tareas es un archivo XML que contiene la información de configuración del procesador de trabajos.  Se encuentra en el mismo directorio que JobProcessor.exe (normalmente en C:\Archivos de programa\Autodesk\Vault Professional [año]\Explorer) y se llama JobProcessor.exe.config.  La sección relevante para la configuración de los gestores de tareas se encuentra está en configuration\connectivityExplorer\jobHandlers.  En esta sección de XML, cada elemento jobHandler representa un gestor de tareas.  Los elementos jobHandler de XML tienen el siguiente formato:

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

Donde:

  1. la clase representa el tipo de tarea.  Cuando se añade una tarea a la cola del servidor de tareas, se especifica el tipo de tarea y se utiliza esta cadena exclusiva para decidir el gestor de tareas que procesará esa tarea.
  2. El gestor representa el nombre del tipo dentro del ensamblaje que implementa IJobHandler.  Esto se puede especificar de varias formas.  Debe especificar una cadena que, cuando se transfiere a System.Type.GetType(cadena) (consulte http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx), devolverá el tipo de objeto del ensamblaje que implementa IJobHandler.

Por lo tanto, un elemento jobHandler válido para la extensión de ejemplo sería:

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

En el archivo JobProcessor.exe.config, observará que ya hay una entrada jobHandler para cada gestor de tareas incorporado a Autodesk.  Los gestores de tareas incorporados solo se cargan si hay una entrada jobHandler existente para ellos.  Las DLL del gestor de trabajo incorporado se encuentran en el mismo directorio que JobProcessor.exe.

Compruebe si los gestores de tareas están activados

La información de configuración anterior se utiliza para asociar un tipo de trabajo con un gestor de tareas determinado.  Una vez asociado, se preguntará a cada gestor de tareas si puede procesar su tipo de tarea específico.  El gestor de tareas responde a esta pregunta mediante la implementación del método de interfaz IJobHandler.CanProcess.  Es en este momento que el gestor de tareas debe comprobar si tiene todo lo que necesita para poder procesar tareas de ese tipo (por ejemplo, algunos de los gestores de tareas de creación de DWF comprueban si Inventor está instalado). 

Cuando se comprueban los tipos de tareas que se procesan actualmente a través de un procesador de trabajos (mediante el menú Administración->Tipos de trabajos...), cada entrada de la lista significa que se ha cargado correctamente un gestor de tareas para ese tipo de tarea.  Si la entrada está marcada, indica que el gestor de tareas está activado (es decir, devuelve "true" desde IJobHandler.CanProcess).  Para que el procesador de trabajos vuelva a preguntar a un gestor de tareas si "puede procesar", el usuario debe salir del procesador de trabajos e iniciarlo de nuevo.

Una vez que se han cargado y consultado todos los gestores de tareas, el procesador de trabajos está listo para comenzar a extraer trabajos de la cola y procesarlos.

Ejemplo de gestor de tareas

El SDK de Vault contiene un gestor de tareas de ejemplo, JobProcessorApiSamples.Para obtener más información, haga clic aquí.