Java API-Beispielprojekt
Das UModel-Installationspaket enthält ein Java-Beispielprojekt, das Sie unter dem folgenden Pfad finden: C:\Benutzer\<Benutzername>\Dokumente\Altova\UModel2025\UModelExamples\API. Dieser Ordner enthält Java-Beispiele für die UModel API. Sie können das Beispielprojekt mit Hilfe der Batch-Datei BuildAndRun.bat, direkt über die Befehlszeile testen oder Sie können es in Eclipse kompilieren und ausführen. Anleitungen dazu finden Sie weiter unten.
Der Ordner für die Java-Beispiele enthält alle zum Ausführen des Beispielprojekts erforderlichen Dateien. Diese Dateien sind unten aufgelistet:
AltovaAutomation.dll | Java-COM Bridge: DLL-Teil |
AltovaAutomation.jar | Java-COM Bridge: Java-Bibliotheksteil |
UModelAPI.jar | Java-Klassen der UModel API |
RunUModel.java | Java-Beispielquellcode |
BuildAndRun.bat | Batch-Datei zum Kompilieren und Ausführen des Beispielcodes über die Befehlszeile. Es wird ein Ordner benötigt, in dem sich die Java Virtual Machine als Parameter befindet. |
.classpath | Hilfedatei Eclipse-Projekt |
.project | Eclipse-Projektdatei |
UModelAPI_JavaDoc.zip | Javadoc Datei, die die Hilfedokumentation für die Java API enthält |
Readme.txt | Diese Datei |
In diesem Beispielprojekt wird UModel gestartet und einige Operationen wie das Öffnen und Schließen von Dokumenten werden ausgeführt. UModel bleibt danach geöffnet. Sie müssen die Applikation manuell schließen.
Ausführen des Beispiels über die Befehlszeile
Um das Beispiel von der Befehlszeile aus auszuführen, öffnen Sie ein Eingabeaufforderungsfester, gehen Sie zum Ordner Java des Ordners API Examples (Pfad siehe oben) und geben Sie folgende Zeile ein:
buildAndRun.bat "<Path-to-the-Java-bin-folder>"
Der Java Binary-Ordner muss von einer JDK 1.7 oder höheren Version auf Ihrem Rechner sein.
Drücken Sie die Eingabetaste. Der Java-Quellcode in RunUModel.java wird kompiliert und anschließend ausgeführt.
Laden des Beispiels in Eclipse
Öffnen Sie Eclipse und wählen Sie den Befehl File | Import... | General | Existing Projects into Workspace um die Eclipse-Projektdatei (.project) im Ordner Java des Ordners API Examples (Pfad siehe oben) zu Eclipse hinzuzufügen. Daraufhin wird das Projekt RunUModel in Ihrem Package Explorer oder Navigator angezeigt.
Wählen Sie das Projekt aus und klicken Sie anschließend auf Run as | Java Application, um das Beispiel auszuführen.
Anmerkung: | Sie können einen Klassennamen oder eine Methode der Java API auswählen und F1 drücken, um Hilfe zu dieser Klasse oder Methode zu erhalten. |
Mögliche Probleme mit instanceof- und cast-Operatoren
Es kann zu Problemen mit instanceof- und cast-Operatoren kommen. So funktionieren etwa die instanceof- und cast-Operatoren nicht, wenn Sie Instanzen eines Basisklassentyps erhalten (z.B. UMLElement.getOwnedElements()). Beachten Sie dabei die folgenden Empfehlungen:
•Der instanceof-Operator und Klassen-Casts sollten nicht verwendet werden, wenn Sie Instanzen von Basisklassen direkt über die API erhalten.
•Verwenden Sie stattdessen eine Member-Funktion, um den Typ des Elements zu ermitteln. Erstellen Sie anschließend eine neue Instanz der abgeleiteten Klasse.
In nachstehenden Auszug aus dem Codefragment aus RunUModel.java sehen Sie, wie Sie potenzielle Probleme mit den instanceof und cast-Operatoren behandeln können:
private static void printUMLTree(UMLData i_data, String tab) throws AutomationException { // Java's 'instanceof' operator does not work where we receive instances of a base class type like with 'UMLElement.getOwnedElements()'. if (i_data.isKindOf("Package")) { // the Java cast operator does not work for these objects either. Instead, create a new instance with the appropriate class type. UMLPackage umlPackage = new UMLPackage(i_data); // (UMLPackage)i_data
if (umlPackage.getIsShared()) System.out.println(tab + "Shared Package " + umlPackage.getName()); else System.out.println(tab + "Package " + umlPackage.getName()); } else if (i_data.isKindOf("Class")) { System.out.println(tab + "Class " + new UMLClass(i_data).getName()); }
// recurse tab += " "; if (i_data.isKindOf("Element")) for (UMLData elem : new UMLElement(i_data).getOwnedElements()) printUMLTree(elem, tab); } |