Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Inhalt
minLevel1
maxLevel6
outlinefalse
stylenone
typelist
printabletrue

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.

image-20240614-090637.png

image-20240614-091331.png

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

Codeblock
<?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
return$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 53ist 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
Codeblock
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 um(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.

image-20240617-114949.pngImage Added
  1. öffnet den Pipeline Editor

  2. neue Pipeline Elemente hinzufügen und Reihenfolge verändern

  3. 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.