W jaki sposób wczytywane są programy obsługi zadań

Dowiedz się więcej na temat sposobu wczytywania przez narzędzie Job Processor programów obsługi zadań przy uruchamianiu.

Narzędzie Job Processor umożliwia wczytywanie programów obsługi zadań firmy Autodesk i innych firm.

  1. Wczytywanie wszystkich programów obsługi zadań podmiotów trzecich z folderu rozszerzeń.
  2. Wczytanie informacji konfiguracyjnych programów obsługi zadań.
  3. Wczytywanie programów obsługi zadań Autodesk.
  4. Skojarzenie typów zadań z programami obsługi zadań i sprawdzenie, czy każdy z tych programów jest włączony.

Rozszerzenia programów obsługi zadań innych firm

Każde rozszerzenie dostarczane przez inną firmę powinno się znajdować we własnym folderze w katalogu rozszerzeń:

%allusersprofile%\Autodesk\Vault[rok]\Extensions\

Gdyby przykładowo istniało rozszerzenie programu obsługi zadań o nazwie „JobHandlerSample”, mogłoby znajdować się w katalogu %allusersprofile%\Autodesk\Vault [rok]\Extensions\JobHandlerSample.

W odniesieniu do każdego folderu w katalogu rozszerzeń Procesor zadań sprawdza, czy istnieje plik konfiguracyjny.  Plik konfiguracyjny jest zwykłym plikiem tekstowym, który może mieć dowolną nazwę, ale musi kończyć się rozszerzeniem .vcet.config.  Jeśli plik konfiguracyjny nie istnieje, rozszerzenia nie da się wczytać.  Oto zawartość przykładowego pliku konfiguracyjnego JobHandlerSample.vcet.config:

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

Element assembly (zespół) określa nazwę pliku dll rozszerzenia.  Dlatego w powyższym przykładzie plik dll rozszerzenia nosi nazwę JobHandlerSample.dll.  Typ rozszerzenia JobProcessor wskazuje, że jest to rozszerzenie dla procesora zadań (w tym katalogu mogą też się znajdować rozszerzenia innych typów: WebService i VaultClient).

Wczytany jest zespół rozszerzenia (w naszym przykładzie jest to JobHandlerSample.dll).  Po wczytaniu przeprowadzone zostają poniższe testy:

  1. Odnośniki pliku dll zespołu zostają sprawdzone, aby zapewnić, że nie ma on łączy kolidujących z żadnym plikiem dll repozytorium (nazwy takich plików zaczynają się ciągiem „Connectivity”).  Jeśli zespół rozszerzenia łączy się z jednym z tych plików dll (bezpośrednio bądź pośrednio), to rozszerzenia nie uda się wczytać.
  2. Zespół jest sprawdzany pod kątem pojedynczego eksportowanego typu, który odpowiada za implementację interfejsu IJobHandler.  W projekcie zespołu w naszym przykładzie z JobHandlerSample mogłaby istnieć następująca klasa C# do implementacji interfejsu 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;
               }
          }
    }         

    Musi istnieć dokładnie jeden typ public w zespole, który implementuje IJobHandler.  W przeciwnym razie rozszerzenia nie uda się wczytać.  Wystąpienie tego typu uzyskuje realizację.

  3. Zespół jest sprawdzany pod kątem pewnych wymaganych atrybutów zespołu. Dokładnie:
    1. ApiVersion:  atrybut typu Autodesk.Connectivity.Extensibility.Framework.ApiVersionAttribute określający wersję API, dla której dane rozszerzenie zostało napisane.  Jeśli wersja nie jest zgodna z bieżącą wersją API programu Vault, rozszerzenia nie uda się wczytać.
    2. Company, Description, ProductName: : Atrybuty z przestrzeni nazw System.Reflection typów AssemblyCompanyAttribute, AssemblyDescriptionAttribute, AssemblyProductAttribute są wymagane i nie mogą być łańcuchami pustymi.  Jeśli te elementy nie istnieją lub są puste, rozszerzenia nie uda się wczytać.
    3. ExtensionId: Atrybut typu Autodesk.Connectivity.Extensibility.Framework.ExtensionIdAttribute określający unikatowy identyfikator w postaci łańcucha (w formie GUID).  Jeśli ten atrybut nie istnieje lub jest pusty, rozszerzenia nie uda się wczytać.

