Action "Flows löschen" mit Variablen

Post your questions and help other users.

Moderator: Martin

Post Reply
User avatar
Bingwu
Posts: 114
Joined: 26 Feb 2016 10:26

Action "Flows löschen" mit Variablen

Post by Bingwu » 24 Mar 2017 09:54

Hallo!

Ich habe Probleme mit der Action Flows löschen, wenn ich diese mit Variablen (Flow Namen Liste) nutzen will und der Flow-Name bestimmte (Sonder-)Zeichen (Anführungszeichen, Komma) enthält.
Grundsätzlich funktioniert mein Flow tadellos.

Ziel ist es alle Flows zu löschen welche nicht die Zeichenfolge [kE] (inklusive der Klammern) im Namen enthalten.

Zuerst erstelle ich mit einem Script eine Liste aller zu löschenden Flows. Dazu habe ich zwei verschiedene Varianten getestet. (Noch nicht das eigentliche Problem!)

Script - Variante A
flownamenliste = newList();
flownamenlistetemp = getFlowNames()
flownamenlistetemplaenge = length(flownamenlistetemp);
for (flownamenlistetempindex in [0 to flownamenlistetemplaenge-1])
{
if (not contains(flownamenlistetemp[flownamenlistetempindex], "[kE]"))
{
addElement(flownamenliste,flownamenlistetemp[flownamenlistetempindex])
}
};
flownamenlistelaenge = length(flownamenliste);
Script - Variante B
flownamenliste = newList();
flownamenlistetemp = getFlowNames()
flownamenlistetemplaenge = length(flownamenlistetemp);
for (flownamenlistetempindex in [0 to flownamenlistetemplaenge-1])
{
if (not contains(flownamenlistetemp[flownamenlistetempindex], "[kE]"))
{
addElement(flownamenliste,'"' + flownamenlistetemp[flownamenlistetempindex] + '"') // Anführungszeichen in Hochkomma
}
};
flownamenlistelaenge = length(flownamenliste);
Die erstellte Liste enthält in beiden Varianten auch exakt die Flows welche ich löschen will. Der Unterschied besteht nur darin, dass in der Variante B jeweils vor und hinter dem Flow-Namen Anführungszeichen eingefügt sind.
Das Auslesen der Liste der Flow-Namen habe ich auch getestet und bereitet keine Probleme.

Im Flow ist eine Action enthalten die den Index (Variable "flowzaehler") ab 0 hochzählt und eine Condition die den höchsten Index-Wert (Variable "flownamenlistelaenge - 1") abfragt.
Demnach steht in der Variable flownamenliste[flowzaehler] der Name des zu löschenden Flows.

Und dann kommt mein eigentliches Problem, das Löschen der Flows. :(
Bei Flow-Namen die die genannten (Sonder-)Zeichen beinhalten, steigt mir die Action "Flows löschen" mit einer Exception aus oder übergeht einfach den Flow-Namen.

Auch für die Action "Flows löschen" habe ich verschiedene Varianten getestet:

Action "Flows löschen" – Variante 1
{flownamenliste[flowzaehler]}
Action "Flows löschen" – Variante 2 (Anführungszeichen)
"{flownamenliste[flowzaehler]}"
Action "Flows löschen" – Variante 3 (Anführungszeichen + Hochkomma)
'"{flownamenliste[flowzaehler]}"'
Bei allen Kombinationen von Script und Action werden jedoch niemals Flows mit den genannten (Sonder-)Zeichen gelöscht.

Vielleicht ist die Lösung relativ einfach und es kann mir jemand weiterhelfen, denn mir hier fehlt das nötige Wissen ... und inzwischen sind mir auch die Ideen ausgegangen.

Gruss
Peter

User avatar
Martin
Posts: 4468
Joined: 09 Nov 2012 14:23

Re: Action "Flows löschen" mit Variablen

Post by Martin » 24 Mar 2017 21:11

Hi,

Eigentlich sollte es ausreichen, wenn du die Namen der zu löschenden Flows ohne spezielle Behandlung in eine Liste einfügst und danach die Liste löschst:
Script:

Code: Select all

flownamenliste = newList();
for (flowname in getFlowNames())
{
  if (not contains(flowname, "[kE]"))
  {
    addElement(flownamenliste,flowname);
  }
}
In der Action Flows löschen kannst du die Liste wie folgt angeben: {flownamenliste,listformat,comma}
So sollte Automagic Sonderzeichen wie Kommas und Anführungszeichen korrekt behandeln.

Freundliche Grüsse
Martin

User avatar
Bingwu
Posts: 114
Joined: 26 Feb 2016 10:26

Re: Action "Flows löschen" mit Variablen

Post by Bingwu » 25 Mar 2017 09:36

Hallo Martin!

Vielen Dank für deine Hilfe!
Ich hatte ja schon "befürchtet", dass es auch viel einfacher geht! :)
Und wieder habe ich etwas dazugelernt! Auf die Idee, getFlowNames() direkt auszulesen bin ich erst gar nicht gekommen ("Die Vorstellungskraft ist das Limit!") obwohl es an sich auf der Hand liegt!

Es funktioniert übrigens wunderbar!

Dabei ist mir aufgefallen, dass wenn ich meinen Flow aus der App-Oberfläche starte und die Action Flows löschen (> 200 Flows) ausgeführt wird, ich nicht das Display berühren darf.
Dann wird die App beendet, der Flow ist aber anscheinend vorher doch korrekt durchgelaufen. Das konnte ich auf einem LG Nexus 5 (Android 7.1.1, LineageOS, root) und einem Samsung Galaxy S7 edge (Android 7.0,Stock-ROM) feststellen.

Ich wünsche dir und deiner Familie ein schönes Wochenende!
Peter

Post Reply