Saiba mais sobre como o Job Processor carrega manipuladores de trabalho na inicialização.
O Job Processor carrega tanto manipuladores de trabalho da Autodesk como de terceiros.
Extensões de manipulador de trabalho de terceiros
Cada extensão de terceiro deve existir na própria pasta no diretório de extensões:
%allusersprofile%\Autodesk\Vault[ano]\Extensions\
Desse modo, se, por exemplo, houver uma extensão de manipulador de trabalho chamada "JobHandlerSample", ela poderá residir no diretório%allusersprofile%\Autodesk\Vault [ano]\Extensions\JobHandlerSample.
Para cada pasta no diretório de extensão, o Job Processor overview 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, encontra-se 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 JobProcessor indica que se trata de uma extensão do Job Processor (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:
As referências do dll de montagem são verificadas para garantir que não sejam vinculadas a qualquer um dos dlls do Vault (aqueles com nomes iniciados por "connectivity"). Se uma montagem de extensão estiver vinculada com um desses dlls (direta ou indiretamente), ela irá falhar.
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.
A montagem é verificada com relação a determinados atributos de montagem obrigatórios. Especialmente,
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 Job Processor. Ele está localizado no mesmo diretório que o 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:
Portanto, um elemento jobHandler válido para nosso exemplo de extensão seria:
<jobHandler class="jobhandlersample" handler="JobHandlerSample.JobHandlerSample, JobHandlerSample"/>
No arquivo JobProcessor.exe.config, você perceberá que já existe uma entrada jobHandler para cada manipulador de trabalho integrado da Autodesk. Os Manipuladores de trabalho integrados só são carregados quando há uma entrada jobHandler para eles. As dlls do Manipulador de trabalho integrado estão localizadas no mesmo diretório que o arquivo JobProcessor.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 que precisa para processar esse tipo de trabalho (por exemplo, alguns dos manipuladores de trabalho de criação de dwf devem verificar se o Inventor está instalado).
Quando você verifica quais Tipos de trabalho estão sendo processados por um Job Processor (usando o menu Gerenciamento-> Tipos de trabalho...), 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 que o Job Processor pergunte novamente ao Manipulador de trabalho se "pode processar", o usuário precisa sair do Job Processor e reiniciá-lo.
Depois que todos os manipuladores de trabalho forem carregados e consultados, o Job Processor estará pronto para começar a extrair trabalhos da fila e processá-los.
Exemplo de manipulador de trabalho
O Vault SDK contém o exemplo de manipulador de trabalho JobProcessorApiSamples. Para obter mais informações, clique aqui.