Lotus Notes / Domino Sonstiges > Help-Desk Applikation !!Help!!
Help Application demo at Lotusphere
eknori (retired):
Das sieht doch schon mal ganz gut aus, Axel ...
Ich habe noch ein wenig an der Function GetAllTicketsBySupporter rumgewerkelt.
Den Status habe ich gestrichen, so daß als einziger Input nur der Name des Supporters übrigbleibt.
Außerdem habe ich noch das HELP übliche Errorhandling und Logging eingebaut. ( Dazu müssen die dazu notwendigen Funktionen über Use "lib.appl.functions" eingebunden werden )
Ich weiß, daß die Funktion natürlich eine Menge Docs zurückgeben kann; ist mir aber momentan wurscht. RIM will ja nur demonstrieren, daß die Webservices vom Domino 7 mit ihrem Mobile Data Service zusammenarbeiten.
Die Funktion gibt zusätzlich auch den Dokumentenstatus zurück; danach kann man dann clientseitig auch noch filtern. Außerdem wird ein ErrorCode mitgeliefert ...
%REM
#####################################################
Public Function GetAllTicketsBySupporter ( ) As TicketCollection
#####################################################
%END REM
Public Function GetAllTicketsBySupporter ( strSupporter As String ) As TicketCollection
On Error Goto ERRHANDLE
If Trim(strSupporter) = "" Then
Set GetAllTicketsBySupporter = New TicketCollection
GetAllTicketsBySupporter.TicketCount = 0
GetAllTicketsBySupporter.ErrorCode = GET_TICKET_ERR_MANDANTORY
Exit Function ' nothing else to do, get outa here !
Else
SearchFormula =_
|@UpperCase(Form) ="BUGREPORT" & @UpperCase(@Name([CN];supporter)) ="|_
& Ucase(CommonNameString (strSupporter )) & |"|
Dim dateTime As New NotesDateTime(_
Cstr(Datenumber(2000, 5, 1)))
Dim dc As NotesDocumentCollection
Set dc = db.Search( SearchFormula, dateTime,0)
count = dc.count
Set GetAllTicketsBySupporter = New TicketCollection
GetAllTicketsBySupporter.TicketCount = count
GetAllTicketsBySupporter.ErrorCode = GET_TICKET_ERR_NOERROR
If (count = 0) Then
Redim GetAllTicketsBySupporter.Tickets(count)
Else
Redim GetAllTicketsBySupporter.Tickets(count - 1)
End If
i = 0
Set doc = dc.GetFirstDocument
Do Until (doc Is Nothing)
Set TicketValues = New Ticket
TicketValues.User = CommonNameString(getItemValue ("user"))
TicketValues.TicketNumber = getItemValue ("ReqNumber")
TicketValues.Problem = getItemValue ("problem")
TicketValues.Status = getItemValue ("status")
Set GetAllTicketsBySupporter.Tickets(i) = TicketValues
i = i +1
Set doc = dc.GetNextDocument(doc)
Loop
End If
EXITPOINT:
Exit Function
ERRHANDLE:
xProc = Getthreadinfo(LSI_THREAD_PROC)
xError = xProc & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
If UseOpenLog Then
Call LogError
Elseif LogScriptErrors Then
Call ThrowException ( xProc, xError )
End If
Print xError 'In all cases
If ResumeMethodNext Then
Resume Next
Else
Set GetAllTicketsBySupporter = New TicketCollection
GetAllTicketsBySupporter.TicketCount = count
GetAllTicketsBySupporter.ErrorCode = GET_TICKET_ERR_MISC_ERROR
Resume EXITPOINT
End If
End Function
eknori (retired):
Axel, du hast mehrfach angedeutet, daß du die Webservices langsam findest ( nehme an, du meinst den Response )
Habe gerade mal ein wenig rumgespielt: Knapp 13 Sekunden braucht der Service, um 583 Tickets abzurufen. Also ich finde, das ist i.O., oder ?
eknori (retired):
Frage mich gerade, ob es eigentlich sinnvoll ist, die einzelnen Services in einer "Klasse" zu kapseln.
Wenn ich mir so die Dokus dazu anschaue, bauen die für jede Function / Methode einen eigenen Service.
Ich finde das persönlich nicht so toll.
eknori (retired):
wo habe ich den Denkfehler ?? Hatte ja angedeutet, daß GetNthDocument ( i ) nicht funktioniert. Nach ein wenig Bastelarbeit habe ich folgendes gefunden:
This one doesn't work:
For i = 0 To dc.Count
Set doc = dc.GetNthDocument ( i + 1 )
Set TicketValues = New Ticket
TicketValues.User = CommonNameString(getItemValue ("user"))
TicketValues.TicketNumber = getItemValue ("ReqNumber")
TicketValues.Problem = getItemValue ("problem")
TicketValues.Status = getItemValue ("status")
Set GetAllTicketsBySupporter.Tickets ( i ) = TicketValues
Next
( doc is not initialized )
BUT this one works like a charme
For i = 1 To dc.Count
Set doc = dc.GetNthDocument ( i )
Set TicketValues = New Ticket
TicketValues.User = CommonNameString(getItemValue ("user"))
TicketValues.TicketNumber = getItemValue ("ReqNumber")
TicketValues.Problem = getItemValue ("problem")
TicketValues.Status = getItemValue ("status")
Set GetAllTicketsBySupporter.Tickets ( i - 1 ) = TicketValues
Next
Isn't it the same ??
Ich finde einfach nicht den Fehler in meiner Denke; müsste wohl mal wieder Urlaub machen ...
eknori (retired):
Oh Gott, jetzt wo ich es gepostet habe, sehe ich den Denkfehler auf den ersten Blick... wie peinlich
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln