Lotus Notes / Domino Sonstiges > Help-Desk Applikation !!Help!!
Version 1.0.10 BETA 2
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