Zum Inhalt springen

Power Automate-Tutorial: Werte automatisch aus smap-Datensatz in DSAB zurückschreiben


Gehe zur Lösung Gelöst von Moritz,

Empfohlene Beiträge

  • Lösung

In einem anderen Beitrag hier im Forum hatte @Wolfgang Kotzbeck danach gefragt, wie man die letzte Eingabe von Werten wieder in der smap merken/speichern kann. Dort wurden bereits mögliche Varianten diskutiert; ich hatte eine Variante skizziert, wie man den letzten Wert über die Aufgabenfunktion "transportieren" kann.

 

Eine weitere Möglichkeit wäre, dass man sich hierzu des Datensatzauswahlbausteins (kurz DSAB, siehe FAQ: Wie funktioniert der Datensatzauswahlbaustein?) bedient. Das Szenario ähnelt dem obigen – nach jeder Fahrt wird ein Kilometerstand erfasst, dieser soll für das Fahrzeug gespeichert werden; zusätzlich noch der letzte Fahrer – und sieht in etwa wie folgt aus:

0.thumb.jpg.703cb7174de69337e33bf979474d0b10.jpg

  1. Wir tragen den neuen Kilometerstand in der smap ein, außerdem wird der Fahrername automatisch über die angemeldete User-Emailadresse ({user:email}) ermittelt. Und zwar über die mehr als elegante Lösung von @Mr Smap😉
  2. Ein Webhook (muss initial einmal über die API eingerichtet werden, siehe FAQ) sendet den Datensatz an einen Automatismus-Dienst (z.B. Power Automate).
  3. Der Automatismus
    • nimmt den Webhook entgegen,
    • extrahiert aus den übermittelten Daten den neuen Kilometerstand und Fahrer,
    • beschafft die alten DSAB-Daten,
    • filtert hieraus den betroffenen Eintrag (anhand des Kennzeichens),
    • modifiziert in diesem Eintrag den KM-Stand und letzten Fahrer,
    • baut hieraus und mit den anderen DSAB-Daten wieder einen neuen Datenstand und
    • schickt diesen an die smapOne-API zurück (siehe FAQ) so dass die aktualisierten Daten dort wieder vorliegen.

Im Video ist das ganze sehr viel detaillierter aufgeführt und kann einfach nachgebaut werden. Auf Nachfrage stelle ich auch gerne den Flow als ZIP-Datei zum Herunterladen, Importieren und Nachvollzoehen bereit.

 

Fragen zum Video, zum Automatismus, zur smap und zu meinen Ausführungen hier gerne einfach direkt hier reinschreiben. Alternativ könnt ihr auch gerne direkt einen Kommentar auf YouTube unter dem Video hinterlassen. Auf diesem YouTube-Kanal ("smappetizer") wird es zukünftig weitere Deep Dive Tutorials geben, es lohnt sich also, den Kanal zu abonnieren 😉

  • Like 3
  • Verwirrt 1
  • Danke 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Lieber @Holger Sprenz, schön dass das Video einen Anreiz gegeben hat.
Bitte nicht aufgeben! Das tolle Gefühl wenn man sich da durchgebissen hat ist einfach unbeschreiblich 😄 Ich kenne den struggle selbst und freue mich jedes mal wie ein kleines Kind wenn ich den workaround oder die Aufgabe irgendwie lösen konnte. Das wie ich finde Schöne daran ist, dass man hier ja wirklich in kleinen Schritten langsam zum Ziel kommen kann. 🦸💪 

  • Zustimmung 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Holger Sprenz kann ich nachvollziehen. Selbst für technik-affine Nutzer ist Power Automate nicht immer ganz einfach; die Lernkurve ist steil. Wo genau wurdest du denn abgehängt im Video? Vielleicht kann ich das ja in einem Folgevideo nochmal besser/einfacher darlegen.

