Einleitung
Diverse Services für DMAS
verwenden Named-Value Arrays für die Übergabe der Argumente an den
Service. Ein Named-Value Array-Eintrag besteht aus einem Bezeichner (Name)
und einem Wert (Value).
Beispiel
# Eintrag in einem Named-Value Array welcher den Bezeichner "DocumentId" mit dem Wert "24" enthält.
[ {"Name" : "DocumentId", "Value" : "24"} ]
# Eintrag in Named-Value Array welcher den Bezeichner "DocumentId" mit dem Wert "24"
# und den Bezeichner "DocumentCategoryId" mit dem Wert "10" enthält.
[ {"Name" : "DocumentId", "Value" : "24"}, {"Name" : "DocumentCategoryId", "Value" : "10"} ]
Reihenfolge
der Named-Value Array-Einträge
Die Reihenfolge in einem
Named-Value Array spielt keine Rolle.
# Es ist egal ob man den Array so bildet:
[ {"Name" : "DocumentId", "Value" : "24"}, {"Name" : "DocumentCategoryId", "Value" : "10"} ]
# oder so:
[ {"Name" : "DocumentCategoryId", "Value" : "10"}, {"Name" : "DocumentId", "Value" : "24"} ]
Problematik
F-Script
Die obigen Beispiele zeigen deutlich, dass eine
Anweisung mittels Named-Value Array sehr lang werden kann.
Damit man
in einem F-Script nicht extrem lange Zeilen schreiben muss, kann man einen
Named-Value Array über eine Subroutine bilden.
Beispiel: Named-Value Array über Subroutine
bilden
/headerreport
# Definition der BusRespose (Rückgabe-Objekt)
«X(DMS.Response=ResDocumentList)»
# Counter auf null (0) setzen
«X(dmsReq.ArgCount=0)»
# -------------------------------------------------------------------------------------
# Wertzuweisungen für Named-Value Array
# -------------------------------------------------------------------------------------
# 1) Argument erhöhen
«X(dmsReq.ArgCount=«(«X(dmsReq.ArgCount)\N»+1)\N»)»
# 2) Bezeichner "Name" definieren
«X(dmsReq.ArgName«X(dmsReq.ArgCount)»=DocumentId)»
# 3) Wert "Value" definieren
«X(dmsReq.ArgValue«X(dmsReq.ArgCount)»=24)»
# -------------------------------------------------------------------------------------
# Wertzuweisungen für den nächsten Named-Value Array-Eintrag
«X(dmsReq.ArgCount=«(«X(dmsReq.ArgCount)\N»+1)\N»)»
«X(dmsReq.ArgName«X(dmsReq.ArgCount)»=DocumentCategoryId)»
«X(dmsReq.ArgValue«X(dmsReq.ArgCount)»=10)»
# -------------------------------------------------------------------------------------
# Named-Value Array erzeugen
«/DMS.BuildRequestString»
# übergabe des Named-Value Arrays in den entsprechenden Service:
«/DMS.GetDocumentList»
/
/DMS.BuildRequestString
# Counter für die Bildung des Named-Value Arrays auf null (0) setzen
«X(dms.CountArg=0)»
# Loop bis X(dms.CountArg) = «X(dmsReq.CountArg)»
«REPEAT(4)»
# Counter erhöhen «X(dmsReq.CountArg=«(«X(dmsReq.CountArg)\N»+1)\N»)»
# Falls Inhalt, hinzufügen eines Komma (Separieren der Array-Einträge)
«nz X(dmsReq.ArgumentString)\I»«X(dmsReq.ArgumentString=«X(dmsReq.ArgumentString)», )»
# Werte von "Name" und "Value" hinzufügen
«X(dmsReq.ArgumentString=«X(dmsReq.ArgumentString)» {"Name" : "«X(dmsReq.ArgName«X(dmsReq.CountArg)»)»", "Value" : "«X(dmsReq.ArgValue«X(dmsReq.CountArg)»)»"})»
«nz X(dmsReq.CountArg)<«X(dmsReq.ArgCount)\N»\N»«LOOP(4)»
# Eckige Klammern [ ] hinzufügen (Array-Deklaration)
«X(dmsReq.ArgumentString>=[ «X(dmsReq.ArgumentString)» ])»
/
/DMS.GetDocumentList
# Request-Objekt (Anfrage) erzeugen mit Service DMS.GetDocumentList
«XSER(dmsListDocs:DMS.GetDocumentList)»
# Hinzufügen des Named-Value Arrays als Argument
«XSER(dmsListDocs:addArg=«X(dmsReq.ArgumentString)»)»
# Service ausführen > speichern der Response (Antwort) in Variable
«nXSER(dmsListDocs:execute>«X(DMS.Response)»)»
/