1) "Task 1" deve essere SEMPRE eseguito
2) "Task 2" viene eseguito SOLO SE l'espressione definita nel constraint che lo precede è valutata a true
3) "Task 3" viene eseguito se
a) "Task 1" ha finito con successo l'elaborazione e se l'espressione è valutata a false
b) "Task 1" ha finito con successo l'elaborazione e se l'espressione è valutata a true, ma in tal caso "Task 3" DEVE ATTENDERE l'esecuzione completata di "Task 2"
Per descrivere la situazione in altro modo "Task 3", dopo l'esecuzione di "Task 1", deve attendere anche l'esecuzione di "Task 2" solo se l'espressione sul constraint è true. Viceversa viene eseguito successivamente a "Task 1".
Non sono riuscito a trovare nulla che mi permettesse di usare solamente constraint, operatori logici ed expression. Questo lo lascio a voi e spero che possiate darmi delle dritte
.
Diciamo che una prima soluzione che può balzare all'occhio è quella con un outcome di Completion da "Task 2" a "Task 3".
Prima esecuzione, @Var = true:
Nel caso in cui la variabile sia a true, vengono eseguiti sia "Task 2" che "Task 3", solo dopo la corretta esecuzione di "Task 1". Quindi ok per 1), 2) e 3), punto b):
Seconda esecuzione, @Var = false:
Se però la variabile vale false viene eseguito solo "Task 1", quindi soddisfatto solo 1):
Il problema, come potete notare dalla seconda esecuzione, è che un task che NON viene eseguito NON dà outcome (Completion, Success, Failure). "Task 2" non viene eseguito poichè la variabile dell'espressione vale false.
Di conseguenza l'esecuzione si ferma prima di quanto ci si potrebbe aspettare.
La soluzione funzionante che ho trovato insieme a
Lorenzo è la seguente:
In entrambe le esecuzioni abbiamo ciò che era richiesto:
Esecuzione con @Var = true
Esecuzione con @Var = false
Come potete notare il container ci dà quello che ci serve. Certo, qualunque cosa può essere risolta con uno script, ma usando i task/constraint/expression proprietarie di SSIS, sapreste come migliorare il flow per ottenere ciò che serve? Ho postato questa soluzione semplicissima solo per sottolineare quanto a volte ci si accanisca nel cercare una soluzione con operatori e constraint quando utilizzando i container il tutto si risolva a un minuto di lavoro
.
Attendo vostre nuove
. Per ora mi accontento di questa soluzione
.
Stay Tuned!