Jump to content

Problem: Beim Kopieren von Smaps wird die selbe dataSourceId verwendet


Mats Matern
 Share

Recommended Posts

Moin 

Ich arbeite zur Zeit viel mit der RestAPI und mit mehreren gleichen Smaps gleichzeitig. 

Dabei ist mir aufgefallen dass bei Kopieren eines Smaps mit enthaltener Datenquelle die dazugehörige dataSourceId weiter verwendet wird. 
Dies klingt im Ersten Moment auch logisch da es sich um eine Kopie handelt. Jedoch sind die Kopien dann nicht voneinander unabhängig und teilen sich die selbe dataSourceId.

Auch das Ändern einzeln Datenquellen ändert das nicht. Sondern macht das Problem noch viel schlimmer. Es wird nämlich Kopien übergreifend die Datenquellen geändert. Sodass es keine Möglichkeit gibt unabhängige Kopien von Smaps zu erstellen. 

Die einzige Lösung um das zu umgehen, die ich sehe sind:

  • Umständlich per RestAPI neue Datenquellen zu erstellen diese dann neu zu verknüpfen.
  • Oder einen neuen Datensatz Baustein anlegen. Was kein Problem wäre wenn an diesem nicht x viele Bedingungen geknüpft wären.

Beides ist je nach Fall sehr aufwändig und löst das Problem nur teilweise.

 

Mein Vorschlag wäre:
Beim Kopieren eines Smaps: die Abfrage an den Nutzer ob eine neue Datenquelle(neue dataSourceId) erzeugt werden soll oder nicht. Oder so ähnlich.

 

Gruß 
Mats 

Link to comment
Share on other sites

Hallo @Mats Matern, ja es stimmt. Technisch gesehen wird der selbe DSAB in die kopierte smap übertragen.

vor 33 Minuten schrieb Mats Matern:

Jedoch sind die Kopien dann nicht voneinander unabhängig und teilen sich die selbe dataSourceId.

Das sollte aber im regulären Betrieb kein Problem darstellen. Wenn der eine DSAB verändert wird, wirkt sich das nicht auf den DSAB in der kopierten smap aus. Zwar ist es der selbe DSAB, aber es sind unterschiedliche Versionen, die in den jeweiligen smaps liegen.

vor 34 Minuten schrieb Mats Matern:

Es wird nämlich Kopien übergreifend die Datenquellen geändert. Sodass es keine Möglichkeit gibt unabhängige Kopien von Smaps zu erstellen. 

Nein, das ist – wie gerade bereits beschrieben – nicht richtig. Der DSAB kann für beide (oder mehr) smaps unabhängig voneinander betrieben werden. Was dabei aber auftreten wird ist ein Sprung in den Versionsnummern. Folgend ein Beispiel, um das zu veranschaulichen:

image.png.a93de8624cf691a1e7494e7b5bde08ce.png

Die beiden smaps haben dann halt einfach grundsätzlich verschiedene Datenstände. Und wenn jetzt nicht gerade jeweils per REST API der letzte Stand des DSABs ausgelesen werden soll (um die Daten z.B. zu manipulieren und den neuen Datenstand wieder hochzuladen, wie in meinem Power Automate-Beispiel), dann ist das unkritisch.

vor 57 Minuten schrieb Mats Matern:

Oder einen neuen Datensatz Baustein anlegen. Was kein Problem wäre wenn an diesem nicht x viele Bedingungen geknüpft wären.

Geht es um Aktivierungsregeln innerhalb des Bausteins? Oder geht es um "Folgeformeln" in der smap, die den DSAB referenzieren?

Link to comment
Share on other sites

Moin Danke für die schnelle Antwort

vor 16 Minuten schrieb Moritz:

Die beiden Smaps haben dann halt einfach grundsätzlich verschiedene Datenstände. Und wenn jetzt nicht gerade jeweils per REST API der letzte Stand des DSABs ausgelesen werden soll (um die Daten z.B. zu manipulieren und den neuen Datenstand wieder hochzuladen, wie in meinem Power Automate-Beispiel), dann ist das unkritisch.

Doch genau darum handelt es sich. 😅 Habe auch ein Programm geschrieben welches, wie in deinem Beispiel, Datenbanken live aktualisiert. Und dabei ist dann das Problem aufgetaucht. Habe es nun erweitert, dass Mehrere Smaps gleichzeitig betreut werden. Und da macht mir die selbe dataSourceId ein strich durch die Rechnung. 
Kann man das eventuell umgehen wenn man sich die jeweilige DataSourceVersion speichert ? Sieht das dann nur gleich aus ist es aber nicht ?

 

 

vor 18 Minuten schrieb Moritz:

Geht es um Aktivierungsregeln innerhalb des Bausteins? Oder geht es um "Folgeformeln" in der smap, die den DSAB referenzieren?