Hinweis: Ich werde mir grundsätzlich auch andere Engines/Tools als nur Power Automate ansehen und auf dem YouTube-Kanal (und dann natürlich auch hier) präsentieren. Vielleicht ist Power Automate auch nicht das geeignete Tool. Vielleicht finden wir alle ja mal ein Integrations-/Automatisierungstool, das so einfach funktioniert wie smapOne 😉

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Moritz ich versuche es mal zu erklären, aber ACHTUNG... ich bin Anfänger 🙂

Ab Minute 31, wenn ich in der API Documentation die DataSource/Definition/Values aufrufe, dann steht dort eine dataSourceID und auch dataSourceVersion einer anderen smap drin (für diese smap habe ich eine Datenabfrage in Excel eingerichtet).

Bis zu diesem Schritt scheint alles wunderbar zu klappen?

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Moritz vielen Dank für das Video!

Wir planen aktuell unsere Aufträge über ein DSAB in einer Smap zur Verfügung stellen.

Der Techniker vor Ort kann sich seine Aufträge auswählen und sich selber als Aufgabe schicken.

Elegant fände ich es, wenn sich die bereits geschickten Aufgaben in der Liste "sperren / löschen" würden.

 

Wenn wir im Monat allerdings ca. 2000 Aufträge abarbeiten, würde sich ja die Smap auch diese 2000-mal Updaten wenn ich deinem Video richtig folgen konnte.

- Würde das irgendwelche Probleme machen?

- Oder gibt es aus deiner Sicht hier noch alternative Lösungen die ein permanentes Updaten verhindern

Bearbeitet von Micha Zenke
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi @Micha Zenke,

vor 4 Stunden schrieb Micha Zenke:

Elegant fände ich es, wenn sich die bereits geschickten Aufgaben in der Liste "sperren / löschen" würden

nur für den Fall, dass du hier noch nicht weißt, wie du das realisieren kannst: hier einfach den Array Filter in Power Automate auf die Elemente filtern, die nicht dem bearbeiteten/gewählten Datensatz entsprechen. Aber ich meine herauszulesen, dass du das schon auf dem Schirm hast.

vor 4 Stunden schrieb Micha Zenke:

- Würde das irgendwelche Probleme machen?

Nein. Ihr müsst aber ggf. darauf aufpassen, dass ihr nur 60 API-Requests pro Minute ausführen dürft. Wenn ihr dieses Limit überschreitet, erhaltet ihr einen Fehlercode 429 von der API mit einer Angabe von Sekunden, wie lange zu warten ist, bis das Limit wieder frei ist (siehe Dokumentation).

image.thumb.png.8658cde290ed186252f8a12c6633141c.png

vor 4 Stunden schrieb Micha Zenke:

- Oder gibt es aus deiner Sicht hier noch alternative Lösungen die ein permanentes Updaten verhindern

Wenn ihr die Daten in die smap bringen wollt (bzw. Zeilen aus dem DSAB entfernen wollt), dann geht das nur über ein Update der smap, auch wenn das 2000 pro Monat sind. Ihr könntet natürlich in einer Art Zwischenspeicher oder Zwischendatenbank die gelöschten Zeilen "puffern" und das Update erst nach [x] gelöschten Zeilen ausführen. Aber so ein Zwischenspeicher würde das Verfahren natürlich entsprechen verkomplizieren. Und das entscheidet der Prozess, ob das überhaupt gangbar ist; es kann ja sein, dass ihr euch zeitlich keinen Puffer erlauben könnt/wollt.

Zu beachten ist indes, dass ihr bei 2000 Versionen pro Monat auf 24k Versionen pro Jahr kommt. Das kann u.U. zu Einbußen hinsichtlich der Performance kommen. Bitte besprich diesen Umstand einmal mit eurem Kundenbetreuer, wir haben für diesen Fall PowerShell-Scripte in der Hinterhand, mit denen alte Versionen gelöscht werden können.

  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 25.1.2023 um 12:00 schrieb Moritz:

Bitte besprich diesen Umstand einmal mit eurem Kundenbetreuer, wir haben für diesen Fall PowerShell-Scripte in der Hinterhand, mit denen alte Versionen gelöscht werden können.

Wie komme ich dann an die Daten der gelöschten Versionen?

In der API würde das ja gehen:

image.thumb.png.62678e3972022af928ce56b763771d60.png

