Autor Thema: workflow erstellen  (Gelesen 3163 mal)

Offline koscc

  • Frischling
  • *
  • Beiträge: 5
workflow erstellen
« am: 15.10.10 - 14:50:07 »
hallo

ich muss ein neues workflow erstellen und einer bestimmten person zuweisen.

kann mir da einer bitte sagen wie ich das machen kann.

danke

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #1 am: 15.10.10 - 14:57:27 »
Hallo,

Ein paar mehr Infos waeren sehr hilfreich.
(wo soll der WF implementiert werden, was sol er alles koennen, ist es eine eigene Db/Applikation)


Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #2 am: 15.10.10 - 15:04:50 »
An sich ist das ja recht einfach - hier mal ein Beispiel  ;)

Code
Function SpecialVacationRequestMake (bIsInteractive As Integer, docRequest As NotesDocument, szErrorMessage As String) As Integer
    '==================================================================================================================================
    ' Purpose:        Sets the current Vacation request document into the workflow status WFSTATUS_REQUESTED.
    '---------------------------------------------------------------------------------------------------------------------------------
    ' Arguments:
    '                    bIsInteractive - True for frontend, False for backend
    '                    docRequest - the request document to discard
    '                    szErrorMessage - by reference store a possible error message
        '---------------------------------------------------------------------------------------------------------------------------------
    ' Returns:        True, if the action succeeded, False otherwise
        '---------------------------------------------------------------------------------------------------------------------------------
    ' Created by:      Bernhard Koehler on 29.08.2010                                        Modified by: 
        '---------------------------------------------------------------------------------------------------------------------------------
    ' Notes:            ALL FIELDS MUST BE ALREADY VALIDATED! THIS ROUTINE IS ONLY USED FOR VACATION REQUESTS!
        '---------------------------------------------------------------------------------------------------------------------------------
    ' Changes:        
    '==================================================================================================================================
    
    Dim docContingent As NotesDocument
    Dim docWFSetup As NotesDocument
    Dim docSetup As NotesDocument
    Dim szRequester As String
    Dim szCurrentYear As String
    Dim vRLDDates As Variant
    Dim vRLDNames As Variant
    Dim dblWorkingDaysNo As Double
    Dim dblRemainingDays As Double
    Dim dblTakenHolidays As Double
    Dim dblPlannedHolidays As Double
    Dim szTopLevelDecisionRule As String
    
    
    On Error Goto ErrorRoutine
    
    SpecialVacationRequestMake = False
    
    szRequester = docRequest.Requester (0)    
    
    
    'For this action we need the contingent document for the current year:
    szCurrentYear = Cstr (Year (docRequest.StartDate (0)))
    
    'First, make a lookup for an proofed contingent document:
    Set docContingent = GetContingentDocument (bIsInteractive, szRequester, szCurrentYear, szErrorMessage)
    If docContingent Is Nothing Then
        szErrorMessage = "No proofed contingent document found for " & ConvertNames (CN, szRequester) & " / " & szCurrentYear
        If bIsInteractive = True Then
            Messagebox szErrorMessage, MB_ICONINFORMATION, "Missing contingent"
        End If 'of "bIsInteractive = True "
        Exit Function
    End If
    
    'Is this a proofed contingent ?
    If docContingent.Reviewed (0) <> "1" Then
        szErrorMessage = "No proofed contingent document found for " & ConvertNames (CN, szRequester) & " / " & szCurrentYear
        If bIsInteractive = True Then
            Messagebox szErrorMessage, MB_ICONINFORMATION, "Missing contingent"
        End If 'of "bIsInteractive = True "
        Exit Function
    End If
    
    'Is the requested year already closed ?
    If docContingent.YearClosed (0) = "1" Then
        szErrorMessage = "The year " & szCurrentYear & " was already closed for " & ConvertNames (CN, szRequester) &_
        " no request is possible for this year!"
        If bIsInteractive = True Then
            Messagebox szErrorMessage, MB_ICONINFORMATION, "Year closed"
        End If 'of "bIsInteractive = True "
        Exit Function
    End If
    
    'Read again necessary values from the contingent document:
    docRequest.StaffNumber = docContingent.StaffNumber
    docRequest.WorkingDays = docContingent.WorkingDays    'The list of weekdays this person has to work
    
    
    'Check the WorkingDaysNo again:
    dblWorkingDaysNo = GetWorkingAndRedLetterDays (docRequest.StartDate (0), docRequest.EndDate (0), docRequest.Region (0), _
    docRequest.WorkingDays, vRLDDates, vRLDNames)
    
    If dblWorkingDaysNo < -1 Then
        szErrorMessage = "Error in calculating the working days!"
        If bIsInteractive = True Then
            Messagebox szErrorMessage, MB_ICONINFORMATION, "Error"
        End If 'of "bIsInteractive = True "
        Exit Function
    Else
        If dblWorkingDaysNo = 1 Then
            'Check if there is a splitted working day:
            If Isnumeric (docRequest.WorkingDaySplitted (0)) Then
                dblWorkingDaysNo = dblWorkingDaysNo * Cdbl (docRequest.WorkingDaySplitted (0)) / 10
            End If
        End If
        docRequest.WorkingDaysNo = dblWorkingDaysNo
        docRequest.RLDDates = vRLDDates
        docRequest.RLDNames = vRLDNames
    End If
    
    'Check if there are enough holidays left before this request can be made. We respect the following status:
    '    - Requested
    '    - Approved
    '    - Requested - cancelation
    '    - Cancelation rejected
    If docRequest.Form (0) = "Vacation" Then                        'Check only in case of holiday requests !
        dblRemainingDays = CalculateRemainingHolidays (bIsInteractive, docRequest.Requester (0), Cstr (Year (docRequest.StartDate (0))), dblTakenHolidays, dblPlannedHolidays, szErrorMessage)
        If dblRemainingDays - dblWorkingDaysNo < 0 Then
            szErrorMessage = "This request can't be made - only " & Cstr (dblRemainingDays) & " vacation days are left."
            If bIsInteractive = True Then
                Messagebox szErrorMessage, MB_ICONEXCLAMATION, "Not enough remaining days"
            End If
            Exit Function
        End If
    End If 'of "If docRequest.Form = "RequestHoliday""
    
    
    '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    'The following lines are normally done by "CommonRequestMake!"
    '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    'Get the workflow status document:
    Set docWFSetup = GetWFSDocument (bIsInteractive, docRequest.ApplicationID (0), WFSTATUS_REQUESTED, szErrorMessage)
    If docWFSetup Is Nothing Then Exit Function
    
    Set docSetup = GetSetupDocument (bIsInteractive, "", szErrorMessage)
    If docSetup Is Nothing Then Exit Function
    
    'Get the TopLevelDecisonRule from the application global setup document:
    szTopLevelDecisionRule = docSetup.TopLevelDecisionControl (0)
    
    'Ensure the correct decision makers:
    Call UpdateVacationDecisionWorkflow (docRequest)
    docRequest.DecisionMakersRemaining = docRequest.DecisionMakersAll
    
    If SetWorkflowStatus (bIsInteractive, docRequest, docWFSetup, szErrorMessage) = False Then
        szErrorMessage = "Making of your request failed!"
        If bIsInteractive = True Then
            Messagebox szErrorMessage & MSG_INFORM_ADMIN, MB_ICONEXCLAMATION, "Error"
        End If
        Exit Function
    End If
    
    docRequest.RequestDate = Now
    
    Call AddSpecialReaders (docRequest)
    
    'If we reach this position the action succeeded:
    SpecialVacationRequestMake = True
    
    Exit Function
    
