Sparx Enterprise architect Создание базовой линии с использованием powershell - PullRequest
0 голосов
/ 23 октября 2018

Я хочу автоматически создать базовую линию для каждого проекта в своем проекте корпоративного архитектора с помощью PowerShell.

Как создать базовую линию из PowerShell?

Мой коддо сих пор получают все модели высокоуровневых пакетов IE, для которых я хочу создать новую базовую линию.

$conString = "private connection string"


## implementation do not chage
add-type -path “C:\Program Files (x86)\Sparx Systems\ea\Interop.EA.dll”
$ea = New-Object -ComObject EA.Repository

$ea.OpenFile($conString);

function Process-Packages($packages)
{
  if(!$packages) { throw [System.ArgumentNullException]::new('packages'); }
  if(0 -ge $packages.Count) { return; }

    ## create a baseline for each package
}

foreach($model in $ea.models) 
{ 
  Process-Packages $model.packages;
}

$ea.CloseFile();
$ea.Exit();

Обновление: При использовании VS я нашел объект, который ищунаходится под EA.ProjectClass , который предоставляет соответствующие функциональные возможности для создания пакета:

public virtual bool CreateBaseline(string PackageGUID, string Version, string Notes)
    Member of EA.ProjectClass

Summary:
Creates a baseline on the specified package.

Attributes:
[System.Runtime.InteropServices.DispIdAttribute(66)]

и существует относительная реализация getbaselines

public virtual string GetBaselines(string PackageGUID, string ConnectString)
    Member of EA.ProjectClass

Summary:
Returns an xml string containing the list of guids available for that package.

Attributes:
[System.Runtime.InteropServices.DispIdAttribute(65)]

1 Ответ

0 голосов
/ 23 октября 2018

Хорошо, после прохождения интернет-dll я нашел ответ на свой вопрос.

Решение довольно простое, но попасть туда было больно.

Обратите внимание, не все поля, такие как Автор, заполняются, и для его полного использования требуется дополнительная работа. Этот процесс обходит настроенную защиту для пакетов.

RAW Реализация скрипта

add-type -path “C:\Program Files (x86)\Sparx Systems\ea\Interop.EA.dll”
$ea = New-Object -ComObject EA.Repository

$ea.OpenFile("private db connection string");

foreach($model in $ea.models) 
{ 
    $eaProject = $ea.GetProjectInterface()
    $eaProject.CreateBaseline($model.PackageGUID,"9.9.9","PowerShell generated")
}

$ea.CloseFile();
$ea.Exit();

Обработка информации

Как указано в комментарияхэто трудоемкий процесс.Для меня это PowerShell на 22k объектах занимает около часа на i3 intel / 4GB RAM

...