Aber in der Webansicht für die Daten, sehe ich ja dann die Versionen nicht mehr.

image.png.d27c21eb9aa92468c75d1006b72f31d3.png 

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Philip Alvermann alte Versionen können nur gelöscht werden, wenn keine Datensätze für die zu löschende Version vorliegen.

In deinem Fall würde ich vermuten, dass schlichtweg keine Datensätze zu den vorherigen Versionen vorhanden sind? Kannst du das mal mit dem gezeigten API-Abruf ("Loads all data records for all versions of the smap") gegenchecken?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja für die Versionen sind keine Daten da.

Wie geht man dann also vor, wenn Daten da sind und man die nicht löschen möchte?

Ich denke nicht das wir auf auf 2000 Updates im Monat kommen werden, aber ein Update pro Tag kann dann schon vorkommen.
Die Major-Version wird sich auch nicht ändern, da sich nichts an der Struktur(Feldern) der DSAB's ändern wird.

Kann man die Versionen einer Major-Version zusammenführen da sich nichts an der Definition der Smap, bis auf den Inhalt des DSAB's geändert hat?

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Minuten schrieb Philip Alvermann:

Wie geht man dann also vor, wenn Daten da sind und man die nicht löschen möchte?

Entweder bleiben diese Versionen enthalten (wenn Sie die Datensätze dazu behalten möchten) oder du löscht zunächst die Datensätze und dann die Versionen. Versionen, zu denen du Datensätze behalten möchtest, kannst du nicht löschen.

 

vor 6 Minuten schrieb Philip Alvermann:

Ich denke nicht das wir auf auf 2000 Updates im Monat kommen werden, aber ein Update pro Tag kann dann schon vorkommen.

Das wird sich dann nicht umgehen lassen. Hinweis: Mit dem neuesten Release 1.117 wird nur dann eine neue Version für den DSAB erzeugt, wenn auch wirklich neue Daten vorliegen. Davor wurde immer eine neue Version erzeugt, auch wenn die Daten gleich waren, d.h. man musste die Prüfung auf Gleichheit im eigenen Automatismus vornehmen und nur bei Ungleichheit das Update durchführen.

 

vor 5 Minuten schrieb Philip Alvermann:

Kann man die Versionen einer Major-Version zusammenführen da sich nichts an der Definition der Smap, bis auf den Inhalt des DSAB's geändert hat?

Wie genau meinst du das? Einfach nur die Daten zusammenführen? Das könnte ja mit dem API-Abruf für eine Major-Version gelöst werden:

GET /Smaps/{smapId}/Versions/{majorVersion}/Data

Oder meinst du das nachträgliche Zusammenführen bzw. Migration von Minor-Daten in eine konsolidierte Major-Version? Das wäre ja eine nachträgliche Manipulation (konkret: der Versionsnummer), die unser System grundsätzlich nicht vorsieht (um stets einen revisionssicheren Datenstand zu haben).

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 40 Minuten schrieb Moritz:

Das wird sich dann nicht umgehen lassen. Hinweis: Mit dem neuesten Release 1.117 wird nur dann eine neue Version für den DSAB erzeugt, wenn auch wirklich neue Daten vorliegen. Davor wurde immer eine neue Version erzeugt, auch wenn die Daten gleich waren, d.h. man musste die Prüfung auf Gleichheit im eigenen Automatismus vornehmen und nur bei Ungleichheit das Update durchführen.

 

Das finde ich sehr cool, das spart viel Arbeit.

 

vor 40 Minuten schrieb Moritz:

Oder meinst du das nachträgliche Zusammenführen bzw. Migration von Minor-Daten in eine konsolidierte Major-Version? Das wäre ja eine nachträgliche Manipulation (konkret: der Versionsnummer), die unser System grundsätzlich nicht vorsieht (um stets einen revisionssicheren Datenstand zu haben).

Ja, genau das meinte, aber das hat sich ja dann erledigt. 

Am 25.1.2023 um 12:00 schrieb Moritz:

Das kann u.U. zu Einbußen hinsichtlich der Performance kommen.

