Aufrufen von .NET Managern

Aus prevero Competence Center
Wechseln zu: Navigation, Suche


Ab OLCAP 2010 ist es möglich, Manager auch in .NET zu implementieren und aus dem OLCAP-Client heraus aufzurufen. Diese Aufrufe in .NET DLLs werden fast überall unterstützt, wo auch ein Aufruf eines PBA-Makros unterstützt wird. Ausgenommen dabei ist nur die Einbindung von Managern in die Dokumentstruktur.

Prinzipiell werden solche .NET-Manager in zwei Formen unterstützt: In der kompilierten Version als DLL-File oder als nicht kompilierte C#-Skripts.


Hinweis: Unterstützt werden nur DLLs, welche mit .NET-Framework bis zu 3.51 erstellt wurden
.


DLL-Files[Bearbeiten]

Ein DLL-File, das Makros für OLCAP enthält, sollte im Programmverzeichnis abgelegt werden. Ebenso müssen sämtliche externen DLLs, die nicht zum Standardumfang von OLCAP oder .NET 3.5 Framework gehören, ebenfalls entweder im OLCAP-Programmverzeichnis oder im Global Assembly Cache (GAC) von Windows abgelegt werden. Nur so ist gewährleistet, dass diese auch immer korrekt geladen werden können. Prinzipiell können in einer .NET DLL beliebig viele Manager implementiert werden. Diese können auch über mehrere Klassen und Name spaces innerhalb der DLL verteilt sein. Jede Methode, über die ein Manager aufgerufen wird, muss in einem Name space eingebettet sein und folgende Signatur aufweisen (dabei sind Manager und Parameter frei wählbare Namen!):


public static int Manager(String parameter)


Innerhalb dieser statischen Methode sind sämtliche Funktionalitäten, die .NET bietet, erlaubt.

In den OLCAP-Client eingebettet wird ein Aufruf nach folgendem Schema:


[Path]FileName.dll|Namespace|Class|Method [-parameter]


Dabei sind:

  • Path: (optional) absoluter Pfad zur DLL oder relativer Pfad zum Programmverzeichnis, falls die DLL nicht im Programmverzeichnis liegt
  • File name: Dateiname des DLL-Files
  • Name space: Name space, aus dem die enthaltene Klasse stammt
  • Class: Klasse, die die aufzurufende Methode enthält
  • Method: Methode, die aufgerufen werden soll
  • Parameter: (optional) String-Parameter, der an die Methode übergeben werden soll. Dabei wird ALLES, was hinter dem LETZTEN Bindestrich angegeben wird, in einen einzigen String zusammengefasst und der aufgerufenen Methode übergeben. Sollen mehrere Parameter übergeben werden, kann der String in .NET wieder geparst und so die einzelnen Parameter bestimmt werden.

Die Einbettung eines solchen Aufrufs hinter einen Button des OLCAP-Clients funktioniert analog zum Aufruf eines PBA-Managers.


C#-Skripte[Bearbeiten]

Die Source-Files für C#-Skripte müssen im Makroverzeichnis liegen. Sämtliche in diesen Skripten referenzierte externe DLLs müssen jedoch entweder im Programmverzeichnis oder dem Global Assembly Cache liegen. Die aufzurufende Methode muss analog zum obigen Fall folgende Signatur aufweisen: public static int Manager (String-Parameter). Die Einbettung des Aufrufs gestaltet sich ebenfalls analog zum obigen Fall, nur dass anstelle der File-Endung "DLL" die Endung ".CS" verwendet werden muss.


[Path]FileName.cs|Namespace|Class|Method [-parameter]


Dabei sind:

  • Path: (optional) absoluter Pfad zur DLL oder relativer Pfad zum Makroverzeichnis, falls das Skript nicht im Makroverzeichnis liegt
  • File name: Dateiname des Script-Files
  • Name space: Name space, aus dem die enthaltene Klasse stammt
  • Class: Klasse, die die aufzurufende Methode enthält
  • Method: Methode, die aufgerufen werden soll
  • Parameter: (optional) String-Parameter, der an die Methode übergeben werden soll. Dabei wird ALLES, was hinter dem LETZTEN Bindestrich angegeben wird, in einen einzigen String zusammengefasst und der aufgerufenen Methode übergeben. Sollen mehrere Parameter übergeben werden, kann der String in .NET wieder geparst und so die einzelnen Parameter bestimmt werden.

Das referenzierte Skript wird zur Laufzeit kompiliert. Dafür muss dem Compiler mitgeteilt werden, welche externen DLLs darin referenziert werden sollen. Dies geschieht am Anfang des Scripts mit Hilfe folgender Definition


//_PP_REFERENCES:System.Windows.Forms.dll;


Mit diesem Kommentar wird dem System mitgeteilt, dass die .NET DLL System.Windows.Forms als Referenz geladen werden soll. Es können hier beliebige .NET DLLs angegeben werden. Diese werden im aktuellen Verzeichnis des Skripts bzw. im Global Assembly Cache gesucht. Falls eine referenzierte DLL nicht in einem dieser beiden Verzeichnisse liegt, muss dem Compiler auch das entsprechende Verzeichnis mitgeteilt werden. Dies kann entweder mit einem absoluten Pfad oder mit Hilfe des Platzhalters %_app_% geschehen. Dieser Platzhalter wird dann durch das Binärverzeichnis der laufenden OLCAP-Applikation ausgetauscht. Die folgenden beiden Zeilen verweisen also auf das gleiche Verzeichnis.


//_PP_REFERENCES:%_app_%Winterheller.Tool.dll;
//_PP_REFERENCES:c:\programme\winterheller\olcap\Winterheller.Client.dll;

bzw. ab professional planner 8:

//_PP_REFERENCES:%_app_%OLCAP.Tool.dll;
//_PP_REFERENCES:c:\programme\prevero\olcap\OLCAP.Client.dll;


Es ist auch möglich, C#-Skripte analog zu PBA-Managern mit einem Dokument zu speichern.