Como os Manipuladores de trabalho são carregados

A seguir encontra-se uma descrição de como o processador de trabalhos cargas de tratamento de trabalho (Autodesk de terceiros e de) na inicialização:

  1. Carregar todos os Manipuladores de trabalho de terceiros na pasta Extensão
  2. Ler as informações de configuração do Manipulador de trabalho.
  3. Carregar Manipuladores de trabalho do Autodesk.
  4. Associe os Tipos de trabalho com os Manipuladores de trabalho e verifique se cada Manipulador de trabalho está ativado.
  2012 2013 2014
Autodesk Vault Basic    
Autodesk Vault Workgroup
Autodesk Vault Collaboration
Autodesk Vault Professional

Extensões de Manipulador de trabalho de terceiros

Cada extensão de terceiro deve existir em sua própria pasta no diretório Extensão:

%allusersprofile%\Autodesk\Vault 2012\Extensions\

Então, por exemplo, uma extensão de identificador de trabalhos chamada "JobHandlerSample" pode residir no diretório %allusersprofile%\Autodesk\Vault 2013\Extensions\JobHandlerSample.

Para cada pasta no diretório de extensão, o processador de trabalhos procura um arquivo de configuração.O arquivo de configuração é um arquivo de texto simples que pode possuir qualquer nome, mas deve terminar com a extensão .vcet.config.Se o arquivo de configuração não existir, haverá falha no carregamento da extensão.  Aqui está o conteúdo de um arquivo de configuração de amostra, JobHandlerSample.vcet.config:

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

O elemento montagem especifica o nome da extensão dll.Portanto, na amostra acima, a extensão dll é denominada JobHandlerSample.dll.O tipo de extensão de processador de trabalhos indica que esta é uma extensão do processador de trabalhos (outros tipos de extensão também pode Live no diretório: WebService e VaultClient).

A montagem da extensão (em nossa amostra, JobHandlerSample.dll) é carregada.No carregamento, as seguintes verificações são executadas:

  1. As referências da montagem dll são verificadas para garantir que não sejam vinculadas a qualquer um dos dlls do Vault (cujos nomes são iniciados por "Conectividade").Se uma montagem de extensão estiver vinculada com um desses dlls (direta ou indiretamente), ela irá falhar.
  2. A montagem é verificada com relação a um único tipo exportado que implementa a interface IJobHandler.Em nosso exemplo, JobHandlerSample, dentro do projeto de montagem, é possível ter a classe C# a seguir para implementar a 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;
               }
          }
    }         

    Deve haver exatamente um tipo público na montagem que implemente IJobHandler.Se isso não ocorrer, haverá falha no carregamento da extensão.Uma instância desse tipo é instanciada.

  3. A montagem é verificada com relação a determinados atributos de montagem obrigatórios. Especialmente,
    1. ApiVersion: um atributo do tipo Autodesk.Connectivity.Extensibility.Framework.ApiVersionAttribute que especifica a versão da API para a qual essa extensão foi escrita.  Se a versão não coincide com a versão atual da API do Vault, o carregamento da extensão irá falhar.
    2. Empresa, descrição, Nome do produto: os atributos do espaço System.Reflection de tipos AssemblyCompanyAttribute, AssemblyDescriptionAttribute, AssemblyProductAttribute são necessárias e não deve estar vazio seqüência de caracteres.Se não houver ou estiver vazio, haverá falha no carregamento da extensão.
    3. ExtensionId : um atributo do tipo Autodesk.Connectivity.Extensibility.Framework.ExtensionIdAttribute que especifica um ID exclusivo como uma sequência de caracteres (em forma de Guia).Se este atributo não existir ou estiver vazio, haverá falha no carregamento da extensão.

Configuração do Manipulador de trabalho.

O arquivo de configuração do Manipulador de trabalho é um arquivo XML que contém as informações de configuração para o Processador de trabalho.  Ela está localizada no mesmo diretório que JobProcessor.exe (geralmente C:\Arquivos de Programas\Autodesk\Vault Professional [ano]\Explorer) e se chama JobProcessor.exe.config.A seção apropriada para a configuração dos manipuladores de trabalho está em configuration\connectivityexplorer\jobhandlers.Nesta seção XML, cada elemento dojobHandler representa um Manipulador de trabalho.Os elementos XML do jobHandler são da seguinte forma:

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

Em que local:

  1. A Classe representa o Tipo de trabalho.Quando um trabalho é adicionado à fila do Servidor de trabalho, o Tipo de trabalho é especificado e a sequência de caracteres exclusiva é utilizada para determinar o Manipulador de trabalho que irá processar o trabalho.
  2. O Manipulador representa o nome do tipo de montagem que implementa o IJobHandler.Isto pode ser especificado de diversas formas.É necessário especificar uma sequência de caracteres que, quando passada para System.Type.GetType(string) (consulte http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx) irá retornar o tipo do objeto na montagem que implementa o IJobHandler.

Portanto, um elemento jobHandler válido para nossa extensão de amostra seria:

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

No arquivo processador de trabalhos.exe.config, você irá notar que já existe uma jobHandler entrada para cada uma das tarefas do Autodesk interna de manipuladores.Os Manipuladores de trabalho integrados são carregados somente se houver uma entrada jobHandler existente para eles.O manipulador de trabalho internos DLLs estão localizado no mesmo diretório que o processador de trabalhos.exe.

Verificar se os Manipuladores de trabalho estão ativados

As informações de configuração acima são utilizadas para associar um Tipo de trabalho a um determinado Manipulador de trabalho.Uma vez que é concluído, cada Manipulador de trabalho é questionado com relação à capacidade de processamento do Tipo de trabalho específico.O Manipulador de trabalho responde essa pergunta implementando o método da interface IJobHandler.CanProcess.Nessa etapa, o Manipulador de trabalho deve verificar se tem tudo precisa para processar esse tipo de Trabalho (por exemplo, alguns dos manipuladores de trabalho da criação de dwf verificam se o Inventor está instalado). 

Quando você verifica quais Tipos de trabalho estão sendo processados por um Processador de trabalho (usando o menu Gerenciamento-> Tipos de tarefas...), cada entrada relacionada significa que um Manipulador de trabalho para o Tipo de trabalho foi carregado com sucesso.Se a entrada for selecionada, indica que o Manipulador de trabalho está ativado (isto é, ele retorna "verdadeiro" de sua implementação de IJobHandler.CanProcess).Para ter o processador de trabalhos re-ask um trabalho. Se "pode processar", o usuário precisa Sair do processador de trabalhos e começar de novo.

Uma vez que todos os manipuladores de trabalho ter sido carregado e consultar o processador de trabalhos já está pronto para começar a extração da fila de tarefas de processamento e.

Manipulador de trabalho de amostra

Anexado (abaixo) é uma amostra de manipulador de trabalho gravados em C#.Não tem uma utilidade (exibe caixas de diálogo pop-up quando os métodos CanProcess e Execute são usados), mas pode ser utilizado como um modelo para criar Manipuladores de trabalho.