Also bleibt einem nur die Wahl zwischen Daten löschen oder eventuell irgendwann ein Performance Problem?

Bearbeitet von Philip Alvermann
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 11 Minuten schrieb Philip Alvermann:

Also bleibt einem nur die Wahl zwischen Daten löschen oder eventuell irgendwann ein Performance Problem?

Richtig, genau so...

Man könnte hier die "Architektur" der smap und der umliegenden Systeme nochmal überdenken. Z.B. könnte hier ein Ausweg sein, dass man dem User nicht alle Stammdaten per DSAB zur Verfügung stellt, sondern ad hoc (z.B. aus einem Quellsystem wie ein ERP heraus) für die smap eine Aufgabe erzeugt, welche alle erforderlichen Daten beinhaltet.

Das lässt sich so natürlich nicht immer abbilden: Beim Kundenauftrag, bei dem der Kunde in der smap schon in eine Aufgabe voreingetragen wurde, weil ich weiß, welcher Kunde angefahren werden muss, funktioniert es noch. Für den Mechaniker, der aber vor Ort im Serviceeinsatz die verwendeten Materialien aus dem DSAB auswählt, geht das vorab Befüllen natürlich nicht...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

Hallo zusammen,

erstmal Dank an Moritz, für das tolle Video. Ich habe das mal in einer Smap bei uns nachgebaut und es hat funktioniert:)

Dennoch habe ich ein Problem/ Frage:

Ich möchte zwei Powerautomate Flows an eine Smap anbinden. Der eine Flow soll eine Mail über eine Unternehmensmailadresse von uns versenden, und der andere Flow halt die Datentabelle aktualisieren. Beide Flows laufen fehlerfrei und machen, was Sie sollen.

ABER: Ich habe für beide Flows ja eine andere HTTP-Post-URL, welche ich in smapOne unter  smaps/ Notification ablege. Leider habe ich es aber nicht geschafft, beide dort zu hinterlegen, da irgendwie nur eine zulässig ist. Je nachdem, welche ich zuletzt hinterlegt habe, dessen Flow wird angesprochen und läuft durch. 

Was kann ich machen? Kann mir jemand einen Tipp geben? Ist das überhaupt möglich? 

Viele Grüße

 

Christoph

 

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey @Christoph S. aus BOT, erstmal danke für die Blumen 🙂 Dein Problem kann ich nachvollziehen. Ich hatte auch schon mehrere Situationen, wo ich zwei Flows mit einer smap ansprechen wollte. Es gibt zwei Möglichkeiten, die ich hier spontan sehe:

Variante 1: Parallele Flow-Branches

In Power Automate können Prozessflüsse parallel existieren. Hierzu auf das Plus zwischen zwei Aktivitäten drücken und dann auf "Add a parallel branch" (bzw. entsprechender deutscher Text).

image.png.ba4d081f126896e52fa747150f8ba736.png

So können zwei inhaltlich verschiedene Prozesse abgebildet werden, so dass diese auch unabhängig voneinander laufen und nicht sequentiell durchlaufen.

Flow1.thumb.png.2532cb5d51166765c7cdd68415cf7bd8.png

Variante 2: Separater Flow, per HTTP getriggert

Die Alternative hierzu (die ich persönlich favorisiere und in der Regel auch so umgesetzt habe): Du richtest einfach einen zweiten, komplett "isolierten" Flow an. Diesen sprichst du aus deinem ersten Flow heraus ganz simpel über die HTTP-Action an und übergibst hierbei den kompletten Datensatz, der über den Webhook ankam:

image.png.a89282516e06a1ebf7c3804e6eb78b67.png

 

Flow2.thumb.png.c1106cffaaf24c90b9585467457442aa.png

Variante 2 eignet sich im Übrigen auch sehr gut dafür, wenn ich einen seeeeehr umfangreichen und komplexen Flow entzerren will: Hier kann ich dann einfach Stränge oder konkrete Prozessschritte in einen eigenen Flow auslagern, den ich dann nicht direkt über die smap, sondern über meine eigenen Flows anspreche.

  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...