Register 'Description' zur Laufzeit setzen

    Inhaltsverzeichnis
    keine Gliederung

    Version seit 13:38, 27 Dez 2024

    zu dieser Version.

    Zurück zu Versionshistorie.

    Zeige aktuelle Version

    Die Beschreibung eines Antrags ist im Pre-Prozess u.U. nicht vollständig berechenbar, da Informationen zu Unteranträgen nicht aufgenommen werden können, da diese ja noch nicht gestartet wurden.

    Es gibt daher eine Elementar-Operation 'NSDispatcher.Dispatcher.OMSetRegister'. Mit dieser kann auch im Post-Process noch nachträglich der Wert eines Registers als VBScript oder Powershell-Script berechnet und gesetzt werden. Üblicherweise stellt man diese EO ans Ende eines Mantelantrags und kann dann zum Abschluß die Resultate aller Unteranträge analysieren und in die Description übernehmen:

     

    Bild-1

    Für das VBScript-Register könnte der Code, der rekursiv alle Freigabeinformationen ausgibt wie Folgt aussehen:

    set oHDB = CreateObject("HDBCom.ComHDB")
    oHDB.Hostname = "{Request.DBServer}"
    oHDB.Database = "{Request.Database}"

    wscript.echo Replace("{Description}:vbCRLF^|:","|",vbCRLF) & vbCRLF & GetConfirmationStatus(@RequestId)

    function GetConfirmationStatus(iRequestId)

     set oNTADM = oHDB.GetNTADM()
     set oRequest = oNTADM.GetRequest(iRequestId)
     s = "Antrag " & oRequest.Id & " - " & oRequest.GetRegisterValue("display") & ":" & vbCRLF
     for each oConfirmation in oRequest.Confirmations()
      for each oConfirmationDetail in oConfirmation.ConfirmationDetail
       User = oHDB.HDBQuery("FullAccount=" & oConfirmationDetail.FullAccount & ")|.GetDisplay()")
       if User = "" then
        User = oConfirmationDetail.FullAccount
       end if
       select case UCase(oConfirmationDetail.ConfirmStatus)
        case "ACKNOWLEDGED"
         sInfo = sInfo & "Antrag wurde am " & oHDB.FormatDateTime( oConfirmationDetail.ConfirmDate, "dd.MM.yy hh:mm") & " bestätigt von " & User & vbCRLF
         if oConfirmationDetail.ConfirmReason <> "" then
          sInfo = sInfo & "Begründung: " & oConfirmationDetail.ConfirmReason
         end if
        case "TOSTEP"
         sMore = sMore & "Antrag ist noch zu weiter zu führen von " & User & "!"
        case "TOCONFIRM"
         sMore = sMore & "Antrag ist noch frei zu geben von " & User & "!"
        case "DEFEATED"
         sInfo = sInfo & "Antrag wurde am " & oHDB.FormatDateTime( oConfirmationDetail.ConfirmDate, "dd.MM.yy hh:mm") & " abgelehnt von " & User & vbCRLF
         if oConfirmationDetail.ConfirmReason <> "" then
          sInfo = sInfo & "Begründung: " & oConfirmationDetail.ConfirmReason
         end if
       end select
      next

      if sInfo = "" then
       s = s & sMore
      else
       s = s & SInfo
       if instr(ucase(oConfirmation.UserGroupList), "AND") then
        s= s & sMore
       end if
      end if
     next

     for each oSubRequest in oRequest.GetSubRequests
      s = s & vbCRLF & GetConfirmationStatus( oSubRequest.Id )
     next

     GetConfirmationStatus = s
    end function

     Anbei der Mantelantrag als XML-Datei zum Download:

    /@api/deki/files/10/=Unicat.Sample.SetRegisterValue_3418_8.xml

    Unterstützt von MindTouch Core