DMAS-Services

Named-Value Arrays

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)»)»
/