SM-VIEW Connect - Value Pipeline
- 1 Funktionsdefintion
- 1.1 Beispiel
- 2 Service Objects
- 2.1 $svc_getObjects
- 2.1.1 Methoden
- 2.1.1.1 findObjects
- 2.1.1 Methoden
- 2.1 $svc_getObjects
- 3 Builtin Funktionen
- 4 Funktionsverknüpfung
In manchen Szenarien ist es beim Wert-Mapping notwendig nicht direkt Zeichen- oder Zahlenwerte in ein definiertes Kategoriefeld einzutragen sondern zuerst ein i-doit Objekt oder einen Dialogwert anhand des Schnittstellen-Quellwerts zu bestimmen und dann dessen ID Wert in das Feld zu schreiben.
So kommt zb. beim Telekom Adapter für jedes Unternehmen eine etwas andere Konfiguration bei dem Feld Kostenstelle und Kostenstellen-User heraus und diese Werte müssen auf ein i-doit Personenobjekt gematched werden.
Um dieses individuelle Vorgehen zu ermöglichen gibt es im SM-VIEW Connect Addon das Konzept der Value Pipeline.
Die Anwendung der Value Pipeline besteht aus 2 Teilen, 1. der Funktionsdefinition und 2. der Funktionsverknüpfung.
Funktionsdefintion
Im Navigationsbereich des Addons muss der Menüpunkt Value Pipeline/Funktionen unterhalb von Management aufgerufen werden.
Auf der rechten Seite können nach belieben neue Funktionen hinzugefügt werden die anhand eines Eingabewertes einen Ausgabewert berechnen.
In einer Funktionsdefinition kann normaler PHP Code geschrieben werden, aber einige Funktionen die das System negativ beeinflussen könnten sind verboten.
Der Rückgabewert (return) sollte entweder direkt durch den Import Prozess verarbeitbar sein (zb ein String oder eine Zahl/ID) oder von einer anderen Funktion in einer Pipeline verstanden werden.
Beispiel
get_person_by_kürzel
<?php
if(is_array($value)) return $value;
//in der globale variable $value befindet sich das Rohergebnis des Api Requests
//(oder der Rückgabewert der vorherigen Pipelinefunktion) -> hier das Kürzel
//find person
$ids = $svc_getObjects->findObjects(53, [[
'comparison' => '=',
'property' => 'shd_kuerzel',
'category' => 'C__CATG__CUSTOM_FIELDS_SHD_MITARBEITER',
'value' => $value,
]]);
if(count($ids) == 0) {
return null;
}
return $ids[0];
Im o.g. Beispiel ist bei den Telekom Mobilfunkverträgen das interne Kürzel der Mitarbeitenden eingetragen welche den Vertrag besitzen. Bei der Zuweisung des Vertrags zu den Mitarbeitenden in i-doit muss dafür das korrekte Personen-Objekt identifiziert werden.
Hier im Beispiel ist es so eingestellt dass am Objekttyp “Person” eine Custom Kategorie C__CATG__CUSTOM_FIELDS_SHD_MITARBEITER
erstellt wurde die ein paar firmenspezifische Eigenschaften zu den Mitarbeitenden hält. Im Feld shd_kuerzel
befindet sich eben jener Identifier. Die 53
ist die ID des Objekttyps “Person”.
Über den in das System eingebauten Service $svc_getObjects
können anhand von mehreren Kriterien ein oder mehrere Objekte aus der i-doit Datenbank gefunden werden.
Hier wird die Rückgabe des Servicecalls überprüft ob 0 oder mehr IDs gefunden werden; wenn 0 dann gib aus der Funktion null
zurück, ansonsten das erste Array-Element (die ID der gefunden Person).
--
In diese Funktionsdefinitionen werden automatisch bestimmte Variablen eingefügt:
$value
Der Wert der aktuell als Eingabewert zur verfügung steht. Das kann entweder der Quellwert aus der Schnittstelle sein oder ein Ausgabewert einer zuvor ausgeführten Value Pipeline Funktion.
$context
Enthält die komplette “Zeile” des aktuellen Schnittstellenoutputs.
$svc_getObjects
Ist ein Service Objekt welches Zugriff auf die i-doit Datenbank erlaubt, hier im speziellen: Suche nach Objekten eines angegebenen Objekttyps und bestimmten Kriterien/Kategoriewerten. Intern wird dafür die SM-View Query Api zur Suche verwendet.
Service Objects
$svc_getObjects
$svc_getObjects
kann nach Objekten suchen.
Methoden
findObjects
findObjects(<objekttyp id>, <array von such-conditions>): array
Die formatierung von search-conditions kann im Bereich der SM-View Query Api nachgelesen werden.
Die Methode gibt ein array von Objekt-ids zurück (oder ein leeres array).
Builtin Funktionen
Um ein paar oft gebrauchte Szenarien einfach zu unterstützen sind diese Funktionen bereits eingebaut:
date_time
Wandelt den Eingabewert (sofern möglich) in ein i-doit verwertbares Datum (mit Zeitanteil)
date
Wandelt den Eingabewert (sofern möglich) in ein i-doit verwertbares Datum (ohne Zeitanteil)
array0
Wenn der Eingabewert ein array ist dann gibt die Funktion das Element an Index 0 zurück
Funktionsverknüpfung
Für jeden Wert der durch eine Value Pipeline laufen soll muss diese im Mapping Editor konfiguriert werden. Dabei können beliebig viele Funktionen miteinander kombiniert und nacheinander ausgeführt werden um den Wert weiter zu verarbeiten und Bausteine in verschiedenen Szenarien wiederzuverwenden.
öffnet den Pipeline Editor
neue Pipeline Elemente hinzufügen und Reihenfolge verändern
Pipeline testen
Im Bild wird der Quellwert “FKA” zuerst durch die oben beschriebene Funktion get_person_by_kürzel
geschickt (welche ein Array zurückgibt) und dann noch einmal durch die Funktion array0
um das erste Element zu erhalten. Nach Klick auf den Test Button erhält man als Ergebnis die ObjektID der Person.
Der Pipe in array0
ist nur notwendig wenn (anders als im og. Beispiel) direkt das Ergebnis von findObjects()
zurückgegeben wird und nicht nach der Anzahl der Ergebnismenge geschaut wird.
Beim Import wird nun statt dem Quellwert “FKA” die richtige ObjektID der Person in das Zielfeld eingetragen.
(c) 2024 SHD System-Haus-Dresden GmbH | Impressum https://www.shd-online.de/impressum/