Ja aus der Datenbank werden direkt Verknüpfungen und Formeln generiert. Diese jedes mal neu machen ist ein heiden Aufwand und sehr Fehleranfällig image.thumb.png.88cd8b657750f379feb4422d40a720e3.png

  • Like 1
Link to comment
Share on other sites

Hallo @Mats Matern, ich gebe dir Recht: wenn der Baustein bereits umfangreiche Aktivierungsregel enthält, dann erscheint die Variante, den Baustein einfach gegen einen neuen auszutauschen (und dann mühselig die Konfiguration zu übertragen), nicht besonders attraktiv.

Ich habe aber eine erfreuliche Nachricht für dich: Im letzten Release 1.117 ist ein neues Feature eingeführt worden. Und zwar kann man nun bestehende DSABs verwenden, statt eine eigene Tabelle hochzuladen. Mit diesem Feature könntest du z.B. dein Problem wie folgt lösen:

  1. Du legst einen neuen DSAB an, in diesen lädst du deine gewünschten Zieldaten, die später im DSAB der kopierten smap liegen sollen. (Es ist egal, wo du den anlegst, ob in einer leeren smap oder in der gleichen smap.)
     
  2. Im nächsten Schritt wählst du deinen "kaputten" DSAB in der kopierten smap aus, klickst in den Bausteineinstellungen auf die Datenquelle und dann unten links im aufkommenden Dialog auf den Button "Datenquelle ändern".
    image.png.74774e9291ef8d1e7f08f554bd385e08.png
     
  3. Nun kommt ein Dialog auf, in dem du bestehende DSABs auswählen kannst. Achtung/Hinweis: Wenn du diesen in einer separaten smap eingeführt hast, teilen sich die smaps den DSAB danach natürlich entsprechend.
    image.png.c11ce2efe3c439255d16c2deb96c85f1.png

    Hier wählst du einfach den neu erstellten DSAB aus und deine beiden ursprünglichen smaps sollten jetzt zwei verschiedene, komplett losgelöste DSABs beinhalten.

Einige wichtige Hinweise dazu:

  • Da das Feature neu ist und ich diesen Vorgang noch nicht ausführlich getestet habe, kann ich nicht 100%ig garantieren, dass alles genau so funktioniert, alle Einstellungen übernommen werden usw. In sofern empfehle ich, das ganze mit Test-Kopien deiner smaps erstmal "trocken" zu testen.
  • Das Feature ist standardmäßig nicht für alle Kunden aktiviert, sondern muss manuell von uns für jeden Kunden aktiviert werden. Ich habe dies für eure gesamte Subscription durchgeführt, so dass du das testen und deine smaps so hoffentlich einfach reparieren kannst.
  • Wir würden uns natürlich sehr freuen, wenn du uns Feedback zu dem neuen Feature geben könntest (Was hat gut funktoniert, was hat doch nicht funktioniert? usw.).
  • Sollte jemand anders hier scharf auf dieses neue Feature sein, dann bitte einfach mal hier im Forum darum bitten (ihr könnt auch auf eure Kundenbetreuer zugehen und sie bitten, das Feature zu aktivieren).
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Moin @Moritz

Ja es hilft aufjedenfall. Danke 
Das Anlegen neuer Smap Kopien mit eigener DSAB geht jetzt. Jedoch ist es noch sehr mühselig. 

Würde mich immer noch sehr freuen wenn man beim Kopieren von Smaps auswählen könnte ob die DSAB behalten werden soll oder eine neue generiert wird.  

Außerdem hatte ich die Idee, das anlegen neuer Smaps mit der API zu automatisieren. Ginge das ?
 

-Neue Smap anlegen nach Tamplate | Sollte ja gehen aber weiß noch nicht ganz wie
-Neue DSAB anlegen✔️                       | Habe aber noch nicht gesehen wie ich die per API die der Smap übergebe.
 

Edited by Mats Matern
  • Like 1
Link to comment
Share on other sites

Hey @Mats Matern,

Am 1.2.2023 um 09:54 schrieb Mats Matern:

Würde mich immer noch sehr freuen wenn man beim Kopieren von Smaps auswählen könnte ob die DSAB behalten werden soll oder eine neue generiert wird.

Diese Info liegt der Entwicklungsabteilung vor. Ich teile diesen Wunsch.

 

Am 1.2.2023 um 09:54 schrieb Mats Matern:

Außerdem hatte ich die Idee, das anlegen neuer Smaps mit der API zu automatisieren. Ginge das ?

Ja klar! Der POST-Endpunkt /Smaps in der internen API dient genau diesem Zweck: "Create an empty app or create by a template".

POST /Smaps

https://platform.smapone.com/backend/intern/Smaps

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

smapLand

smapLand ist die größte Citizen Developer Bewegung der Welt. smapLand bietet Zugang zu Menschen und Inhalten. smapLand bringt dich und deine gesamte Organisation voran!

Mehr Infos

Links

Kontakt

Tel.:    +49 511 36734000
Mail:   beratung@smapone.com

×
×
  • Create New...