2016-04-18 4 views
1

Derzeit führe ich einen manuellen Import meiner Codebasis über das Kontextmenü meines Modells in Enterprise Architect Code Engineering > Import Source Directory.Trigger-Import von Quellcode in Enterprise Architect auf TFS-Build-Abschluss

Jetzt möchte ich dies automatisieren und unser Team Foundation Server 2015 diese Importaktion ausführen, sobald der Build-Prozess erfolgreich ist.

Ist das möglich? Wie kann ich das erreichen?

EDIT: Unsere Code-Basis in C# geschrieben ist, sind wir rekursiv über Verzeichnisse importieren, wir wollen nicht, logische Diagramme für jedes Paket, wollen wir private Mitglieder in EA, um zu sehen, wollen wir Pakete pro Namensraum haben, wir hat sich für die Synchronisation vorhandener Klassen entschieden und wir möchten, dass Klassen, die nicht im Code gefunden wurden, entfernt werden.

+1

Gibt es eine Möglichkeit, Enterprise Architect über die Befehlszeile zu automatisieren? Oder über eine API? Es gibt in TFS kein eingebautes Ding, um das für Sie zu tun, also müssen Sie etwas bauen. – jessehouwing

+0

@jessehouwing Das [Enterprise Architect Object Model] (http://www.sparxsystems.com/enterprise_architect_user_guide/12/automation_and_scripting/theautomationinterface.html) sieht vielversprechend aus ... – David

Antwort

1

Große Frage, fast zu groß. Aber ja, es ist möglich, und hier sind einige allgemeine Hinweise. Es gibt nichts in EA oder TFS, um dies für Sie out of the box zu tun, so insgesamt Hinweise ist alles, was ich geben kann.

Sie können entweder einen Trigger schreiben, der im Kontext von TFS ausgeführt wird, und über die EA-API eine Verbindung zum entsprechenden EA-Repository herstellen und dort den erforderlichen Import durchführen.

Oder Sie können ein EA-Add-In schreiben (das im Kontext von EA ausgeführt wird), das ein TFS-Ereignis abonniert und den Import durchführt.

EAs API ist einigermaßen gut dokumentiert, aber wo EA fällt, ist, dass es keine gute serverseitige Automatisierung hat - es geht im Wesentlichen davon aus, dass jede Sitzung immer einen Benutzer hat. Daher würde ich empfehlen, Ihre Lösung in TFS und nicht in EA zu integrieren.

Sie müssten ein EA-Projekt einrichten und ein Paket für den importierten Code erstellen.

Sie stellen eine Verbindung zu einem EA-Projekt her, indem Sie ein Objekt EA.Repository erstellen und Repository.OpenFile() aufrufen.

Dann rufen Sie Repository.GetProjectInterface(), um ein EA.Project Objekt zu erhalten, auf dem Sie Project.ImportDirectory() aufrufen.

+0

Große Antwort :) und ich denke, es wird mich aufmuntern und in sehr kurzer Zeit laufen ... Lass mich das mal anschauen. – David

+0

Wo finde ich detaillierte Informationen darüber, welche Parameter an 'ImportDirectory' übergeben werden sollen ([EA's Project Class Reference] (http://www.sparxsystems.com/enterprise_architect_user_guide/9.3/automation/project_2.html) ist nicht übersichtlich) in meinem Fall (siehe Bearbeiten)? – David

+0

Das ist ziemlich genau das, was Sie in der API-Dokumentation erhalten. Für Details zu einem einzelnen Anruf sind das [Benutzerforum] (http://sparxsystems.com/forums/smf/index.php/) oder SO die besten Wetten (aber bitte editiere diese Frage nicht, sondern bitte neue). Beachten Sie auch, dass Ihr Link auf die Dokumentation für Version 9.3 verweist, während die aktuelle Version 12.1 lautet. – Uffe

Verwandte Themen