Thanks Simon,
First, my appologies, I posted the same request under the Automation Interface forum since I didn't find your reply first. I guess this is where my first request should have been posted.
Regarding my problem, I guess the Element.Connectors Collection is read only. Anyway, here is my code (comments in French unfortunately).
var STRING_DEBUT_REGLE = "%%%";
var STRING_FIN_REGLE = "&&&";
var nbTotalReglesCreees = 0;
function CreeRequirements(monPaquetage)
{
var nbReglesCreees = 0;
// Récupère les Elements du paquetage sélectionné
var mesClasses as EA.Collection;
var mesSousPaquetages as EA.Collection;
var paquetageRegles as EA.Package;
Session.Output(" ");
Session.Output("Le Paquetage présentement modifié est: " + monPaquetage.Name);
Session.Output(" ");
mesSousPaquetages = monPaquetage.Packages;
paquetageRegles = mesSousPaquetages.AddNew("ReglesAffaire", "Package");
paquetageRegles.ApplyUserLock();
paquetageRegles.Update();
mesSousPaquetages.Refresh();
Session.Output("Paquetage de dépôt des Règles: " + paquetageRegles.Name);
mesObjets = monPaquetage.Elements;
//Itération à travers les Objets du Paquetage
Session.Output(" ");
Session.Output( "Début de l'itération à travers les Objets du Paquetage");
Session.Output(" ");
for (var i = 0; i < mesObjets.Count; i++ )
{
Session.Output("mesObjets.Count: " + mesObjets.Count);
Session.Output("variable i: " + i);
var objetCourant as EA.Element;
objetCourant = mesObjets.GetAt( i );
if (objetCourant.Notes != null && objetCourant.Type == "UseCase")
{
Session.Output("Objet présentement traité: " + objetCourant.Name);
var indexeDebutRegleCourante = objetCourant.Notes.indexOf(STRING_DEBUT_REGLE, 0);
var indexeFinRegleCourante = objetCourant.Notes.indexOf(STRING_FIN_REGLE, (indexeDebutRegleCourante + STRING_DEBUT_REGLE.length));
Session.Output("Indexe de la règle nouvelle règle: " + indexeFinRegleCourante);
Session.Output("Indexe de la règle courante: " + indexeDebutRegleCourante);
while(indexeFinRegleCourante != -1)
{
var regleCourante = objetCourant.Notes.substring(indexeDebutRegleCourante, indexeFinRegleCourante);
Session.Output("Règle courante: " + regleCourante);
var myRequirement as EA.Requirement;
myRequirement = paquetageRegles.Elements.addNew("RegleAffaires", "Requirement");
paquetageRegles.Elements.Refresh();
myRequirement.Notes = regleCourante;
myRequirement.Update();
Session.Output("myRequirement.Name: " + myRequirement.Name);
var myConnector as EA.Connector;
myConnector = paquetageRegles.Connectors.addNew("", "Association");
paquetageRegles.Connectors.Refresh();
myConnector.Update();
Session.Output("myRequirement.ElementID: " + myRequirement.ElementID);
Session.Output("objetCourant.ElementID: " + objetCourant.ElementID);
Session.Output("myConnector.Type: " + myConnector.Type);
myConnector.ClientID = myRequirement.ElementID;
myConnector.SupplierID = objetCourant.ElementID;
myConnector.Update();
Session.Output("myConnector.Type = " + myConnector.Type);
Session.Output("myConnector.Type: " + myConnector.Type);
Session.Output("myRequirement.ElementID: " + myRequirement.ElementID);
Session.Output("objetCourant.ElementID= " + objetCourant.ElementID);
Session.Output("myConnector.ClientID: " + myConnector.ClientID);
Session.Output("myConnector.SupplierID: " + myConnector.SupplierID);
indexeDebutRegleCourante = objetCourant.Notes.indexOf(STRING_DEBUT_REGLE, indexeFinRegleCourante + 1 );
indexeFinRegleCourante = objetCourant.Notes.indexOf(STRING_FIN_REGLE, indexeFinRegleCourante + 1);
Session.Output("Indexe début règle courante: " + indexeDebutRegleCourante);
Session.Output("Indexe fin règle courante: " + indexeFinRegleCourante);
}
}
}
Session.Output("Nombre de règles créées dans ce Paquetage: " + nbReglesCreees);
return nbReglesCreees;
}
function CreeRequirementsRecursif(monPaquetage)
{
var mesPaquetages as EA.Collection;
mesPaquetages = monPaquetage.Packages;
if(mesPaquetages.Count != 0)
{
for(var i=0; i < mesPaquetages.Count; i++)
{
nbTotalReglesCreees = nbTotalReglesCreees + CreeRequirementsRecursif(mesPaquetages.GetAt(i));
}
}
return CreeRequirements(monPaquetage);
}
//*****************************
Session.Output("Début du programme");
var monPaquetageSource as EA.Package;
monPaquetageSource = Repository.GetTreeSelectedPackage;
Session.Output("Le système va créer un objet Requirement pour toutes les Règles des commentaires du Paquetage **" + monPaquetageSource.Name + " ** et ses sous-paquetages");
CreeRequirementsRecursif(monPaquetageSource);
Session.Output( "Terminé!" );