MSChanges

This commit is contained in:
Digital Data - Marlon Schreiber
2019-02-15 10:21:11 +01:00
parent d8a4759106
commit 3c2092ca34
11 changed files with 157 additions and 136 deletions

View File

@@ -21,7 +21,7 @@ Public Class clsWindream_allgemein
#Region "+++++ Variablen +++++"
Public Shared oConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public Shared oSession 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public Shared oWMSession 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public Shared oBrowser As New WMOBRWSLib.ServerBrowser
Public Shared oDokumentTypen As WINDREAMLib.WMObjects
Private Shared oController As New WMOSearchController
@@ -56,84 +56,71 @@ Public Class clsWindream_allgemein
''' <returns>Liefert True wenn das Anmelden erfolgreich war, sonst False</returns>
''' <remarks></remarks>
Public Function Init() As Boolean
Try
Try
' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen
oSession = CreateObject("Windream.WMSession", GetCurrentServer)
' Connection-Objekt instanziieren
oConnect = CreateObject("Windream.WMConnect")
'MsgBox("windrem init 'ed")
Catch ex As Exception
Return False
End Try
' wenn windream nicht angemeldet ist
If Not IsLoggedIn() Then
' Art der Anmeldung an windream festlegen
' 0x0L (also 0) = Standard windream Benutzer
' WM_MODULE_ID_DOCTYPEEDITOR_LIC = ermöglicht Zugriff auf die windream Management Funktionen (Z.B. zur Verwaltung der windream Dokumententypen, Auswahllisten, etc.)
' WM_MODULE_ID_INDEXSERVICE = ermöglicht der Session die Indexierungs-Events vom windream DMS-Service zu empfangen
oConnect.ModuleID = 0
' setzt die minimal erwartete windream-Version
oConnect.MinReqVersion = "3"
' Logger.Debug("Personifizierung'")
' -- Impersonifizierung nur möglich mit registry-eintrag --
'oConnect.UserName = "\digitaldata\SchreiberM"
'oConnect.Password = "pw"
' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen
oConnect.LoginSession(oSession)
Logger.Debug("windream-Server: '" & GetCurrentServer() & "'")
Logger.Debug("windream-UserName: '" & oConnect.UserName & "'")
If oSession.aLoggedin = False Then
Logger.Warn("Es konnte keine Verbindung mit dem windream-Server hergestellt werden")
Return False
End If
' AUSGABE VON SYSTEMINFORMATIONEN
' Gibt die Versionsart (Lizenztyp) also Small-Business-Edition (SBE), Small-Business-Extension (SBX)
' oder Business-Edition (BE) aus
'MsgBox("WindreamVersion: " & oSession.GetSystemInfo("WindreamVersion") & vbNewLine & "LicenceKey: " & oSession.GetSystemInfo("LicenceKey") & vbNewLine & _
' vbNewLine & "LicenceName: " & oSession.GetSystemInfo("LicenceName"))
'Dim WMCtrl As AISCONTROLDATACOMLib.AISControlData
'WMCtrl = New AISCONTROLDATACOMLib.AISControlData
'' liefert die Versionsnummer des Clients
'MsgBox(WMCtrl.WMWorkstationBuildNo)
'MsgBox(WMCtrl.W
'' liefert den Servernamen des angemeldeten windreams
'MsgBox(WMCtrl.WMServerName)
Dim oHourDifference As Integer
oHourDifference = CInt(DateDiff(DateInterval.Hour, CURRENToWMSession_Created, Now))
If IsNothing(CURRENToWMConnect) Or oHourDifference >= 2 Then
Try
oSession.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine
' Ordnertypen ausgelesen werden
oDokumentTypen = oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
'Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen
oWMSession = CreateObject("Windream.WMSession", GetCurrentServer)
' Connection-Objekt instanziieren
oConnect = CreateObject("Windream.WMConnect")
'MsgBox("windrem init 'ed")
Catch ex As Exception
Logger.Warn("Problem beim Auslesen der Objekttypen: " & ex.Message)
Logger.Warn("Could not create WMObjects Session or Connect: " & ex.Message)
Return False
End Try
'wenn windream nicht angemeldet ist
If Not IsLoggedIn() Then
'Art der Anmeldung an windream festlegen
'0x0L (also 0) = Standard windream Benutzer
'WM_MODULE_ID_DOCTYPEEDITOR_LIC = ermöglicht Zugriff auf die windream Management Funktionen (Z.B. zur Verwaltung der windream Dokumententypen, Auswahllisten, etc.)
'WM_MODULE_ID_INDEXSERVICE = ermöglicht der Session die Indexierungs-Events vom windream DMS-Service zu empfangen
oConnect.ModuleID = 0
'setzt die minimal erwartete windream-Version
oConnect.MinReqVersion = "3"
' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen
oConnect.LoginSession(oWMSession)
Logger.Debug("windream-UserName: '" & oConnect.UserName & "'")
If oWMSession.aLoggedin = False Then
Logger.Warn("Es konnte keine Verbindung mit dem windream-Server hergestellt werden")
Return False
End If
Try
If Not IsNothing(oWMSession) Then
oWMSession.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine
' Ordnertypen ausgelesen werden
oDokumentTypen = oWMSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
Else
Logger.Warn("Unexpected...but the WMSession is nothing...")
Return False
End If
Catch ex As Exception
Logger.Warn("Problem beim Auslesen der Objekttypen: " & ex.Message)
Return False
End Try
End If
Logger.Debug("Alles OK - Erfolgreich angemeldet und Session aufgebaut")
CURRENToWMSession = oWMSession
CURRENToWMSession_Created = Now
Return True
Else
oWMSession = CURRENToWMSession
Logger.Debug("oWMSession already created!")
Return True
End If
Logger.Debug("Alles OK - Erfolgreich angemeldet und Session aufgebaut")
Return True
Catch ex As Exception
Logger.Error(ex)
'If Err.Number = -2147220985 Then
' clsLogger.AddError("Die installierte windream-Version ist nicht ausreichend für den Betrieb", "clswindream.Init")
'Else
' clsLogger.AddError("Fehler beim Login an windream: " & ex.Message, "clswindream.Init")
'End If
Return False
End Try
End Function
#End Region
@@ -198,7 +185,7 @@ Public Class clsWindream_allgemein
Dim oRelProperties As WMObjectRelationClass
' den Objekttyp laden
oObjectType = oSession.GetWMObjectByName(WMEntityObjectType, name)
oObjectType = oWMSession.GetWMObjectByName(WMEntityObjectType, name)
' Beziehung zu Indizes des Objekttyp auslesen
oIndexAttributes = oObjectType.GetWMObjectRelationByName("TypeAttributes")
@@ -240,7 +227,7 @@ Public Class clsWindream_allgemein
Public Function GetObjecttypeByName(ByVal objekttypName As String) As WMObject
Try
' alle Objekttypen auslesen
Dim oObjectTypes As WMObjects = oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
Dim oObjectTypes As WMObjects = oWMSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
' alle Objekttypen durchlaufen und nach dem mit dem angegebenen Namen suchen
For Each oObjectType As WMObject In oObjectTypes
@@ -293,7 +280,7 @@ Public Class clsWindream_allgemein
''' <remarks></remarks>
Public Function IsLoggedIn() As Boolean
Try
Return oSession.aLoggedin
Return oWMSession.aLoggedin
Catch ex As Exception
Logger.Error(ex)
End Try
@@ -309,7 +296,7 @@ Public Class clsWindream_allgemein
Public Function GetCurrentServer() As String
Try
Logger.Debug(oBrowser.GetCurrentServer.ToString)
Return oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer
Return oBrowser.GetCurrentServer
Catch ex As Exception
Logger.Error(ex)
End Try
@@ -358,7 +345,7 @@ Public Class clsWindream_allgemein
''' <remarks></remarks>
Public Shared Function GetTypeOfIndexAsIntByName(ByVal indexname As String) As Integer
Try
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
Dim oAttribute = oWMSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
Dim vType = oAttribute.getVariableValue("dwAttrType")
Return vType
Catch ex As Exception
@@ -370,7 +357,7 @@ Public Class clsWindream_allgemein
'Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
'Dim vType = oAttribute.getVariableValue("vItems")
'Return vType
Dim oChoiceList = oSession.GetWMObjectByName(WMEntityChoiceList, indexname)
Dim oChoiceList = oWMSession.GetWMObjectByName(WMEntityChoiceList, indexname)
If Err.Number = 0 And TypeName(oChoiceList) <> "Nothing" Then
Dim Values = oChoiceList
Values = oChoiceList.GetVariableValue("vItems")
@@ -403,7 +390,7 @@ Public Class clsWindream_allgemein
Public Function WDObject_exists(wdobj_location As String)
Dim WDObject As WMObject
Try
WDObject = oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, wdobj_location.Substring(2))
WDObject = oWMSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, wdobj_location.Substring(2))
If WDObject Is Nothing Then
Return False
Else
@@ -420,6 +407,13 @@ Public Class clsWindream_allgemein
Public Function GetSearchDocuments(ByVal wdfLocation As String)
'wdfLocation = 'W:\System\Suchen\WDRH\TestPDF.wdf'
Try
If IsNothing(CURRENToWMSession) Then
Logger.Warn("oWMSession is unexpected nothing...Try to create it")
If Init() = False Then
Logger.Warn("Could not recreate oWMSession...EXIT")
Return Nothing
End If
End If
Dim SearchName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1)
Dim SearchPath = wdfLocation.Substring(0, wdfLocation.Length - SearchName.Length)
Logger.Debug("WMSearch: " & wdfLocation.ToLower)
@@ -442,35 +436,26 @@ Public Class clsWindream_allgemein
'' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments()
Select Case suchTyp.ToString.ToUpper
Case "WMOSRCH.WMQUICKSEARCH"
srchQuick.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchQuick.WMSession)
srchQuick.WMSession = CURRENToWMSession
srchQuick.ClearSearch()
srchQuick.SearchProfilePath = SearchPath
srchQuick.LoadSearchProfile(SearchName)
oSearch = srchQuick.GetSearch()
Case "WMOSRCH.WMINDEXSEARCH"
srchIndex.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
Logger.Debug("Session created...")
oConnect.LoginSession(srchIndex.WMSession)
Logger.Debug("LoginSession...")
srchIndex.WMSession = CURRENToWMSession
srchIndex.ClearSearch()
srchIndex.SearchProfilePath = SearchPath
Logger.Debug("SearchPath...")
srchIndex.LoadSearchProfile(SearchName)
Logger.Debug("LoadSearchProfile...")
oSearch = srchIndex.GetSearch()
Logger.Debug("GetSearch...")
Case "WMOSRCH.WMOBJECTTYPESEARCH"
srchObjectType.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchObjectType.WMSession)
srchObjectType.WMSession = CURRENToWMSession
srchObjectType.ClearSearch()
srchObjectType.SearchProfilePath = SearchPath
srchObjectType.LoadSearchProfile(SearchName)
oSearch = srchObjectType.GetSearch()
Case Else
Logger.Warn("KEIN GÜLTIGER WINDREAM-SUCHTYP")
Return Nothing
End Select
Dim WMObjects As Object
@@ -539,32 +524,24 @@ Public Class clsWindream_allgemein
Select Case suchTyp.ToString.ToUpper
Case "WMOSRCH.WMQUICKSEARCH"
srchQuick.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchQuick.WMSession)
srchQuick.WMSession = CURRENToWMSession
srchQuick.ClearSearch()
srchQuick.SearchProfilePath = SearchPath
srchQuick.LoadSearchProfile(SearchName)
oSearch = srchQuick.GetSearch()
Case "WMOSRCH.WMINDEXSEARCH"
srchIndex.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
Logger.Debug("Session created...")
oConnect.LoginSession(srchIndex.WMSession)
Logger.Debug("LoginSession...")
srchIndex.WMSession = CURRENToWMSession
srchIndex.ClearSearch()
srchIndex.SearchProfilePath = SearchPath
Logger.Debug("SearchPath...")
srchIndex.LoadSearchProfile(SearchName)
Logger.Debug("LoadSearchProfile...")
oSearch = srchIndex.GetSearch()
Logger.Debug("GetSearch...")
Case "WMOSRCH.WMOBJECTTYPESEARCH"
srchObjectType.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchObjectType.WMSession)
srchObjectType.WMSession = CURRENToWMSession
srchObjectType.ClearSearch()
srchObjectType.SearchProfilePath = SearchPath
srchObjectType.LoadSearchProfile(SearchName)
oSearch = srchObjectType.GetSearch()
Case Else
Logger.Warn("KEIN GÜLTIGER WINDREAM-SUCHTYP")
Return Nothing