Nahrávání ovladačů úloh

Níže naleznete popis postupu nahrávání ovladačů úloh (společnosti Autodesk i třetích stran) procesorem úloh při spuštění:

  1. Nahrání ovladačů úloh třetích stran ze složky Extensions
  2. Načtení informací o konfiguraci ovladače úloh
  3. Nahrání ovladačů úloh Autodesk
  4. Přiřazení typů úloh k ovladačům úloh a kontrola, zda jsou ovladače povoleny
  2012 2013 2014
Autodesk Vault Basic    
Autodesk Vault Workgroup
Autodesk Vault Collaboration
Autodesk Vault Professional

Rozšíření ovladačů úloh třetí strany

Každé rozšíření třetí strany by mělo být umístěno ve své vlastní složce v adresáři Extensions:

%allusersprofile%\Autodesk\Vault 2012\Extensions\

Pokud například máme rozšíření řídicího programu s názvem „JobHandlerSample“, může se nacházet v adresáři %allusersprofile%\Autodesk\Vault 2013\Extensions\JobHandlerSample.

V každé složce v adresáři Extensions procesor úloh vyhledá konfigurační soubor.  Konfigurační soubor je prostý textový soubor, který lze libovolně pojmenovat, ale musí mít příponu .vcet.config.  Pokud konfigurační soubor neexistuje, rozšíření nebude nahráno.  Zde je obsah příkladu konfiguračního souboru JobHandlerSample.vcet.config::

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

Prvek sestavy určuje název přípony dll.  V příkladu výše je přípona dll pojmenována JobHandlerSample.dll.  Typ rozšíření JobProcessor udává, že se jedná o rozšíření procesoru úloh (v tomto adresáři se mohou nacházet také další typy rozšíření: WebService a VaultClient).

Sestava rozšíření (v našem příkladu je to JobHandlerSample.dll) bude nyní nahrána.  Po nahrání jsou provedeny následující kontroly:

  1. Zda odkazy knihovny DLL sestavy neodkazují na knihovny DLL úložiště (knihovny, jejichž název začíná výrazem „Connectivity“).  Pokud sestava rozšíření odkazuje na jednu z těchto knihoven DLL (přímo nebo nepřímo), nebude nahrána.
  2. V sestavě je vyhledán jeden exportovaný typ, který implementuje rozhraní IJobHandler.  V příkladu JobHandlerSample v rámci projektu sestavy by rozhraní IJobHandler implementovala následující třída C#:
    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;
               }
          }
    }         

    Sestava musí obsahovat přesně jeden veřejný typ, který implementuje rozhraní IJobHandler.  V opačném případě nebude rozšíření nahráno.  Vytvoří se instance tohoto typu.

  3. V sestavě budou vyhledány určité atributy sestavy. Jedná se zvláště o následující atributy:
    1. ApiVersion: Atribut typu Autodesk.Connectivity.Extensibility.Framework.ApiVersionAttribute určující verzi rozhraní API, pro kterou bylo toto rozšíření vytvořeno.  Pokud verze neodpovídá aktuální verzi rozhraní API úložiště, rozšíření nebude načteno.
    2. Company, Description, ProductName: Atributy z oboru názvů System.Reflection typů AssemblyCompanyAttribute, AssemblyDescriptionAttribute, AssemblyProductAttribute jsou vyžadovány a nesmí se jednat o prázdné řetězce.  Pokud tyto atributy neexistují nebo jsou prázdné, rozšíření nebude nahráno.
    3. ExtensionId : Atribut typu Autodesk.Connectivity.Extensibility.Framework.ExtensionIdAttribute, který určuje jedinečné ID v podobě řetězce (ve formátu identifikátoru GUID).  Pokud tento atribut neexistuje nebo je prázdný, rozšíření nebude nahráno.

Konfigurace ovladače úlohy

Konfigurační soubor ovladače úlohy je soubor ve formátu xml, který obsahuje informace o konfiguraci procesoru úloh.  Tento soubor je umístěn ve stejném adresáři jako soubor JobProcessor.exe (obvykle v umístění C:\Program Files\Autodesk\Vault Professional [rok]\Explorer) a má název JobProcessor.exe.config.  Část relevantní pro konfiguraci ovladačů úloh se nachází v umístění configuration\connectivityExplorer\jobHandlers.  V této části souboru xml přestavuje každý prvek jobHandler jeden ovladač úlohy.  Prvky jobHandler souboru ve formátu xml mají následující formát:

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

Kde:

  1. třída představuje typ úlohy.  Po přidání úlohy do fronty úloh serveru se určí typ úlohy a tento jedinečný řetězec se použije k určení toho, který ovladač úlohy danou úlohu zpracuje.
  2. Ovladač představuje název typu v sestavě, který rozhraní IJobHandler implementuje.  Lze to určit několika způsoby.  Je nutné určit řetězec, který po předání funkci System.Type.GetType (řetězec) (viz http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx) vrátí typ objektu v sestavě, který rozhraní IJobHandler implementuje.

Platný prvek jobHandler pro náš příklad rozšíření tedy bude:

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

V souboru JobProcessor.exe.config si všimněte, že pro všechny integrované ovladače úloh Autodesk zde již existuje položka jobHandler.  Integrované ovladače úloh se nahrají, pouze pokud pro ně existuje položka jobHandler.  Knihovny DLL integrovaných ovladačů úloh se nacházejí ve stejném adresáři jako soubor JobProcessor.exe.

Zkontrolujte, zda jsou ovladače úloh povoleny

Výše uvedené informace o konfiguraci se používají k přiřazení typu úlohy konkrétnímu ovladači úlohy.  Jakmile se přiřazení provede, je každý ovladač úlohy dotázán, zda může zpracovat svůj konkrétní typ úlohy.  Ovladač úloh na tento dotaz odpoví implementací metody rozhraní IJobHandler.CanProcess.  V tento okamžik by ovladač úlohy měl zkontrolovat, zda má vše, co potřebuje ke zpracování úloh svého typu (například některé ovladače úlohy vytvoření souboru ve formátu .dwf zkontrolují, zda je nainstalována aplikace Inventor). 

Když kontrolujete, které typy úloh určitý procesor úloh právě zpracovává (v nabídce Správa > Typy úloh...), znamená každá uvedená položka, že se pro daný typ úlohy úspěšně nahrál ovladač úlohy.  Pokud je položka zaškrtnutá, znamená to, že je daný ovladač úlohy povolen (při implementaci IJobHandler.CanProcess vrátil hodnotu „true“).  Aby se procesor úloh ovladače úlohy znovu zeptal, zda „může provést zpracování“, je nutné, aby uživatel procesor úloh ukončil a spustil jej znovu.

Po načtení a dotázání všech ovladačů úloh může procesor úloh začít přebírat úlohy z fronty a zpracovávat je.

Příklad ovladače úlohy

Níže naleznete příklad ovladače úlohy vytvořeného v jazyce C#.  Tento ovladač nemá žádnou užitečnou funkci (otevírá dialogy při volání metod CanProcess a Execute), ale lze jej použít jako šablonu pro vytváření ovladačů úloh.