Lotus Notes / Domino Sonstiges > Help-Desk Applikation !!Help!!

Help Application demo at Lotusphere

<< < (9/34) > >>

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