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