Adhoc-Workflow ab 9.10 und Verwendung oxvbbas.dll
Ab 9.10 steht der enaio Server 64bit zur Verfügung. Die Funktion Protokoll-Erstellen und alle Funktionen, welche die oxvbbas.dll verwenden, laufen damit nicht. Die Datei oxvbbas.dll ist eine 32bit Version. Sie liegt u.a. im Verzeichnis SERVER\WIN32. Für den/die Workflows sollte diese Version registriert werden.
Das Thema wird auch in DB-4734 behandelt und Link (interner Link): https://wiki.optimal-systems.de/pages/viewpage.action?pageId=65896727.
Lösung ist quasi: die COM-Funktion bei 64bit-Aufrufen umzuleiten. Wie man das realisieren kann, siehe Schritt für Schritt-Anleitung.
Alternative: axcomhlp32.exe verwenden. Diese simuliert quasi bei jedem Aufruf die "COM-Umleitung". Besser wäre die oxvbbas.dll zu verwenden, denn wenn viele Workflows und Prozesse parallel laufen, wir je die exe aktiviert und es könnte eng werden mit Speicher etc.
Skriptauszug für axcomhlp32.exe:
Function CreateObject(ClassName)
Set CreateObject = Nothing
dim rc : set rc = RunningContext
If rc.comhlp32 Is Nothing Then
rc.logger.Error "Der COM-Helper 'axcomhlp32.exe' steht nicht zur Verfügung"
Exit Function
End If
rc.comhlp32.Is64Bit = rc.Is64BitServer
Set CreateObject = rc.comhlp32.CreateObject(ClassName)
End Function
Schritt-für-Schritt-Anleitung
- Die REG-Datei aus dem JIRA-Task speichern und zum gewünschten Ziel-Server transferieren. Inhalt:
Screenshot:
Text:Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Wow6432Node\AppID\{208AA085-5B7B-4B12-B01B-58DEE0EC78EB}]
"DllSurrogate"=""[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{208AA085-5B7B-4B12-B01B-58DEE0EC78EB}]
"AppID"="{208AA085-5B7B-4B12-B01B-58DEE0EC78EB}"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{208AA085-5B7B-4B12-B01B-58DEE0EC78EB}]
"DllSurrogate"="" - Beim Server auf Commandline gehen, wichtig explizit "als Administrator ausführen"
Nun kann man die generelle Registrierung vornehmen bzw. das Setup sollte die oxvbbas.dll bereits registriert haben. (32bit immer zuerst registrieren)
CD %WINDIR%
CD SYSWOW64
REGSVR32.EXE <pfad zum server\win32-Verzeichnis>\oxvbbas.dll - Kontrollieren, ob die Datei nun in der Registry steht:
REGEDIT aufrufen und mit F3 oder STRG+F das Suchfenster öffnen.
Hier eingeben: oxvbbas
Dann die Suche starten. Unter HKEY_Classes_Root sollte dieser Eintrag zu finden sein: HKEY_CLASSES_ROOT\oxvbbas.AS_Functions\Clsid - Normalerweise nimmt man diesen Schlüssel und ersetzt in der REG-Datei den Wert {208AA085-5B7B-4B12-B01B-58DEE0EC78EB} durch das, was hier steht:
Bei oxvbbas.dll funktioniert das oftmals nicht. Hier sollte der besser der Wert "{208AA085-5B7B-4B12-B01B-58DEE0EC78EB}" aus der REG-Datei verwendet werden. - Die transferierte und angepasste REG-Datei ausführen mit Doppelklick und bestätigen, dass die Werte hinzugefügt werden sollen.
- Zurück zum geöffneten Commandline gehen und diese Befehle ausführen (einmal 32bit und einmal 64bit, zuerst 32bit!):
CD ..\SYSWOW64
REGSVR32.EXE <pfad zum server\win32-Verzeichnis>\oxvbbas.dll
CD ..\SYSTEM32
REGSVR32.EXE <pfad zum server\win32-Verzeichnis>\oxvbbas.dll - Die Registry schließen.
- Mit dem Texteditor eine Datei namens Test-oxvbbas.vbs erstellen mit diesem Inhalt:
Dim oxvbbas
Set oxvbbas = createobject("oxvbbas.functions")
msgbox "ok" - Nach dem Speichern zurück zum Commandline und diese Befehle ausführen:
wscript.exe <pfad zur test-oxvbbas.vbs>\Test-oxvbbas.vbs
Erwartetes Ergebnis: Meldung "ok"
CD ..\SYSTEM32
wscript.exe <pfad zur test-oxvbbas.vbs>\Test-oxvbbas.vbs
Erwartetes Ergebnis: Meldung "ok" - Wenn bei beiden "ok" kam, dann den enaio Dienst neu starten, damit die Änderung wirksam wird.
Fehlerfall:
Falls es Fehler gibt oder das Registrieren nicht klappt:
- Deregistrierung der 32bit und 64bit-DLL (Reihenfolge egal):
CMD
CD %windir%\system32
regsvr32 /u <pfad zum server\win32-Verzeichnis>\oxvbscript.dll
CD %windir%\syswow64
regsvr32 /u <pfad zum server\win32-Verzeichnis>\oxvbscript.dll - REG-Datei noch einmal neu in die Registry einfügen, siehe oben Punkt 5
Bei der osxvbbas.dll funktionierte bisher immer de Schlüssel {208AA085-5B7B-4B12-B01B-58DEE0EC78EB}. - Registrierung der 32bit-DLL, siehe oben Punkt 7
- dann Registrierung der 64bit-DLL, siehe oben Punkt 7
Registrieren und Testen als Download:
Die ZIP herunterladen und die BAT-Dateien anpassen (Pfade zu den Dateien korrigieren). Dann der Reihe nach:
- REG-Datei mit Doppelklick übernehmen
- registrieren.bat aufrufen
- checkoxvbbas.bat
Wichtig: Bei der osxvbbas.dll funktionierte bisher immer de Schlüssel {208AA085-5B7B-4B12-B01B-58DEE0EC78EB}.