Konfiguracja programu obsługi zadań

Plik konfiguracyjny programu obsługi zadań to plik XML zawierający informacje konfiguracyjne Procesora zadań.  Znajduje się w tym samym katalogu co plik JobProcessor.exe (zazwyczaj C:\Program Files\Autodesk\Vault Professional [rok]\Explorer) i nosi nazwę JobProcessor.exe.config.  Odpowiednia sekcja dotycząca konfiguracji programów obsługi zadań znajduje się poniżej sekcji configuration\connectivityExplorer\jobHandlers.  W tej sekcji pliku xml każdy element jobHandler reprezentuje jeden program obsługi zadań.  Elementy xml jobHandler mają następującą formę:

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

Gdzie:

  1. class reprezentuje typ zadania.  Gdy zadanie zostaje dodane do kolejki serwera zadań, określony zostaje typ zadania i ten unikatowy łańcuch decyduje, który program obsługi zadań będzie przetwarzać dane zadanie.
  2. handler reprezentuje nazwę typu w zespole, który odpowiada za implementację IJobHandler.  Można ją określić na różne sposoby.  Należy określić łańcuch, który po przekazaniu do System.Type.GetType(łańcuch) (zobacz http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx ) zwróci typ obiektu w zespole implementującym IJobHandler.

W rezultacie prawidłowy element jobHandler w przypadku naszego przykładowego rozszerzenia miałby postać:

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

W pliku JobProcessor.exe.config można zauważyć, że istnieje już wpis jobHandler dla każdego wbudowanego programu obsługi programu Autodesk.  Wbudowane programy obsługi zadań zostają wczytane tylko wtedy, gdy istnieje dla nich wpis jobHandler.  Wbudowane pliki dll znajdują się w tym samym katalogu co JobProcessor.exe.

Sprawdź, czy programy obsługi zadań są włączone.

Wyżej wymienione informacje konfiguracyjne służą do kojarzenia typu zadania z określonym programem obsługi zadań.  Po wykonaniu tej czynności poszczególne programy obsługi zadania będą otrzymywać zapytanie o możliwość przetworzenia określonego typu zadania.  Program obsługi zadań odpowiada, implementując metodę interfejsu IJobHandler.CanProcess.  W tym czasie program obsługi zadań powinien sprawdzić, czy dysponuje wszystkimi danymi wymaganymi do przetwarzania zadań danego typu (na przykład niektóre programy obsługi zadań służące do tworzenia pliku dwf sprawdzają, czy jest zainstalowany program Inventor). 

W przypadku sprawdzania, które typy zadań są właśnie przetwarzane przez Procesor zadań (za pomocą menu Administracja -> Typy zadań...), każdy wpis na liście oznacza, że program obsługi zadań dla tego typu zadania został pomyślnie wczytany.  Jeśli dana pozycja jest zaznaczona, oznacza to, że program obsługi zadań jest włączony (czyli że jego implementacja IJobHandler.CanProcess zwróciła wartość „true”).  Aby Procesor zadań ponownie przesłał zapytanie do programu obsługi zadań o możliwość przetwarzania, użytkownik musi zamknąć Procesor zadań i uruchomić go ponownie.

Gdy wszystkie programy obsługi zadań zostały wczytane i otrzymały wszystkie zapytania, Procesor zadań jest gotowy do rozpoczęcia wyciągania zadań z kolejki i ich przetwarzania.

Przykładowy program obsługi zadań

Pakiet SDK programu Vault zawiera przykładowy program obsługi zadań JobProcessorApiSamples.Aby uzyskać więcej informacji, kliknij tutaj.