© Copyright International Business Machines Corporation 2006. Tutti i diritti riservati. Limitazioni previste per gli Utenti del Governo degli Stati Uniti - L'uso, la duplicazione o la divulgazione sono limitati dal GSA ADP Schedule Contract con la IBM Corp.
Durante la creazione di una conversione da un modello all'altro, se la destinazione è un modello UML 2, i profili UML predefiniti non vengono associati automaticamente. Ad esempio, il profilo UML default.epx non viene associato automaticamente. Occorre associare tali profili manualmente o utilizzare il framework UMLDefaultLibrariesAddRule. È possibile aggiungere manualmente tale framework a una conversione se la destinazione è una EClass del modello UML.
Per aggiungere il framework a una conversione, aggiungere il seguente codice alla conversione:
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
protected void addTransformElements(Registry registry) {
add(new UMLDefaultLibrariesAddRule());
addGeneratedTransformElements(registry);
// È possibile aggiungere ulteriori elementi di conversione dopo quelli generati in questo contesto
// Ricordare di rimuovere la tag @generated o di aggiungere NOT a tale tag
}
Nella creazione di conversioni da un modello all'altro, per utilizzare il supporto "fuse" nel modello di destinazione, occorre disporre dell'estensione "org.eclipse.core.runtime.contentTypes" in un plugin, nello spazio di lavoro Eclipse. È possibile specificare tale estensione in un plugin il cui nome dominio derivi dal dominio del modello di destinazione. Per ulteriori informazioni su tale estensione, consultare la documentazione del punto di estensione nel progetto Confronto/Unione. Ciò consente di generare una strategia di fusione sofisticata per il proprio modello di destinazione. Per una strategia EMF più semplice, è possibile specificare la seguente estensione (sostituire "xxx" con l'estensione del file di destinazione):
<extension
point="org.eclipse.core.runtime.contentTypes">
<file-association
content-type="com.ibm.xtools.comparemerge.emf.emfContentType"
file-extensions="xxx"/>
</extension>
Durante la creazione di conversioni da un modello all'altro, i modelli Ecore specificati come input o output devono avere genmodel corrispondenti. Per creare genmodel, è possibile utilizzare la procedura guidata Modello EMF. Assicurarsi di generare il codice dopo la creazione di genmodel. Occorre registrare i genmodel nel workbench di sviluppo o tali genmodel devono trovarsi nello stesso percorso dei modelli Ecore corrispondenti. I genmodel devono avere estensione del nome file .genmodel, un nome simile e le stesse maiuscole/minuscole dei modelli Ecore. Altrimenti il motore di creazione conversioni non riesce a individuare il genmodel. In tal caso, tale motore disabilita la generazione del codice.
Quando si crea una configurazione di conversione per una conversione da un modello all'altro, è necessario specificare un file che rappresenti il modello di destinazione, anche se tale file è vuoto. Non è possibile specificare un URI come contenitore di destinazione.
Per creare un modello Ecore vuoto, nella pagina principale della procedura guidata o dell'editor di configurazione conversione, fare clic sul pulsante Crea nuovo contenitore di destinazione e specificare un file con l'estensione del modello di destinazione.
Per integrare una conversione da un modello all'altro come front end per una conversione JET (da modello a testo), è necessario aggiungere manualmente un'istanza del framework JETRule alle regole 'postProcessing' della RootTransformation situata nel provider di conversioni. Il seguente esempio mostra il codice che è necessario includere nella classe che fornisce le conversioni. Occorre sostituire 'xxx' con l'id della conversione JET.
/**
* Crea una conversione root. È possibile aggiungere ulteriori regole alla conversione qui
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param transform La conversione root
* @generated NOT
*/
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform()) {
protected void addPostProcessingRules() {
add(new JETRule("xxx"));
}
};
}
Per generare conversioni che immettono o emettono modelli UML, specificare un metamodello UML come input e/o output root, della specifica di associazione. L'aggiunta di un profilo UML alla specifica di associazione non aggiunge automaticamente il metamodello UML.
Soluzione temporanea: aggiungere il metamodello UML facendo clic sul pulsante Aggiungi modello nell'editor e nella procedura guidata Associazione di trasformazione da un modello all'altro.
Gli endpoint dei connettori di associazione potrebbero non venire visualizzati se un utente passa dalla modalità di filtro delle funzioni "Di base" a quella "Intermedia" o "Avanzata", quindi crea le associazioni e quindi ritorna alla modalità "Di base". Ciò potrebbe comportare la visualizzazione di connettori di associazione di cui non è possibile collegare gli endpoint. Tale problema interessa soltanto l'aspetto delle associazioni. Le associazioni e il codice di origine che la conversione genera dalle associazioni non sono interessati.
Soluzione temporanea: correggere l'aspetto delle associazioni specificando la modalità di filtro effettiva al momento della creazione delle associazioni.
Quando un file associazioni non contiene più alcuna associazione che specifichi degli elementi da un modello come input o output di associazioni, il modello viene "eliminato" dal file di associazioni. Il controllo dei modelli non utilizzati viene effettuato ogni volta che viene eliminato un input o output di associazioni.Vengono conservati degli elenchi separati nel file associazioni per gli input e gli output.
Soluzione temporanea: è necessario aggiungere il modello al file di associazione, prima di poter selezionare gli elementi da tale modello come input o output di associazione. Fare clic sul pulsante Aggiungi modello nell'editor di associazione per aggiungere il modello al file di associazione.
Nell'editor di configurazione conversione per conversioni generate da un modello all'altro, l'opzione runSilent può essere specificata con qualsiasi modalità di unione, inclusa quella automatica o visiva. Se la modalità di unione viene impostata come automatica o visiva, l'opzione runSilent forza la strategia di unione non presidiata se il supporto di fusione viene trovato per il modello di destinazione. Altrimenti, viene utilizzata una strategia di unione di sovrascrizione.
Durante la creazione di un modello di associazione trasformazione dal metamodello Ecore al metamodello UML con profili, è consigliabile verificare l'URI del profilo che verrà utilizzato nei modelli UML di destinazione. Per impostazione predefinita, viene utilizzato l'URI del profilo specificato nell'editor di associazione. Se si specifica un URI di risorsa, viene convertito in un URI del plugin equivalente.
Soluzione temporanea: è possibile specificare un URI diverso nella proprietà di sovrascrizione profileURI dell'apposita pagina. Fare clic sulla sezione root nell'editor di associazione, per visualizzare la pagina di proprietà. Nota: se si utilizza un profilo registrato, è possibile specificare l'URI con cui il profilo è registrato, se tale URI è diverso dal profilo utilizzato automaticamente. Una mancata riuscita di tale operazione comporta il caricamento, da parte del profilo registrato, ripetitivo nella serie di risorse, che a sua volta provoca problemi di unione o fusione.
Durante la generazione del codice da modelli di associazione nelle conversioni da un modello all'altro, i file del progetto di base, tra cui plugin.xml e manifest.mf vengono generati se non è possibile individuarli. Potrebbe essere necessario modificare tali file dopo che sono stati generati.
Soluzione temporanea:
- Se si aggiungono modelli di input o di output al file di associazioni, è necessario modificare il file manifest.mf. Aggiungere le dipendenze per plugin che contengono il codice del modello generato per il modello di input/output. L'aggiunta di tali dipendenze dovrebbe correggere gli errori di compilazione dovuti a tentativi di accesso a classi presenti in tali plugin. È possibile aggiungere una dipendenza sul plugin che contiene il codice generato per il nuovo modello di input/output.
- Se si crea un modello di associazione in un plugin Java che contiene i file plugin.xml e manifest.mf, è necessario aggiungere le dipendenze richieste al file manifest.mf. Aggiungere la dipendenza sulla creazione conversioni e la dipendenza sui modelli di input/output. Occorre inoltre aggiungere l'estensione com.ibm.xtools.transform.core.transformationProviders al file plugin.xml.