Limitazione del componente "Web Service Task" - Integration Service
Il problema cui mi sono trovata di risolvere è stato quello di fruire di un servizio web messo a disposizione da un'altra azienda.
Per configurare il componente mi ha fornito il contratto (file wsdl), che segue le raccomandazioni del W3C, ma questo non è bastato per configurare il componente WebServiceTask preposto proprio per questo compito.
Se parto da un web service creato dalla mia macchina, usando un progetto microsoft e che in input richiede un parametro di tipo semplice come può essere una stringa o un float, tutto va a buon fine.
Se invece utilizzo il web service che richiede in input una lista di parametri in numero variabile e con tipologia complessa (es. struct {string, string, float}), la configurazione dello stesso si blocca alla selezione del metodo esposto, ma non permette di inserire i parametri di input.
Il problema l'ho risolto ma utilizzando la programmazione in VisualBasic attraverso il componente ScriptTask.Nello ScriptTask si sono aggiunti gli opportuni reference e il codice autogenerato da un'applicazione messa a disposizione da Microsoft "WSDL.exe" (vedi http://msdn2.microsoft.com/it-it/library/7h3ystb6(VS.80).aspx)
Esempio:
c:\> wsdl <path_wsdl> language:"VB"
Ma utilizzando questo componente si è persa tutta la facilità e la comodità del WebServiceTask, in più si deve eseguire tutta la gestione del salvataggio dell'output del service o attraverso l'uso di variabili all'interno del DTS o accodandole in un file nel caso anche la struttura dell'output sia strutturato in modo complesso e con un numero di item variabile.