|
Faktor-IPS 2.3 basiert auf der Eclipse Version 3.4 oder höher und benötigt jeweils die entsprechende EMF Version. Die Integration mit Eclipse-UML2 wird als separates Feature zur Verfügung gestellt. Die UML2-Integration setzt natürlich voraus, dass die entsprechenden UML-Features installiert sind. Am einfachsten ist es in diesem Fall die komplette Modelling-Distribution von Eclipse zu verwenden.
Bestehende Projekte können über die Migrationsfunktion von Faktor-IPS auf die Version 2.3. umgestellt werden. Die Migration wird im Package-Explorer über das Kontextmenü gestartet.
Bis zur Version 2.2. wurden Aufzählungen über spezielle Tabellenstrukturen und Tabelleninhalte abgebildet. Dabei wurde davon ausgegangen, dass alle Werte einer Aufzählung bereits in der Modellierung bekannt sind. Für Aufzählungen wurden Java Enums mit einem Literal pro Aufzählungswert wie folgt generiert.
public enum Zahlweise {
JAEHRLICH("1", "jaehrlich", new Integer(1)),
MONATLICH("12", "monatlich", new Integer(12)),
EINMALZAHLUNG("0", "Einmalzahlung", null);
private final String id;
private final String name;
private final Integer anzahlZahlungenProJahr;
private Zahlweise(String id, String name, Integer anzahlZahlungenProJahr) {
this.id = id;
this.name = name;
this.anzahlZahlungenProJahr = anzahlZahlungenProJahr;
}
}
Die einzelnen Aufzählungswerte wurden damit zum Teil des Modells und des Programmcodes. Das Szenario, dass der Programmcode unabhängig von den Aufzählungswerten ist und die konkreten Werte erst z. B. in einem Customizing festgelegt werden, wurde dagegen noch nicht unterstützt. Mit Version 2.3. gibt es eigene Editoren für Aufzählungen. Darüber hinaus wird nun neben dem Szenario, dass die Werte Teil des Modells sind auch das Szenario unterstützt, dass die Werte erst in der Konfiguration festgelegt werden. Eine ausführliche Beschreibung befindet sich in dem Artikel „Datentypen & Aufzählungen in Faktor-IPS“. Der folgende Screenshot zeigt die Definition der Aufzählung Zahlweise in dem neuen Editor für Aufzählungstypen. Der Artikel faktorips-datentypen-und-aufzaehlungen.pdf enthält eine ausführliche Beschreibung.
In dem neuen Instance-Explorer können alle Instanzen eines bestimmten Typs angezeigt werden, also
alle Produktbausteine einer Produktbausteinklasse
alle Testfälle eines Testfalltyps
alle Tabellen zu einer Tabellenstruktur sowie
alle Aufzählungsinhalte zu einem Aufzählungstyp.
Bei Produktbausteinen und Aufzählungstypen kann gewählt werden, ob auschließlich die Instanzen des Typs oder auch die Instanzen aller Subtypes berücksichtigt werden sollen. Aufgerufen wird der Instance-Explorer aus dem Modell-Explorer bzw. Produktdefinitions-Explorer durch Markierung des Types und Auswahl von „Show instances“ im Kontextmenü. Markiert man eine Instanz (also einen Produktbaustein, einen Testfall, ...), dann kann man alle Instanzen des zugehörigen Typs über „Show similiar Product Components“ (bzw. Test Cases, ... aufrufen. Bei geöffnetem Instance-Explorer genügt auch ein Drag&Drop.
Für Tabellenstrukturen können in Faktor-IPS Bereiche und Unique-Keys definiert werden. Bisher wurden diese Informationen lediglich bei der Codegenerierung verwendet. Mit Version 2.3. wird die Einhaltung dieser Regeln nun direkt für die Tabelleninhalte geprüft.
Beim Support für JAXB gibt es zwei Änderungen:
Damit die IDs der Modelobjekte auch gemäß XML-Spezifikation als ID verwendet werden dürfen, wird Ihnen nun das Prefix „id-" vorangestellt.
Die Funktionen der JAXBContextFactory wurden direkt in IRuntimeRepository verlagert. Dies war sinnvoll, da für die Aufzählungen, bei denen die Werte erst zur Konfigurationszeit festgelegt werden, eigene JAXB-Adapter generiert werden (müssen). Die Verwendung dieser Adapter wird intern vom RuntimeRepository realisiert.
Das folgende Codebeispiel zeigt wie man mit Version 2.3 eine Instanz des Hausratvertrages aus dem Einführungstutorial nach XML konvertiert.
/*
Das Faktor-IPS RuntimeRepository erzeugt einen JAXBContext, der alle Vertragsklassen und alle notwendigen XML-Adapter
des Repositories und diese damit marshallen/unmarshallen kann.
Den Context braucht man nicht für jedes Marshalling neu erzeugen, sondern man kann ihn wiederverwenden.
*/
JAXBContext jaxbContext = repository.newJAXBContext();
StringWriter writer = new StringWriter();
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.marshal(vertrag, writer);
Das folgende Codebeispiel zeigt wie man einen Hausratvertrag aus XML erzeugt.
String xml = ...;
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
IHausratVertrag vertrag = (IHausratVertrag) unmarshaller.unmarshal(new StringReader(xml));
Bei neuen Projekt sind nun die folgenden Optionen des Codegenerators defaultmäßig auf true gesetzt:
Generate Copy Support
Generate Delta Support
Generate Visitor Support
Darüber hinaus wird nun nicht mehr der VAA-Standard als Defaulteinstellungen für Produktänderungen im Zeitablauf verwendet. Der Grund hierfür ist, dass insbesondere der Begriff Produktgeneration in der Praxis i.d.R. anders verwendet wird.
Zur Gesamtliste New & Noteworthy für alle Versionen.
|