ErrorRoutine:
    Call ErrorHandler ("SpecialVacationRequestMake")
    Exit Function    
End Function
« Letzte Änderung: 15.10.10 - 17:04:54 von koehlerbv »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #3 am: 15.10.10 - 17:07:37 »
Hallo Bernhard,

das ist aber recht umständlich, oder? In COSMOS haben wir das viel einfacher gemacht:

Sub Click (Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument
   Call ButtonWorkflow (uidoc, 0)
End Sub

Ich hoffe, die Antwort entspricht dem Niveau der Frage ...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #4 am: 15.10.10 - 17:11:57 »
Peter: Ja!  ;)

Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #5 am: 15.10.10 - 17:22:48 »
@Peter: Das sieht mir immer noch sehr kompliziert aus.
Bei mir habe ich nur ein

Code
Sub Click (Source As Button)
   Dim wf as New Workflow("Reisekosten")
   call wf.process
End Sub
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #6 am: 15.10.10 - 18:06:10 »
Hallo Ulrich,

da machst Du Dir das aber sehr einfach. Wenn der Kunde dafür schon ein kleines EFH abdrücken muss, sind zwei Zeilen doch ein bißchen wenig, oder?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #7 am: 15.10.10 - 23:10:18 »
Peter, Du musst aber auch bedenken, dass es bestimmt sehr viel Aufwand bedeutete, dies bis dato unbekannte Objekt "Workflow" zu entdecken! Und das war ja nur der kleinere Teil des Aufwands - die Methode "Process" wollte auch erst einmal gefunden werden ...
Was hättest Du gemacht, wenn Du der Entdecker gewesen wärst? By the way - wie konntest Du Dir überhaupt den Umzug nach Norwegen leisten? Welche Notes-Geheimnisse verbirgst Du noch vor uns?

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #8 am: 15.10.10 - 23:23:26 »
Du hast völlig recht, da habe ich mal wieder Quantität mit Qualität verwechselt.

Sorry Ulrich, wirklich eine reife Leistung. Da hattest Du doch bestimmt einen Tipp von AtNotes, oder?

Zu dem Rest von Bernhards Beitrag sage ich nichts  :-X

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: workflow erstellen
« Antwort #9 am: 16.10.10 - 08:05:17 »
Hallo koscc,

nun haben wir uns lange genug auf Deine Kosten lustig gemacht, kommen wir mal zum Ernst der Lage zurück. Deine Frage ist so nicht zu beantworten. Du solltest wenigstens ein paar Rahmenbedinungen nennen:

Bist Du Anwender und sollst etwas durchführen?
Bist Du Entwickler und sollst etwas erstellen?
Oder bist Du Admin und sollst etwas einrichten?

Da Du das Thema unter Administration & Userprobleme eingestellt hast, könnte man meinen, es hätte nichts mit Entwicklung zu tun. Also bist Du bei dem Problem Admin oder Anwender. Um welche Anwendung handelt es sich? Was ist Deine Aufgabe?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz