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

Version 1.0.10 BETA 2

<< < (9/20) > >>

burkert:
o.k.
noch eine Frage hätte ich.
Bei mir fehlt die Ansicht weitere Ansichten.
Muss ich da auch noch was kopieren, oder fehlt das nur, weil ich noch kein Eskalationsprofil angelegt habe?

eknori (retired):
Die "weiteren Ansichten" legst du zum einen im ConfigDoc "UserViewsOpenCalls" fest und zum anderen im Sprachdocument OUTLINE.

Thomas Schulte:
nein, das fehlt dir deswegen weil du die Systemparameter
UserViewsOpenCalls, UserViewsClosedCalls, UserViewsStatistics
nicht übernommen hast.
Anyway, führe bitte in der Konfigurationsansicht die Aktion "Schlüssel holen" durch. Damit werden alle dir warscheinlich noch fehlenden Schlüsselwörter ergänzt.

eknori (retired):
Zurück zu den Eskalationsprofilen:

Im Release gibt es die Möglichkeit, selber eine Formel anzulegen, die dann an das db.search übergeben wird. Das ist flexibel und ... ... ... fehleranfällig, da Menschen dazu neigen, Fehler zu machen. Dann wäre die ganze Tipperei umsonst gewesen.

Also braucht auch diese Funktion ein entsprechendes ERROR HANDLING  8)

Christian Cloutier hat auf searchdomino.com einen Tip veröffentlicht, der genau das leistet, was hier gebraucht wird; "Validating a Notes formula from LotusScript".

'lib.appl.NotesAPI:

Option Public

Const NULLHANDLE = 0
Const NO_ERROR = 0
Const ERR_FORMULA_COMPILATION = &h500 + 1

Declare Function NSFFormulaCompile Lib "nnotes.dll" ( _
Byval FormulaName As Long, _
Byval FormulaNameLength As Integer, _
Byval FormulaText As Lmbcs String, _
Byval FormulaTextLength As Integer, _
rethFormula As Long, _
retFormulaLength As Integer, _
retCompileError As Integer, _
retCompileErrorLine As Integer, _
retCompileErrorColumn As Integer, _
retCompileErrorOffset As Integer, _
retCompileErrorLength As Integer _
) As Integer

Declare Sub OSMemFree Lib "nnotes.dll" (Byval hHandle As Long)

Declare Function OSLoadString Lib "nnotes.dll" ( _
Byval hmodule As Long, _
Byval status As Integer, _
Byval s As String, _
Byval slen As Integer _
) As Integer

Sub Initialize
   
End Sub
' ================================================================================
' CheckSelectionFormulaValid - This function uses the Lotus C API to check thesyntax of a Notes formula.
'
' Return Value: Variant - A 3 elements array containing:
' Index 0 - The compilation error code or NO_ERROR (0) if valid
' Index 1 - The compilation error offset in formula or NO_ERROR if valid
' Index 2 - The compilation error length or NO_ERROR if valid
'
' Note: The compilation error code at Index 0 can then be passed to GetAPIError () to get more info about the error.
' ================================================================================
' ================================================================================
' GetAPIError - This function uses the Lotus C API to return a Notes error's text message.
'
' Return Value: String - The text associated with the Notes API error code.
' ================================================================================
Function CheckSelectionFormulaValid(sFormula) As Variant
   
   Dim iError As Integer
   Dim hFormula As Long
   Dim wFormulaLen As Integer
   Dim iCompileError As Integer
   Dim iCompileErrorLine As Integer
   Dim iCompileErrorColumn As Integer
   Dim iCompileErrorOffset As Integer
   Dim iCompileErrorLength As Integer
   Dim iArray(2) As Integer
   
   iError = NSFFormulaCompile(0, 0, _
   sFormula, _
   Len(sFormula), _
   hFormula, _
   wFormulaLen, _
   iCompileError, _
   iCompileErrorLine, _
   iCompileErrorColumn, _
   iCompileErrorOffset, _
   iCompileErrorLength)
   
   If hFormula <> NULLHANDLE Then
      Call OSMemFree(hFormula)
   End If
   
   If iError = ERR_FORMULA_COMPILATION Then
      iArray(0) = iCompileError
      iArray(1) = iCompileErrorOffset
      iArray(2) = iCompileErrorLength
      CheckSelectionFormulaValid = iArray
   Else
      iArray(0) = NO_ERROR
      iArray(1) = NO_ERROR
      iArray(2) = NO_ERROR
      CheckSelectionFormulaValid = iArray
   End If
   
End Function

Function GetAPIError(iErrorCode As Integer) As String
   
   Dim iRetVal As Integer
   Dim sError As String * 1024
   
   sError = String(1024, 0)
   
   iRetVal = OSLoadString(0&, iErrorCode, sError, 1023)
   
   If iRetval <> 0 Then
      GetApiError = Left$(sError, iRetVal)
   End If
   
End Function

In der Maske " Notification Profile" wird der Code dann in einer Aktion aufgerufen

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument
   iRC = CheckSelectionFormulaValid( uidoc.FieldGetText( "nFormula"  ))
   If iRC(0) = NO_ERROR Then
      Messagebox "Formula is valid!", 64 , "OK !"
   Else
      Messagebox GetAPIError(iRC(0)) & " - Pos: " & Cstr(iRC(1)), 16, "Error in Formula"
   End If
End Sub

Der Code plaudert nun bei einem Fehler im Klartext aus, an welcher Stelle der Fehler aufgetreten ist und vor allem, was denn da im Argen liegt. Coole Sache, Danke an Christian Cloutier !!

eknori (retired):
So, ich glaube, jetzt habe ich die Eskalation fertig für das Release der 1.0.10.

Es gibt grundsätzlich 2 Möglichkeiten, ein EscalationsProfil zu erstellen.

1. der klassische Weg

Es werden einfach die Felder entsprechend der Vorgabemaske ausgefüllt ( siehe weiter oben in diesem Thread )

2. user defined

Es kann eine beliebige Selektionsformel eingegeben werden ( Feld "Formula" ).

Diese Formel kann vor dem Speichern des Profils über den Buhtong "CheckFormulaSyntax" überprüft werden.
Sollte man diesen Schritt "vergessen" steht die Fehlermeldung im internen LOG und / oder im ServerLOG  ;)

Mit den Dokumenten, die man über die Selektionsformel ausgewählt hat, muss ja auch irgend etwas passieren.

Zum einen wird eine Benachrichtigung an die im Feld "Send Message To" verzeichneten Personen in der gewünschten Sprache verschickt. ( !! MailTemplates erstellen !! )

Zum Anderen können bestehende Felder mit neuen Inhalten gefüllt werden, oder neue Felder erstellt und diesen ein Wert zugewiesen werden.

Das geschieht im Feld "Stamp Documents"; links der Feldname, rechts der Wert.

Ist das so i.O. , oder gibt es hierzu noch Anregungen ? Braucht man 1. eigentlich ??

In einer späteren Version werde ich so etwas wie einen Formel Wizard einbauen, bei dem man sich seine Formel einfach nur zusammenklickt; ähnlich den Regeln im Serverdokument.

Das könnte man dan  so universell gestalten, daß man das Tool über jede DB stülpen kann, wo es um die "Überwachung" von Dokumenten geht und eine Benachrichtigung losgetreten werden soll, wenn Zustand XYZ erreicht ist ...

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln