Hallo,
ich hatte das auf dem Community-Day gegenüber Christoph schon mal angesprochen, will es jetzt aber doch nochmal forcieren ;-)
Ich wünsche mir die Möglichkeit Funktionen zu schreiben - die dann nicht nur im selben Step in der selben Spalte nutzbar sind, sondern überall (nachdem sie definiert wurden).
Das macht die Wartung später einfacher. Bisher schreibe ich mir halt das Freemarker-Script, kopiere es in jede Spalte, und passe dann überall x-mal die entsprechenden Variablen/Spaltennamen an. Wenn ichs irgendwo übersehe, stimmen meine Ergebnisse natürlich nicht.
Beispiel aus der Praxis: im Flow SH_Kalkulation werden viele gleichförmige Berechnungen für mehrere Spalten ausgeführt, z.B. in Step 67:
Code Spalte FINAL_Amazon_MAX:
<#if (Result_Amazon_MAX_Modus?lower_case == "prozent")> ${Result_Amazon_MAX_Prozent} <#elseif (Result_Amazon_MAX_Modus?lower_case == "betrag")> ${Result_Amazon_MAX_Betrag} <#elseif (Result_Amazon_MAX_Modus?lower_case == "uvp")> ${NUM_UVP} <#else> UNKNOWN_MODE </#if>
Code Spalte FINAL_Webshop:
<#if (Result_Webshop_Modus?lower_case == "prozent")> ${Result_Webshop_Prozent} <#elseif (Result_Webshop_Modus?lower_case == "betrag")> ${Result_Webshop_Betrag} <#elseif (Result_Webshop_Modus?lower_case == "uvp")> ${NUM_UVP} <#else> UNKNOWN_MODE </#if>
Statt dessen würde ich gerne eine Funktion in diesem Stil schreiben:
function getFinalPrice (Modus, Prozent, Betrag, UVP) { if ($Modus == "prozent") { $this_column = $Prozent } else if ($Modus == "betrag") { $this_column = $Betrag } else if ($Modus == "uvp") { $this_column = $UVP } else { $this_column = "UNKNOWN_MODE" } }
Pseudocode, ihr versteht was ich meine...
Mein Spalteninhalt wird dann deutlich kürzer und übersichtlicher, in etwa:
getFinalPrice(Result_Webshop_Modus, Result_Webshop_Prozent, Result_Webshop_Betrag, NUM_UVP)
Das ist ein Einzeiler (ok, ist am Ende jedes Script, aber genau das macht es noch unübersichtlicher), ich änder da nur noch die Argumente, und fertig.
--------------------
Falls das irgendwann mal kommen sollte (ist klar dass das kein Simpelfeature ist...), hätte ich noch eine Bonus-Anregung:
Ich übergeb jetzt ja hier trotzdem vier Argumente. Wenn ich Spaltennamen geschickt wähle, mir mit Stringoperationen andere Spaltennamen generieren könnnte, und dann auf alle Spalten auch ohne dass sie Argumente sind frei zugreifen könnte, könnte man das ganze noch simpler gestalten. Beispiel:
function getFinalPrice (Type) { if (Result_{$Type}_Modus == "prozent") { $this_column = Result_{$Type}_Prozent } else if (Result_{$Type}_Modus == "betrag") { $this_column = Result_{$Type}_Betrag } else if (Result_{$Type}_Modus == "uvp") { $this_column = $UVP } else { $this_column = "UNKNOWN_MODE" } }
Jetzt könnte ich getFinalPrice("Webshop") aufrufen, und würde das selbe Ergebnis erhalten. Das wäre ein Träumchen =)
Grüße Daniel