Einen Pipeline für einen DXLExporter mit DXLExporter, Parser, Stream aufzubauen funktioniert wunderbar.
Auch mit dem Roundtrip DxlExporter, Parser, DxlImporter gibts keine Probleme.
Ebenfalls mit DXLTransformer.
Was nicht funktioniert ist Stream -> Parser-> DXLImporter
Sobald ich einen Parser dazwischenhänge, meldet Notes eine DXLImport failed Exception (leider nicht sehr aussagekräftig).
Kapieren tue ich das nicht. Gemäss Doku sollte man das nach meinem Verständnis dürfen.
Es gibt den Workaround den Stream erst in einen Parser zu jagen und danach erst in den DXLImporter. Das befriedigt mich zwar im Zweifel ausreichend, aber vielleicht geht es besser?
Wenn also jemand eine Idee hat, bitte melden.
Gruß Axel
%REM
dxl-import the incomming xml in the notesdatabase to update documents.
%END REM
Function importDxl (filePath As String) As String
'ErrorHandling
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Const constrErrorLocation = "(agProcessMailIn) - ReturningTranslation.importDxl"
On Error Goto ErrorHandler
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dim dxlImporter As NotesDXLImporter
Dim nstInput As NotesStream
Dim strRet As String
Dim parser As NotesSAXParser
strRet = ""
'open Stream from file
Set nstInput = session.CreateStream
If Not nstInput.Open(filePath) Then
importDxl = "Cannot open " + filePath
Exit Function
End If
If (nstInput.Bytes=0) Then
importDxl = filePath + " is empty or did not exist!"
Exit Function
End If
Set parser = session.CreateSAXParser
Set dxlImporter = session.CreateDXLImporter()
dxlImporter.DocumentImportOption = DXLIMPORTOPTION_UPDATE_ELSE_CREATE
Call parser.setInput(nstInput)
Call parser.setOutput(dxlImporter)
Call dxlImporter.setOutput(Me.dbCurr)
On Event SAX_StartElement From Parser Call SAXStartElement
Call parser.process
Call nstInput.Close
strRet = ""
Ende:
Exit Function
'--------------------------------------- Error handling -------------------------------------------------
ErrorHandler:
Call objPublicErrorHandler.handleError ( Err, Error, Erl, constrErrorLocation, getMsgText(12))
strRet = "Error importing dxl file"
Resume Ende
End Function