Как добавить контекстные ссылки в сценарий программно
В настоящее время я изменяю скрипт импорта Simple VBA Excel для EA importer v4 от bellekens.
Я успешно импортировал сценарий использования, содержащий сценарии и этапы сценария. Я ищу способ добавить контекстные ссылки программно.
В настоящее время я добавляю их вручную, используя Свойства варианта использования> Правила> Сценарии> Контекстные ссылки.
Есть ли способ добавить ссылки на контекст тезисов из API?
2 ответа
Я нашел ответ на http://sparxsystems.com/forums/smf/index.php?topic=4735.0
В основном, если вы связываете актера со случаем использования, он отображается в таблице ссылок контекста.
чтобы создать запись программно, просто добавьте ссылки между вашим сценарием использования и актером программно.
Я на самом деле написал VBScript, который делает это. Он просматривает модель логического класса и добавляет к ней контекстную ссылку, если это имя класса используется на этапе сценария сценария использования.
Вот та часть, которая делает фактическое связывание:
function linkDomainClassesWithUseCases(dictionary,regExp,usecases)
Session.Output usecases.Count & " use cases found"
dim usecase as EA.Element
'loop de use cases
for each usecase in usecases
Repository.WriteOutput "Link to Logical Data Model", "Processing use case: " & usecase.Name, 0
'first remove all automatic traces
removeAllAutomaticTraces usecase
'get all dependencies left
dim dependencies
set dependencies = getDependencies(usecase)
dim scenario as EA.Scenario
'loop scenarios
for each scenario in usecase.Scenarios
dim scenarioStep as EA.ScenarioStep
for each scenarioStep in scenario.Steps
'first remove any additional terms in the uses field
scenarioStep.Uses = removeAddionalUses(dependencies, scenarioStep.Uses)
dim matches
set matches = regExp.Execute(scenarioStep.Name)
dim classesToMatch
set classesToMatch = getClassesToMatchDictionary(matches, dictionary)
dim classToMatch as EA.Element
for each classToMatch in classesToMatch.Items
Session.Output "scenarioStep.Uses before " & scenarioStep.Uses
if not instr(scenarioStep.Uses,"LDM-" & classToMatch.Name) > 0 then
if len(scenarioStep.Uses) > 0 then
'add a space if needed
scenarioStep.Uses = scenarioStep.Uses & " "
end if
'add the name of the class
scenarioStep.Uses = scenarioStep.Uses & "LDM-" & classToMatch.Name
end if
'create the dependency between the use case and the Logical Data Model class
linkElementsWithAutomaticTrace usecase, classToMatch
Session.Output "adding link between " & usecase.Name & " and Logical Data Model class " & classToMatch.Name & " because of step " & scenario.Name & "." & scenarioStep.Name
next
'save scenario step
scenarioStep.Update
scenario.Update
next
next
next
end function
function linkElementsWithAutomaticTrace(sourceElement, TargetElement)
dim trace as EA.Connector
set trace = sourceElement.Connectors.AddNew("","trace")
trace.Alias = "automatic"
trace.SupplierID = TargetElement.ElementID
trace.Update
end function