COM Forwarding

COM Schnittstellen cloudfähig machen mit COM Forwarding

Product line

Standard

|

Expert

Operating mode

CLOUD ABO

|

ON-PREMISES

Modules

Services & CRM

Budget & Phases

Purchases

Resource Planning

Business Intelligence

Created: 15.03.2024
Updated: 29.04.2024 | Beschreibung bei vtccom.createobject() sowie Registry Key eingefügt.

Einige Vertec Schnittstellen zu Drittprogrammen basieren auf einer COM Schnittstelle zum Fremdsystem. Da die Verbindung jedoch nur lokal, d.h. auf demselben Rechner, funktioniert, sind diese Schnittstellen nicht cloudfähig und können nur mit der Vertec Desktop App und demnach nur On-Premises verwendet werden.

Mit dem COM Forwarding führen wir mit Vertec 6.7.0.7 ein System ein, mit welchem auch aus der Cloud App auf die COM Objekte des Fremdsystems zugegriffen werden kann.

So können im serverseitigen Python-Code COM Forwarding Objekte verwendet werden, deren Aktionen dann an die Cloud App weitergeleitet und dort auf die eigentlichen COM Objekte des Drittprogramms angewendet werden.

Modul vtccom

Die Funktionalitäten für das COM Forwarding werden im Modul vtccom mitgeliefert. Dieses ist auch als Stub File vorhanden.

Die Funktion vtccom.createobject(<progid>) liefert ein COM Objekt, welches in Python verwendet werden kann (siehe Beispiel unten).

  • In der Desktop App wird das COM Objekt direkt aus der App unter Verwendung des Python COM Systems ( win32com.client ) angelegt. Dies entspricht der bisherigen Verwendung von COM Objekten aus Python.
  • In der Cloud App wird das COM Objekt durch die Cloud App auf dem Client-System via COM Forwarding angelegt. Alle Interaktionen mit dem resultierenden Python Objekt werden zur Cloud App übertragen und dort auf das eigentliche COM Objekt angewendet.

Bestehende, nicht cloudfähige Schnittstellen umbauen

Schnittstellen, welche COM Forwarding verwenden, funktionieren auch in der Desktop App unverändert.

Falls Sie in Vertec (andere als die standardmässig mitgelieferten) Schnittstellen mit COM Zugriffen auf Drittprogramme verwenden und diese an COM Forwarding anpassen möchten, müssen Sie folgende Änderungen vornehmen:

vtccom.createobject() statt win32com.Dispatch()

Die Aufrufe der COM Objekte erfolgen mittels vtccom.createobject(identifier) anstelle von win32com.Dispatch .

Dafür muss das Modul vtccom importiert und die Aufrufe wie folgt geändert werden:

Neu Bisher
import vtccom
self.invoice = vtccom.createobject('ThirdPartyAPI.Invoice')
from win32com.client import Dispatch
self.invoice = Dispatch('ThirdPartyAPI.Invoice')
import vtccom
word = vtccom.createobject("Word.Application")
word.Visible = True
doc = word.Documents.Add()
doc.SaveAs(r"C:\temp\Test Document.docx")
from win32com.client import Dispatch
Word = Dispatch('Word.Application')
Word.Visible = True
doc = Word.Documents.Add()
doc.SaveAs(r"C:\temp\Test Document.docx")

Für die Sicherstellung der Rückwärtskompatibilität liefert vtccom.createobject() in der Desktop App das originale COM Objekt zurück.

Nicht zugelassene Module ausbauen

Damit die Schnittstellen mit COM Forwarding auch mit Restrict Scripting funktionieren, müssen Aufrufe von Modulen wie sys oder pywintypes ausgebaut werden. Es dürfen nur Module verwendet werden, die auf der Whitelist stehen.

Kompatibilität mit COM Objekten

Je nach Implementierung des verwendeten Drittproduktes (COM Server) kann es mit COM Forwarding zu Inkompatibilitäten kommen. In diesen Fällen kann der COM Server nur in der Desktop App verwendet werden.

Sicherheit

Um zu vermeiden, dass ein Script mit COM Forwarding auf dem Server "unbemerkt" Code in der Cloud App ausführt, wird der Benutzer des Clients einmalig um Erlaubnis gefragt, wenn ein COM Server auf dem Client aufgerufen wird. Diese Erlaubnis wird für zukünftige Aufrufe auf dem Client gespeichert.

Beim Zugriff auf einen COM Server via COM Forwarding (Aufruf von vtccom.createobject()) erscheint in der Cloud App ein Dialog, dass ein Server Script versucht, auf dieses Objekt auf dem Client zuzugreifen.

  • Wird der Zugriff erlaubt, wird das Script ausgeführt und die Erlaubnis auf dem Client gespeichert. Bei zukünftigen Aufrufen desselben COM Servers erscheint die Abfrage nicht mehr.
  • Wird der Zugriff nicht erlaubt, bricht die Ausführung ab, ohne dass eine Meldung erscheint. Bei wiederholtem Aufruf erscheint die Meldung erneut.

Die von uns mitgelieferten Buchhaltungsschnittstellen mit COM Forwarding sind bereits hinterlegt. Bei ihnen kommt diese Abfrage also auch beim erstmaligen Aufruf nicht.

Gespeichert werden die zugelassenen COM Server im Registry Key HKEY_CURRENT_USER\SOFTWARE\Vertec\ComObjectWhitelist.

Bitte wählen Sie Ihren Standort