| « SSIS API #5 : Ajout des Sort Component et liaison aux prédécesseurs | SSIS API #3 : ConnectionManager & OLE DB Source » |
SSIS API #4 : Multicast & IDTSPath
Dans notre processus, nous souhaitons exporter des faits, ainsi que les données de références qui y sont rattachées.
Cela suppose donc de gérer deux flux :
- Un qui pilotera l'export des produits
- Un qui sera le « dump » des faits
Dans cette optique, un multicast nous permettra de rattacher 2 flux à notre source.
Sa définition est assez triviale, et suit la même logique que la définition de la source de données, modulo, la classe à monter bien entendu.
private wrapper.IDTSComponentMetaData100 _multicast1;
private wrapper.CManagedComponentWrapper _multicastInstance1;
private wrapper.IDTSPath100 _path1;
private void addMulticast()
{
/* Instanciate a multicast component */
_multicast1 = _mainpipe.ComponentMetaDataCollection.New();
_multicast1.ComponentClassID = "DTSTransform.Multicast";
_multicastInstance1 = _multicast1.Instantiate();
_multicastInstance1.ProvideComponentProperties();
_multicast1.Name = "MLT FactInternetSales";
/* Add paths and link oledb source to multicast component */
_path1 = _mainpipe.PathCollection.New();
_path1.AttachPathAndPropagateNotifications(_oledbDatasource.OutputCollection[0], _multicast1.InputCollection[0]);
}
Quelques commentaires sur ce que nous faisons dans cette méthode :
Tout d'abord l'objet multicast n'a pas de propriétés particulières.
Ce qui est important c'est que nous tirons aussi un trait entre la source données (cf. précédent article), et notre nouveau composant.
Pour cela, nous créons un IDTSPath (chemin). Nous lions ensuite un composant, et plus particulièrement son output ( _oledbDatasource.OutputCollection[0] ) vers un autre composant en pointant cette fois-ci vers son input (_multicast1.InputCollection[0]), avec la méthode AttachPathAndPropagateNotifications .
Cette méthode comme son nom l'indique attache ces deux composants en termes de IDTSPath, mais surtout propage les métadonnées (les colonnes et leur type) d'un composant vers l'autre, et notifie les changements de métadonnées.
Il faudra donc bien garder à l'attention ces Path et veiller à alimenter correctement pour propager les flux de données.
