Java Add-Ins Programmieren für den Enterprise Architect
10. März 2010 Roland
Ich bin gerade auf einem zweitägigen Enterprise Architect (EA) Workshop.
Heute wurde mir von 9:30Uhr bis 21:30Uhr geballtes Wissen um die Ohren gehauen.
Die letzte Session behandelte die Frage, wie man Java Add-Ins erstellen kann.
Ok, ich war der einzige Kursteilnehmer, die Anderen programmierten fröhlich mit C#. Aber das will ich nicht ![]()
Mit Java kann man zwar keine Events für den Enterprise Architect bauen, da man keine COM Objekte erstellen kann, aber man kann auf das Repository zugreifen und dort z.B. spezielle Reports erstellen.
Um Java Add-Ins lauffähig hinzubekommen muss man aus dem Installationsordner von EA (also aus C:\Program Files\Sparx Systems\EA\Java API die DLL SSJavaCOM.dll in das System32 Verzeichnis kopieren.
Im Java Projekt muss man die eaapi.jar als externes Jar einbinden.
Dann kann man sich ein EA-Repository laden und darauf rumspielen.
Das folgende Beispiel lädt eine entsprechende Datei und schreibt ein Modell, Klassendiagramm und ein Requirement ein:
-
import org.sparx.Collection;
-
import org.sparx.Connector;
-
import org.sparx.Diagram;
-
import org.sparx.DiagramObject;
-
import org.sparx.Element;
-
import org.sparx.Package;
-
import org.sparx.Repository;
-
-
-
public class EAAutomation {
-
-
/**
-
* @param args
-
*/
-
public static void main(String[] args) {
-
// TODO Auto-generated method stub
-
Repository r = new Repository();
-
r.OpenFile("c:\\mittendrin.eap");
-
Collection<org .sparx.Package> col = r.GetModels();
-
col.AddNew("supi", "Model").Update();
-
short count = col.GetCount();
-
for(short i = 0; i < count; i++){
-
if(col.GetAt(i).GetName().equals("supi")){
-
Package p = col.GetAt(i);
-
Package classPackage = p.GetPackages().AddNew("Die Ansicht", "Class View");
-
classPackage.Update();
-
Element element = classPackage.GetElements().AddNew("Klassendiagramm", "Class");
-
element.Update();
-
Element requirement = element.GetElements().AddNew("Das Requirement", "Class");
-
requirement.SetName("Mein Name");
-
requirement.SetType("Requirement");
-
requirement.SetNotes("Also da wollte ich mal sagen, dass ich sagen will älläbätsch");
-
requirement.Update();
-
break;
-
}
-
}
-
r.CloseFile();
-
System.out.println("Alles");
-
}
-
-
}
Ok, dass ist ein bisschen sinnfrei, aber ich denke ihr könnt ein Feeling dafür bekommen wie der Enterprise Architect tickt.
Wo sehe ich den Nutzen?
Einen Zugriff auf das EA-Repository hat den Vorteil, dass man gezielt Elemente auswählen und sinnvolle Reports erstellen kann.
Wenn man sich also mit diesem Konstrukt gut auskennt, kann man hier z.B. Excel Auswertungen erstellen, die es von Haus aus im Enterprise Architekt nicht gibt.
Ich tippe mal, dass es mit C# besser integriert ist und man da noch granularer auf alles zugreifen kann.
Für Reportgenerierung reicht die Java Schnittstelle jedoch aus.
Der Beitrag wurde
am Mittwoch, den 10. März 2010 um 00:02 Uhr veröffentlicht
und wurde unter IT abgelegt.
Kurzlink: http://www.baldenhofer.eu/blog/?p=1896
Dir gefiel der Artikel? Dann abonniere doch den RSS Feed![]()
Du kannst die Kommentare zu diesem Eintrag durch den RSS 2.0 Feed verfolgen. Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.









Sehr geehrter Herr Baldenhofer,
freut mich, dass das “einzelcoaching” gefallen hat.
Ich würde mich freuen, wenn Sie von Ihrem Blog auf den Event referenzieren würden: http://www.sparxsystems.de/ressourcen/bpw/
Vielen Dank
Hans Bartmann
Mach ich doch gerne
Ich schreibe noch einen kleinen Artikel dazu.
Vielen Dank für die vielen Informationen!
Hallo Herr Baldenhofer,
ich hab gerade versucht ihr Beispiel nach zu bauen.
Leider Zerschelle ich immer an:
Exception in thread “main” java.lang.Exception: Internal application error.
at org.sparx.Repository.comGetModels(Native Method)
at org.sparx.Repository.GetModels(Repository.java:1102)
at EAAutomation.main(EAAutomation.java:20)
Die DLL habe ich in das system32 Verzeichnis kopiert und das Jar aus meinen Projekt referenziert.
Haben Sie eine Idee?
Hallo,
sorry ich bin in letzter Zeit ein wenig “offline” und habe deshalb erst jetzt den Kommentar gesehen…
Ist die Datei “c:\\mittendrin.eap” auch vorhanden? Ich hatte damals eine Testdatei erstellt auf die referenziert wird.
Für mich sieht es so aus als ob org.sparx.Repository nicht auf die .eap Datei zugreifen kann.
Vielleicht hilft die Doku von EnterpriseArchitect.
Falls es nicht klappt, einfach nochmal melden.
Grüße
Roland