Informationen zum Laden von Auftrags-Steuerprogrammen

Informationen dazu, wie der Job-Prozessor Auftrags-Steuerprogramme beim Start lädt.

Der Job-Prozessor lädt Auftrags-Steuerprogramme von Autodesk und Drittanbietern.

  1. Laden aller Auftrags-Steuerprogramme von Drittanbietern aus dem Ordner Erweiterung
  2. Lesen in den Konfigurationsinformationen des Auftrags-Steuerprogramms.
  3. Laden Sie Auftrags-Steuerprogramme von Autodesk.
  4. Ordnen Sie Job-Typen Auftrags-Steuerprogrammen zu, und prüfen Sie, ob jedes Auftrags-Steuerprogramm aktiviert ist.

Erweiterungen von Auftrags-Steuerprogrammen von Drittanbietern

Jede Erweiterung von Drittanbietern sollte in einem eigenen Ordner im Verzeichnis für Erweiterungen vorhanden sein:

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

Gibt es beispielsweise eine Erweiterung eines Auftrags-Steuerprogramms mit dem Namen JobHandlerSample, so kann diese im Verzeichnis %allusersprofile%\Autodesk\Vault [Jahr]\Extensions\JobHandlerSample liegen.

Der Job-Prozessor sucht für jeden Ordner im Verzeichnis für Erweiterungen nach einer Konfigurationsdatei.  Die Konfigurationsdatei ist eine einfache Textdatei, die beliebig benannt werden kann, jedoch auf .vcet.config enden muss.  Wenn die Konfigurationsdatei nicht vorhanden ist, kann die Erweiterung nicht geladen werden.  Nachfolgend die Inhalte einer Test-Konfigurationsdatei, JobHandlerSample.vcet.config:

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

Das Element Baugruppe gibt den Namen der Erweiterungs-DLL an.  Dementsprechend heißt die Erweiterungs-DLL im obigen Beispiel JobHandlerSample.dll.  Der Erweiterungstyp des Job-Prozessors gibt an, dass es sich um eine Erweiterung für den Job-Prozessor handelt (andere Erweiterungstypen können sich auch in diesem Verzeichnis befinden: WebService und VaultClient).

Die Erweiterung der Baugruppe (im Beispiel JobHandlerSample.dll) wird nun geladen.  Beim Ladevorgang werden folgenden Prüfungen durchgeführt:

  1. Die Referenzen der Baugruppen-DLL werden überprüft, um sicherzustellen, dass keine Verbindung zu den Tresor-DLLs (deren Namen mit Connectivity beginnt) besteht.  Wenn eine Erweiterung der Baugruppe mit einer dieser DLL-Dateien verknüpft ist (entweder direkt oder indirekt), kann sie nicht geladen werden.
  2. Die Baugruppe wird auf einen einzelnen exportierten Typ überprüft, der die Schnittstelle IJobHandler implementiert. In dem Beispiel JobHandlerSample, innerhalb des Baugruppen-Projekts, wurde die folgende C#-Klasse veranlasst, die IJobHandler-Schnittstelle zu implementieren:
    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;
               }
          }
    }         

    In der Baugruppe muss es genau einen öffentlichen Typen geben, der IJobHandler implementiert.  Ist dies nicht der Fall, kann die Erweiterung nicht geladen werden.  Ein Exemplar dieses Typs ist instanziiert.

  3. Die Baugruppe wird auf bestimmte erforderliche Attribute überprüft. Im Besonderen,
    1. ApiVersion: ein Attribut des Typs Autodesk.Connectivity.Extensibility.Framework.ApiVersionAttribute, das die API-Version festlegt, für die diese Erweiterung geschrieben wurde.  Wenn die Version mit der aktuellen Version der Vault-API übereinstimmt, kann die Erweiterung nicht geladen werden.
    2. Firma, Beschreibung, Produktname: Attribute aus dem Namensbereich System.Reflection der Typen AssemblyCompanyAttribute, AssemblyDescriptionAttribute, AssemblyProductAttribute sind erforderlich und müssen ausgefüllt sein.  Wenn diese nicht vorhanden oder leer sind, kann die Erweiterung nicht geladen werden.
    3. ExtensionId: Ein Attribut des Typs Autodesk.Connectivity.Extensibility.Framework.ExtensionIdAttribute, das eine eindeutige ID als Zeichenfolge festlegt (in GUID Form).  Wenn dieses Attribut nicht vorhanden oder leer ist, kann die Erweiterung nicht geladen werden.

