© 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 IBM Corp.
Nella creazione di una trasformazione modello-modello, se la destinazione è un modello UML 2, l'associazione dei profili UML predefiniti non viene effettuata automaticamente. Ad esempio, non viene effettuata automaticamente l'associazione del profilo UML default.epx . È necessario effettuare l'associazione di tali profili manualmente o utilizzare il framework UMLDefaultLibrariesAddRule. Questo framework può essere aggiunto manualmente a una trasformazione se la destinazione è una EClass di modello UML.
Per aggiungere un framework a una trasformazione, aggiungere alla trasformazione il codice di seguito riportato:
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
protected void addTransformElements(Registry registry) {
add(new UMLDefaultLibrariesAddRule());
addGeneratedTransformElements(registry);
// You may add more transform element after the generated ones here
// Remember to remove the @generated tag or add NOT to it
}
Nella creazione di una trasformazione modello-modello, per disporre del supporto dell'"unione" nel modello di destinazione è necessario un plugin con l'estensione "org.eclipse.core.runtime.contentTypes" nello spazio di lavoro Eclipse. È possibile specificare tale estensione in un plugin con nome dominio derivato dal dominio del modello di destinazione. Per ulteriori informazioni su tale estensione, fare riferimento alla documentazione sui punti di estensione nel progetto Compare/Merge. Ciò consente di creare una strategia di unione sofisticata per il 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>
Nella creazione di trasformazioni modello-modello, i modelli Ecore specificati come input o output devono avere genmodel corrispondenti. Per creare genmodel è possibile utilizzare la procedura guidata Modello EMF. Accertarsi che il codice venga generato dopo la creazione dei genmodel. I genmodel devono essere registrati nel workbench di sviluppo o devono trovarsi nello stesso percorso dei modelli Ecore corrispondenti. I genmodel devono avere lo stesso nome file, comprese maiuscole e minuscole, dei modelli Ecore, ma con estensione .genmodel. In caso contrario, il motore di creazione della trasformazione non è in grado di trovare il genmodel. Se il motore di creazione della trasformazione non è in grado di trovare i genmodel necessari, disabilita la generazione di codice.
Nella creazione di una configurazione di una trasformazione modello-modello, è necessario specificare un file, anche vuoto, che rappresenta il modello di destinazione. Come contenitore di destinazione non è possibile specificare un URI.
Per creare un modello Ecore vuoto, nella pagina principale della procedura guidata o dell'editor di configurazione trasformazioni fare clic sul pulsante Crea nuovo contenitore di destinazione e specificare un file con l'estensione del modello di destinazione.
Per integrare una trasformazione modello-modello come front-end per una trasformazione JET (modello-testo), è necessario aggiungere manualmente un'istanza del framework JETRule alle regole 'postProcessing' della RootTransformation collocata nel provider trasformazioni. Il seguente esempio riporta il codice da includere nella classe del provider trasformazioni. È necessario sostituire 'xxx' con l'id della trasformazione JET.
/**
* Creates a root transformation. You may add more rules to the transformation here
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param transform The root transformation
* @generated NOT
*/
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform()) {
protected void addPostProcessingRules() {
add(new JETRule("xxx"));
}
};
}
Per generare trasformazioni per l'input o l'output di modelli UML, specificare un metamodello UML come input root della specifica dell'associazione, output root della specifica dell'associazione o entrambi. L'aggiunta di un profilo UML alla specifica dell'associazione non aggiunge automaticamente anche il metamodello UML.
Soluzione temporanea: aggiungere il metamodello UML facendo clic sul pulsante Aggiungi modello nell'editor o nella procedura guidata Associazione trasformazione da modello a modello.
Se l'utente passa dalla modalità di filtro delle funzioni da "Base" a "Intermedio" o "Avanzato", crea le associazioni e quindi passa nuovamente alla modalità di filtro "Base", gli endpoint di associazione potrebbero non essere più visibili. Per tale motivo, può sembrare che i connettori di associazione con endpoint non effettuino alcuna connessione. Ciò riguarda solo l'aspetto delle associazioni. Le associazioni e il codice di origine che genera la trasformazione dalle associazioni non vengono coinvolti.
Soluzione temporanea: correggere l'aspetto delle associazioni specificando la modalità di filtro impostata al momento della creazione delle associazioni.
Quando un file associazioni non contiene più alcuna associazione che specifichi elementi da un modello come input o output di associazioni, il modello viene "eliminato" dal file associazioni. Il controllo dei modelli non utilizzati viene effettuato ogni qualvolta viene eliminato un input o output di associazioni. Nel file associazioni vengono conservati elenchi separati di input e output.
Soluzione temporanea: è necessario aggiungere il modello al file associazioni prima di selezionare elementi da tale modello come input o output associazioni. Fare clic sul pulsante Aggiungi modello nell'Editor associazione per aggiungere il modello al file associazioni.
Nell'editor di configurazione trasformazioni delle trasformazioni modello-modello generate, l'opzione runSilent può essere specificata in qualunque modalità di unione, compresa 'automatica' o 'visuale'.Se la modalità viene impostata su automatica o visuale, l'opzione runSilent forza la strategia di unione non presidiata se viene trovato il supporto della fusione per il modello di destinazione. In alternativa, viene utilizzata una strategia di unione con sovrascrittura.
Quando viene creato un modello di associazione trasformazioni dal metamodello Ecore al metamodello UML con profili, è necessario verificare l'URI profilo che verrà utilizzato nei modelli UML di destinazione. Per impostazione predefinita, viene utilizzato l'URI del profilo specificato nell'editor associazioni. Se viene specificato un URI risorsa, questo viene convertito in un URI plugin equivalente.
Soluzione temporanea: è possibile specificare un URI differente nella proprietà di sovrascrittura profileURI o nella pagina proprietà. Fare clic sulla sezione root nell'editor associazioni per visualizzare la pagina proprietà. Nota: utilizzando un profilo registrato, è possibile specificare l'URI con cui è registrato il profilo, se questo è differente dal profilo utilizzato automaticamente. In caso contrario, il profilo registrato potrebbe essere caricato più di una volta nella serie di risorse, causando problemi con l'unione o la fusione.
Nella generazione di codice per modelli di associazioni in trasformazioni modello-modello, se non è possibile trovare i file di progetto di base, quali plugin.xml e manifest.mf, questi vengono generati. Dopo la generazione, potrebbe essere necessario modificare tali file.
Soluzione temporanea:
- Se vengono aggiunti modelli di input o output al file 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 risolvere gli errori di compilazione derivanti dal tentativo di accesso alle classi contenute in tali plugin. È possibile aggiungere una dipendenza sul plugin che contiene il codice generato per il nuovo modello di input/output.
- Se viene creato un modello di associazione in un plugin che contiene i file plugin.xml e manifest.mf, è necessario aggiungere le dipendenze richieste al file manifest.mf. Aggiungere la dipendenza nella creazione della trasformazione e la dipendenza nei modelli di input/output. È necessario aggiungere anche l'estensione com.ibm.xtools.transform.core.transformationProviders al file plugin.xml.