Hilfe-Center von Creo™ Schematics 4.0 > Creo Schematics mit Java APIs anpassen > Allgemeine Einführung: Benutzerdefinierten Code mit Java erzeugen
  
Allgemeine Einführung: Benutzerdefinierten Code mit Java erzeugen
Sie können mit den in Creo Schematics enthaltenen Java-Paketen benutzerdefinierten Code erzeugen.
rsdesigner.design
rsdesigner.component
rsdesigner.uiextension
Die Methode, nach der benutzerdefinierte Java-Klassen mit der Anwendung kommunizieren, wird als Java Gateway bezeichnet.
Die API (Application Programmer's Interface) dieser Java-Pakete ist im Creo Schematics API-Handbuch dokumentiert.
Einsatz der Java-Pakete
Sie können mit den Java-Paketen verschiedene Aufgaben durchführen:
Sie können das aktuelle Entwurfsobjekt abrufen und es auf Parameter abfragen oder Objektlisten abrufen. Dabei können Sie nach folgenden Methoden verfahren:
Objektsatz nach Klasse anfordern.
Methode Design.select() anwenden und Parameter und Bedingungslisten definieren. Für individuellere Abfragen können Sie Vor- und Nachfiltermethoden einsetzen.
Sie können benutzerdefinierte Beschriftungs- und Berichtsfunktionen angeben, um spezielle Informationen zurückzugeben.
Sie können abgeleitete Parameterwerte mit Hilfe benutzerdefinierter Funktionen berechnen.
Sie können Formen und Dialogfenster für eine erweiterte Interaktion mit den Berichtsergebnissen durch Einfügen von Swing-Objekten in Ihren benutzerdefinierten Code erzeugen.
Sie können Parameter von Artefakten ändern, die für Objekte festgelegt werden.
Sie können festlegen, ob Verbindungen zwischen Komponenten und Verbindungslinien hergestellt werden können.
Je nach dem beabsichtigten Ergebnis können Sie benutzerdefinierte Methoden wie folgt verwenden:
Aus einer benutzerdefinierten Java-Schaltfläche
Aus Beschriftungen
Aus Berichten
Aus abgeleiteten Parametern
Wenn Artefakte platziert werden
Beim Validieren einer Änderung eines PropertySet
Bevor eine Endkappe erzeugt wird
Wenn eine Verbindung hergestellt wurde
Thread-Sicherheit
Aus Gründen der Thread-Sicherheit werden alle Aufrufe in das Java-Gateway synchronisiert und überwacht, so dass nur jeweils ein Thread auf das Java-Gateway zugreifen kann. Daher kann immer nur jeweils ein Thread auf das System zugreifen.
* 
Da der Entwurf zwischen einzelnen Java-Gateway-Aufrufen durch einen Benutzer oder eine Traildatei geschlossen werden kann, kann das Entwurfsobjekt u.U. ungültig werden. Diese Einschränkung können Sie mit der Methode Design.getSynchronizeObject() umgehen. Die Methode Design.getSynchronizeObject() gibt ein synchronisierbares Objekt zurück, wodurch sichergestellt ist, dass der nächste Aufrufsatz an das Java-Gateway zusammenhängend ausgeführt wird.
Im folgenden Code wird z.B. das Schlüsselwort synchronized verwendet. Auf diese Weise werden die Aktionen zum Abrufen des aktuellen Entwurfsobjekts und zum Abfragen des Objekts zusammenhängend und ohne Interaktion mit anderen Threads oder dem Benutzer ausgeführt.
synchronized (Design.getSynchronizeObject ())
{
 /*
we need to synchronize on the VM because we (or a
trail file!) may end up closing the design between
the obtaining of the design and looping
over the elements in the design
*/
//we need the design object so we can then get
//the list of blocks
 //System.out.println ("get the design class");
Design design = Design.getCurrentDesign ();
Iterator selectResults = design.select ( …);
//work through the results of the select query
while (selectResults.hasNext ())
{
 //perform some actions on the result
}
}