Konfiguration des Auftrags-Steuerprogramms

Die Konfigurationsdatei des Auftrags-Steuerprogramms ist eine XML-Datei, die Konfigurationsinformationen für den Job-Prozessor enthält.  Sie befindet sich im selben Verzeichnis wie die JobProcessor.exe (in der Regel C:\Programme\Autodesk\Vault Professional [Jahr]\Explorer) und hat den Namen JobProcessor.exe.config.  Der relevante Abschnitt für die Konfiguration von Auftrags-Steuerprogrammen liegt unter configuration\connectivityExplorer\jobHandlers.  In diesem XML-Codeabschnitt steht jedes jobHandler-Element für ein Auftrags-Steuerprogramm.  Die XML-Elemente jobHandler haben folgende Form:

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

Dabei

  1. stellt die Klasse den Job-Typ dar.  Wird ein Auftrag zu einer Job-Server-Warteschleife hinzugefügt, wird der Job-Typ festgelegt, wobei diese eindeutige Zeichenfolge entscheidet, welches Auftrags-Steuerprogramm den Auftrag verarbeitet.
  2. Das Steuerprogramm steht für den Namen des Typs innerhalb der Baugruppe, die IJobHandler ausführt.  Das kann auf unterschiedliche Weise angegeben werden.  Sie müssen eine Zeichenfolge festlegen, die bei der Übergabe an System.Type.GetType (Zeichenfolge) (siehe http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx) den Objekttyp in die Baugruppe zurückbringt, die IJobHandler implementiert.

Demnach wäre ein gültiges jobHandler-Element für die Beispiel-Erweiterung:

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

Sie werden feststellen, dass in der Datei JobProcessor.exe.config bereits für jedes integrierte Autodesk-Steuerprogramm ein Eintrag jobHandler vorhanden ist.  Die integrierten Auftrags-Steuerprogramme werden nur geladen, wenn es für sie einen entsprechenden Eintrag gibt.  Die integrierten DLL-Dateien für Auftrags-Steuerprogramme befinden sich in demselben Verzeichnis wie die JobProcessor.exe.

Prüfen Sie, ob Auftrags-Steuerprogramme aktiviert sind

Die oben erwähnten Konfigurationsinformationen werden verwendet, um einem Job-Typen einen bestimmten Auftrags-Steuerprogramm zuzuweisen.  Nach diesem Schritt wird jedes Auftrags-Steuerprogramm gefragt, ob es den entsprechenden Job-Typ verarbeiten kann.  Das Auftrags-Steuerprogramm beantwortet diese Frage durch Implementierung der Schnittstellenmethode IJobHandler.CanProcess.  Zu diesem Zeitpunkt sollte das Auftrags-Steuerprogramm prüfen, ob die notwendigen Mittel zur Auftragsverarbeitung seines Typs vorhanden sind (z. B. prüfen einige Auftrags-Steuerprogramme zur DWF-Erstellung, ob Inventor installiert ist). 

Bei der Überprüfung, welche Job-Typen derzeit von einem Job-Prozessor verarbeitet werden (über das Menü Verwaltung->Job-Typen...), bedeutet jeder Eintrag, dass ein Auftrags-Steuerprogramm für den Job-Typ erfolgreich geladen wurde.  Wenn der Eintrag markiert ist, bedeutet dies, dass das Auftrags-Steuerprogramm aktiviert ist (d.h., es kehrt als true von der IJobHandler.CanProcess-Implementierung zurück).  Damit der Job-Prozessor bei einem Auftrags-Steuerprogramm erneut anfragt, ob er fortfahren kann, muss der Benutzer den Job-Prozessor beenden und neu starten.

Wenn alle Auftrags-Steuerprogramme geladen und abgefragt sind, ist der Job-Prozessor bereit, Aufträge aus der Warteschleife abzurufen und zu verarbeiten.

Beispiel Auftrags-Steuerprogramm

Das Vault-SDK enthält das beispielhafte Job-Steuerprogramm JobProcessorApiSamples.Weitere Informationen finden Sie hier.