Register 'Description' zur Laufzeit setzen

  • You do not have permissions to view this page - please try logging in.
Inhaltsverzeichnis
keine Gliederung

Version seit 11:43, 4 Jul 2026

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