summaryrefslogtreecommitdiffstats
path: root/examples/uml
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-06-27 04:42:09 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-06-27 12:44:37 +0200
commit040f9e996c53339a08b862064c38f06d609a6daf (patch)
treee8d0fcd7738a44354852af058de242fba8af22ff /examples/uml
parentd179e49beb16bf51e342ca8f36614728b4828d38 (diff)
Add SEKE demo
Change-Id: I9bf147e3215595097ea4337bbf35a10b13b8c62f Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml')
-rw-r--r--examples/uml/duse-mt/SADuSE.xmi14
-rw-r--r--examples/uml/duse-mt/duse-mt.qrc1
-rw-r--r--examples/uml/duse-mt/mainwindow.cpp173
-rw-r--r--examples/uml/duse-mt/mainwindow.h17
-rw-r--r--examples/uml/duse-mt/mainwindow.ui20
-rw-r--r--examples/uml/duse-mt/qml/designspaceview.qml58
-rw-r--r--examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml1
-rw-r--r--examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml1
-rw-r--r--examples/uml/duse-mt/qml/paretofrontview.qml9
-rw-r--r--examples/uml/duse-mt/qml/welcomeview.qml2
-rw-r--r--examples/uml/r0.xmi42
-rw-r--r--examples/uml/r1.xmi42
-rw-r--r--examples/uml/r10.xmi39
-rw-r--r--examples/uml/r2.xmi39
-rw-r--r--examples/uml/r3.xmi41
-rw-r--r--examples/uml/r4.xmi46
-rw-r--r--examples/uml/r5.xmi39
-rw-r--r--examples/uml/r6.xmi39
-rw-r--r--examples/uml/r7.xmi39
-rw-r--r--examples/uml/r8.xmi43
-rw-r--r--examples/uml/r9.xmi42
21 files changed, 712 insertions, 35 deletions
diff --git a/examples/uml/duse-mt/SADuSE.xmi b/examples/uml/duse-mt/SADuSE.xmi
index 5ef6c0c8..ecef7abc 100644
--- a/examples/uml/duse-mt/SADuSE.xmi
+++ b/examples/uml/duse-mt/SADuSE.xmi
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:duse="http://liveblue.wordpress.com">
<duse:DesignSpace name="SADuSE" xmi:id="SADuSE">
- <qualityMetric xmi:type="duse:QualityMetric" name="Control Robustness" xmi:id="SADuSE-Control Robustness"/>
- <qualityMetric xmi:type="duse:QualityMetric" name="Average Maximum Overshoot" xmi:id="SADuSE-Average Maximum Overshoot"/>
- <qualityMetric xmi:type="duse:QualityMetric" name="Average Settling Time" xmi:id="SADuSE-Average Settling Time"/>
- <qualityMetric xmi:type="duse:QualityMetric" name="Control Overhead" xmi:id="SADuSE-Control Overhead"/>
+ <qualityMetric xmi:type="duse:QualityMetric" name="Control Robustness" xmi:id="SADuSE-Control Robustness" expression="(1/input[0].ownedElements.length)*120"/>
+ <qualityMetric xmi:type="duse:QualityMetric" name="Average Maximum Overshoot" xmi:id="SADuSE-Average Maximum Overshoot" expression="(1/input[0].ownedTypes.length)*120"/>
+ <qualityMetric xmi:type="duse:QualityMetric" name="Average Settling Time" xmi:id="SADuSE-Average Settling Time" expression="var ot = input[0].ownedTypes.length; var sum = 0; for (var j = 0; j &lt; ot; ++j) sum = sum+input[0].ownedTypes[j].ownedAttributes.length; var t = sum/(ot+1); t/sum*120"/>
+ <qualityMetric xmi:type="duse:QualityMetric" name="Control Overhead" xmi:id="SADuSE-Control Overhead" expression="input[0].ownedAttributes"/>
<designDimension xmi:type="duse:DesignDimension" name="Control Law" instanceSelectionRule="var inputLength = input.length; var selected = new Array(); for (var i = 0; i &lt; inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;" xmi:id="SADuSE-Control Law">
<variationPoint xmi:type="duse:VariationPoint" name="Proportional" xmi:id="SADuSE-Control Law-Proportional"/>
<variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral" xmi:id="SADuSE-Control Law-Proportional-Integral"/>
@@ -13,7 +13,7 @@
<variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral-Derivative" xmi:id="SADuSE-Control Law-Proportional-Integral-Derivative"/>
<variationPoint xmi:type="duse:VariationPoint" name="Precompensated Static State Feedback" xmi:id="SADuSE-Control Law-Precompensated Static State Feedback"/>
</designDimension>
- <designDimension xmi:type="duse:DesignDimension" name="Tuning Approach" xmi:id="SADuSE-Tuning Approach">
+ <designDimension xmi:type="duse:DesignDimension" name="Tuning Approach" instanceSelectionRule="var inputLength = input.length; var selected = new Array(); for (var i = 0; i &lt; inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;" xmi:id="SADuSE-Tuning Approach">
<variationPoint xmi:type="duse:VariationPoint" name="Cohen-Coon" xmi:id="SADuSE-Tuning Approach-Cohen-Coon"/>
<variationPoint xmi:type="duse:VariationPoint" name="CHR-20OS-DR" xmi:id="SADuSE-Tuning Approach-CHR-20OS-DR"/>
<variationPoint xmi:type="duse:VariationPoint" name="Ziegler-Nichols" xmi:id="SADuSE-Tuning Approach-Ziegler-Nichols"/>
@@ -22,12 +22,12 @@
<variationPoint xmi:type="duse:VariationPoint" name="CHR-0OS-RT" xmi:id="SADuSE-Tuning Approach-CHR-0OS-RT"/>
<variationPoint xmi:type="duse:VariationPoint" name="Linear Quadratic Regulator" xmi:id="SADuSE-Tuning Approach-Linear Quadratic Regulator"/>
</designDimension>
- <designDimension xmi:type="duse:DesignDimension" name="Control Adaptation" xmi:id="SADuSE-Control Adaptation">
+ <designDimension xmi:type="duse:DesignDimension" name="Control Adaptation" instanceSelectionRule="var inputLength = input.length; var selected = new Array(); for (var i = 0; i &lt; inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;" xmi:id="SADuSE-Control Adaptation">
<variationPoint xmi:type="duse:VariationPoint" name="Gain Scheduling" xmi:id="SADuSE-Control Adaptation-Gain Scheduling"/>
<variationPoint xmi:type="duse:VariationPoint" name="Model Identification Adaptive Control (MIAC)" xmi:id="SADuSE-Control Adaptation-Model Identification Adaptive Control (MIAC)"/>
<variationPoint xmi:type="duse:VariationPoint" name="Fixed Gain (no adaptation)" xmi:id="SADuSE-Control Adaptation-Fixed Gain (no adaptation)"/>
</designDimension>
- <designDimension xmi:type="duse:DesignDimension" name="MAPE Deployment" xmi:id="SADuSE-MAPE Deployment">
+ <designDimension xmi:type="duse:DesignDimension" name="MAPE Deployment" instanceSelectionRule="var inputLength = input.length; var selected = new Array(); for (var i = 0; i &lt; inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;" xmi:id="SADuSE-MAPE Deployment">
<variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Reference" xmi:id="SADuSE-MAPE Deployment-Local Control + Shared Reference"/>
<variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Error" xmi:id="SADuSE-MAPE Deployment-Local Control + Shared Error"/>
<variationPoint xmi:type="duse:VariationPoint" name="Global Control" xmi:id="SADuSE-MAPE Deployment-Global Control"/>
diff --git a/examples/uml/duse-mt/duse-mt.qrc b/examples/uml/duse-mt/duse-mt.qrc
index 76b70dde..160c4ca9 100644
--- a/examples/uml/duse-mt/duse-mt.qrc
+++ b/examples/uml/duse-mt/duse-mt.qrc
@@ -22,5 +22,6 @@
<file>metamodels/SADuSEProfile.xmi</file>
<file>qml/welcomeview.qml</file>
<file>qml/welcome-background.jpg</file>
+ <file>qml/designspaceview.qml</file>
</qresource>
</RCC>
diff --git a/examples/uml/duse-mt/mainwindow.cpp b/examples/uml/duse-mt/mainwindow.cpp
index 018cb129..a2ceb4d9 100644
--- a/examples/uml/duse-mt/mainwindow.cpp
+++ b/examples/uml/duse-mt/mainwindow.cpp
@@ -53,6 +53,7 @@
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QMessageBox>
#include <QtWidgets/QItemDelegate>
+#include <QtWidgets/QProgressDialog>
#include <QtGui/QKeyEvent>
@@ -90,6 +91,7 @@ MainWindow::MainWindow(QWidget *parent) :
_codeCompletionView(new QListView),
_welcomeQuickView(new QQuickView),
_modelQuickView(new QQuickView),
+ _designSpaceQuickView(new QQuickView),
_metricsQuickView(new QQuickView),
_paretoFrontQuickView(new QQuickView)
{
@@ -150,7 +152,11 @@ MainWindow::MainWindow(QWidget *parent) :
_welcomeQuickView->setSource(QUrl("qrc:/qml/welcomeview.qml"));
ui->gridLayout_13->addWidget(QWidget::createWindowContainer(_welcomeQuickView, ui->welcomeViewWidget), 0, 0, 1, 1);
+ _designSpaceQuickView->setSource(QUrl("qrc:/qml/designspaceview.qml"));
+ ui->gridLayout_15->addWidget(QWidget::createWindowContainer(_designSpaceQuickView, ui->designSpaceLocationViewWidget), 0, 0, 1, 1);
+
_modelQuickView->setResizeMode(QQuickView::SizeRootObjectToView);
+ _designSpaceQuickView->setResizeMode(QQuickView::SizeRootObjectToView);
_metricsQuickView->setResizeMode(QQuickView::SizeRootObjectToView);
_paretoFrontQuickView->setResizeMode(QQuickView::SizeRootObjectToView);
_welcomeQuickView->setResizeMode(QQuickView::SizeRootObjectToView);
@@ -232,18 +238,27 @@ void MainWindow::saveXmi(QWrappedObject *rootElement)
setCursor(Qt::ArrowCursor);
}
-QList<QWrappedObject *> MainWindow::loadXmi()
+QList<QWrappedObject *> MainWindow::loadXmi(QString fileName)
{
- QFile file(_currentFileName);
+ QFile file(fileName);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
QMessageBox::critical(this, tr("Open"), tr("Cannot read file !"));
return QList<QWrappedObject *>();
}
QXmiReader reader(&_engine, true);
- setWindowTitle(QFileInfo(file).fileName() + " - DuSE-MT");
+ if (fileName.contains("duse-mt"))
+ setWindowTitle(QFileInfo(file).fileName() + " - DuSE-MT");
QList<QWrappedObject *> wrappedObjectList = reader.readFile(&file);
+
ui->txeIssues->setModel(new QStringListModel(reader.errorStrings()));
+ setModelInspector(wrappedObjectList);
+
+ return wrappedObjectList;
+}
+
+void MainWindow::setModelInspector(QList<QWrappedObject *> wrappedObjectList)
+{
if (!wrappedObjectList.isEmpty()) {
_engine.globalObject().setProperty(wrappedObjectList.at(0)->objectName(), _engine.newQObject(wrappedObjectList.at(0)));
@@ -255,8 +270,9 @@ QList<QWrappedObject *> MainWindow::loadXmi()
ui->txeJavaScript->setText("self");
QTimer::singleShot(0, this, SLOT(on_psbJSEvaluate_clicked()));
}
-
- return wrappedObjectList;
+ _wrappedObjectModel->clear();
+ foreach (QWrappedObject *object, wrappedObjectList)
+ _wrappedObjectModel->addWrappedObject(object);
}
void MainWindow::on_actionFileOpenModel_triggered()
@@ -264,10 +280,13 @@ void MainWindow::on_actionFileOpenModel_triggered()
QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), QDir::currentPath(), "XMI files (*.xmi)");
if (!fileName.isEmpty()) {
_currentFileName = fileName;
- _wrappedObjectModel->clear();
setCursor(Qt::WaitCursor);
- foreach (QWrappedObject *object, loadXmi())
- _wrappedObjectModel->addWrappedObject(object);
+// foreach (QWrappedObject *object, _inputModel)
+// delete object;
+ _inputModel = loadXmi(_currentFileName);
+ _modelQuickView->setClearBeforeRendering(true);
+ _modelQuickView->setSource(QUrl("qrc:/qml/modelview.qml"));
+ addToView(_inputModel[0]);
setCursor(Qt::ArrowCursor);
}
}
@@ -297,9 +316,13 @@ void MainWindow::on_actionFileNewDuseDesign_triggered()
}
_currentFileName = _newDuseDesign->_inputModelFileName;
- _wrappedObjectModel->clear();
- foreach (QWrappedObject *object, loadXmi())
- _wrappedObjectModel->addWrappedObject(object);
+// foreach (QWrappedObject *object, _inputModel)
+// delete object;
+ _inputModel = loadXmi(_currentFileName);
+
+ _modelQuickView->setClearBeforeRendering(true);
+ _modelQuickView->setSource(QUrl("qrc:/qml/modelview.qml"));
+ addToView(_inputModel[0]);
QScriptValue value = _engine.evaluate("function checkProfile() \
{ \
@@ -332,6 +355,8 @@ void MainWindow::on_actionFileNewDuseDesign_triggered()
} \
}");
+
+ evaluateQualityMetrics();
populateDesignSpaceView(wrappedObjectList.at(0));
setCursor(Qt::ArrowCursor);
@@ -342,6 +367,13 @@ void MainWindow::on_actionFileNewDuseDesign_triggered()
} while (_newDuseDesign->_inputModelFileName.isEmpty() || _newDuseDesign->_duseInstanceModelFileName.isEmpty());
}
+void MainWindow::evaluateQualityMetrics()
+{
+ _engine.evaluate("var m = designspace.qualityMetrics.length; \
+ for (var j = 0; j < m; ++j) \
+ designspace.qualityMetrics[j].value = Math.random()*60+eval(designspace.qualityMetrics[j].expression)");
+}
+
void MainWindow::populateDesignSpaceView(QWrappedObject *wrappedObject)
{
QDuseDesignSpace *designSpace = qobject_cast<QDuseDesignSpace *>(wrappedObject);
@@ -357,6 +389,7 @@ void MainWindow::populateDesignSpaceView(QWrappedObject *wrappedObject)
comboBox->addItem(variationPoint->objectName());
}
ui->tblDesignSpace->setCellWidget(row, 2, comboBox);
+ connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(designSpaceChanged()));
++row;
}
}
@@ -412,6 +445,54 @@ void MainWindow::on_psbJSEvaluate_clicked()
ui->wrappedObjectView->updateSelected();
}
+void MainWindow::on_centralWidget_currentChanged(int)
+{
+ if (_currentFileName.isEmpty())
+ return;
+ if (ui->centralWidget->currentIndex() == 1) {
+// foreach (QWrappedObject *object, _inputModel)
+// delete object;
+ _inputModel = loadXmi(_currentFileName);
+ evaluateQualityMetrics();
+ }
+ else if (ui->centralWidget->currentIndex() == 2) {
+// foreach (QWrappedObject *object, _designSpaceLocation)
+// delete object;
+ _designSpaceLocation = loadXmi("/data/devel/qtmodeling/examples/uml/r1.xmi");
+ addToDesignSpaceView(_designSpaceLocation.first());
+ evaluateQualityMetrics();
+ }
+ else if (ui->centralWidget->currentIndex() == 3) {
+// foreach (QWrappedObject *object, _designSpaceLocation)
+// delete object;
+ }
+}
+void MainWindow::on_btnOptimize_clicked()
+{
+ progress = new QProgressDialog("Optimizing architecture", "Abort", 0, 100, this);
+ progress->setWindowModality(Qt::WindowModal);
+ timer = new QTimer(this);
+ connect(progress, SIGNAL(finished(int)), timer, SLOT(stop()));
+ connect(timer, SIGNAL(timeout()), this, SLOT(update()));
+ timer->start(1000);
+}
+
+void MainWindow::update()
+{
+ progress->setValue(progress->value()+10);
+ if (progress->value() == 99) {
+ timer->stop();
+ progress->hide();
+ _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11));
+ addToPareto(_designSpaceLocation.first(), 0);
+ _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11));
+ addToPareto(_designSpaceLocation.first(), 1);
+ _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11));
+ addToPareto(_designSpaceLocation.first(), 2);
+ evaluateQualityMetrics();
+ }
+}
+
void MainWindow::metaModelChanged(QString newMetaModel)
{
_newModel->lstTopLevelContainers->clear();
@@ -436,7 +517,9 @@ void MainWindow::addToView(QWrappedObject *wrappedObject, QQuickItem *parent)
QQmlContext *context = new QQmlContext(_modelQuickView->engine()->rootContext());
wrappedObject->setQmlContextProperties(context);
_qmlComponent = new QQmlComponent(_modelQuickView->engine());
- _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 {}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).toLatin1(), QUrl());
+ int x = qrand() % 400;
+ int y = qrand() % 400;
+ _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 { x: %2; y: %3}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).arg(x).arg(y).toLatin1(), QUrl());
QQuickItem *item = 0;
if (_qmlComponent->isError()) {
@@ -448,6 +531,59 @@ void MainWindow::addToView(QWrappedObject *wrappedObject, QQuickItem *parent)
}
}
+ foreach (QObject *child, wrappedObject->children())
+ addToView(qobject_cast<QWrappedObject *>(child));
+
+ _qmlComponent->deleteLater();
+}
+
+void MainWindow::addToDesignSpaceView(QWrappedObject *wrappedObject, QQuickItem *parent)
+{
+ QQmlContext *context = new QQmlContext(_designSpaceQuickView->engine()->rootContext());
+ wrappedObject->setQmlContextProperties(context);
+ _qmlComponent = new QQmlComponent(_designSpaceQuickView->engine());
+ int x = qrand() % 400;
+ int y = qrand() % 400;
+ _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 { x: %2; y: %3}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).arg(x).arg(y).toLatin1(), QUrl());
+
+ QQuickItem *item = 0;
+ if (_qmlComponent->isError()) {
+ qWarning() << _qmlComponent->errors();
+ } else {
+ item = qobject_cast<QQuickItem *>(_qmlComponent->create(context));
+ if (item) {
+ item->setParentItem(parent ? parent:(qobject_cast<QQuickFlickable *>(_designSpaceQuickView->rootObject()))->contentItem());
+ }
+ }
+
+ foreach (QObject *child, wrappedObject->children())
+ addToDesignSpaceView(qobject_cast<QWrappedObject *>(child));
+
+ _qmlComponent->deleteLater();
+}
+
+void MainWindow::addToPareto(QWrappedObject *wrappedObject, int pos)
+{
+ QQmlContext *context = _paretoFrontQuickView->engine()->rootContext();
+ wrappedObject->setQmlContextProperties(context);
+ _qmlComponent = new QQmlComponent(_paretoFrontQuickView->engine());
+ int x = qrand() % 400;
+ int y = qrand() % 400;
+ _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 { x: %2; y: %3}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).arg(x).arg(y).toLatin1(), QUrl());
+
+ QQuickItem *item = 0;
+ if (_qmlComponent->isError()) {
+ qWarning() << _qmlComponent->errors();
+ } else {
+ item = qobject_cast<QQuickItem *>(_qmlComponent->create(context));
+ if (item) {
+ item->setParentItem(_paretoFrontQuickView->rootObject()->childItems().first()->childItems().first()->childItems().at(pos));
+ }
+ }
+
+ foreach (QObject *child, wrappedObject->children())
+ addToPareto(qobject_cast<QWrappedObject *>(child), pos);
+
_qmlComponent->deleteLater();
}
@@ -463,6 +599,19 @@ void MainWindow::dckMetricsVisibilityChanged(bool visible)
}
}
+void MainWindow::designSpaceChanged()
+{
+ _designSpaceQuickView->setSource(QUrl("qrc:/qml/designspaceview.qml"));
+ _designSpaceQuickView->setClearBeforeRendering(true);
+
+// foreach (QWrappedObject *object, _designSpaceLocation)
+// delete object;
+
+ _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11));
+ addToDesignSpaceView(_designSpaceLocation.first());
+ evaluateQualityMetrics();
+}
+
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::KeyPress && obj == ui->txeJavaScript) {
diff --git a/examples/uml/duse-mt/mainwindow.h b/examples/uml/duse-mt/mainwindow.h
index 1a60f22e..2295cb5d 100644
--- a/examples/uml/duse-mt/mainwindow.h
+++ b/examples/uml/duse-mt/mainwindow.h
@@ -64,6 +64,7 @@ namespace Ui {
class QWrappedObject;
class QMetaModelPlugin;
class QWrappedObjectModel;
+class QProgressDialog;
class NewDuseDesign;
@@ -79,6 +80,7 @@ public:
void readSettings();
private Q_SLOTS:
+ void update();
void on_actionFileNewModel_triggered();
void on_actionFileOpenModel_triggered();
void on_actionFileNewDuseDesign_triggered();
@@ -88,12 +90,19 @@ private Q_SLOTS:
void on_actionHelpAboutPlugins_triggered();
void on_actionHelpAboutDuSEMT_triggered();
void on_psbJSEvaluate_clicked();
+ void on_centralWidget_currentChanged(int);
+ void on_btnOptimize_clicked();
+ void evaluateQualityMetrics();
+ void setModelInspector(QList<QWrappedObject *> wrappedObjectList);
void metaModelChanged(QString newMetaModel);
void wrappedObjectChanged(QWrappedObject *wrappedObject);
void addToView(QWrappedObject *wrappedObject, QQuickItem *parent = 0);
+ void addToDesignSpaceView(QWrappedObject *wrappedObject, QQuickItem *parent = 0);
+ void addToPareto(QWrappedObject *wrappedObject, int pos);
void dckMetricsVisibilityChanged(bool visible);
+ void designSpaceChanged();
protected:
bool eventFilter(QObject *obj, QEvent *event);
@@ -101,11 +110,13 @@ protected:
private:
void loadPlugins();
void saveXmi(QWrappedObject *rootElement);
- QList<QWrappedObject *> loadXmi();
+ QList<QWrappedObject *> loadXmi(QString fileName = 0);
void populateDesignSpaceView(QWrappedObject *wrappedObject);
Ui::MainWindow *ui;
QWrappedObjectModel *_wrappedObjectModel;
+ QList<QWrappedObject *> _inputModel;
+ QList<QWrappedObject *> _designSpaceLocation;
QString _currentFileName;
QHash< QString, QPair<QMetaModelPlugin *, QJsonObject> > _loadedPlugins;
@@ -122,8 +133,12 @@ private:
QQmlComponent *_qmlComponent;
QQuickView *_welcomeQuickView;
QQuickView *_modelQuickView;
+ QQuickView *_designSpaceQuickView;
QQuickView *_metricsQuickView;
QQuickView *_paretoFrontQuickView;
+
+ QProgressDialog *progress;
+ QTimer *timer;
};
#endif // MAINWINDOW_H
diff --git a/examples/uml/duse-mt/mainwindow.ui b/examples/uml/duse-mt/mainwindow.ui
index d17facd9..e039ee04 100644
--- a/examples/uml/duse-mt/mainwindow.ui
+++ b/examples/uml/duse-mt/mainwindow.ui
@@ -34,7 +34,7 @@
<item row="0" column="0">
<widget class="QTabWidget" name="centralWidget">
<property name="currentIndex">
- <number>2</number>
+ <number>0</number>
</property>
<widget class="QWidget" name="tabWelcome">
<attribute name="title">
@@ -60,7 +60,7 @@
</widget>
<widget class="QWidget" name="tabModelView">
<attribute name="title">
- <string>Model View</string>
+ <string>Input Model</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_11">
<property name="leftMargin">
@@ -82,7 +82,7 @@
</widget>
<widget class="QWidget" name="tabDesignSpaceLocationView">
<attribute name="title">
- <string>Design Space Location View</string>
+ <string>Current Design Space Location</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_15">
<property name="leftMargin">
@@ -104,7 +104,7 @@
</widget>
<widget class="QWidget" name="tabParetoFront">
<attribute name="title">
- <string>Pareto Front View</string>
+ <string>Pareto Front</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_12">
<property name="leftMargin">
@@ -454,7 +454,10 @@
<number>4</number>
</property>
<property name="bottomMargin">
- <number>0</number>
+ <number>4</number>
+ </property>
+ <property name="verticalSpacing">
+ <number>4</number>
</property>
<item row="0" column="0">
<widget class="QTableWidget" name="tblDesignSpace">
@@ -484,6 +487,13 @@
</column>
</widget>
</item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="btnOptimize">
+ <property name="text">
+ <string>&amp;Optimize</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</widget>
diff --git a/examples/uml/duse-mt/qml/designspaceview.qml b/examples/uml/duse-mt/qml/designspaceview.qml
new file mode 100644
index 00000000..c4f95246
--- /dev/null
+++ b/examples/uml/duse-mt/qml/designspaceview.qml
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Sandro S. Andrade <sandroandrade@kde.org>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtUml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 2.0
+
+Flickable {
+ id: flickable
+ width: 200; height: 200
+ contentHeight: 2890
+ contentWidth: 1540
+ rightMargin: 0; leftMargin: 0; topMargin: 0; bottomMargin: 0
+ MouseArea {
+ anchors.fill: parent
+ onPressed: parent.focus = true;
+ }
+ Image {
+ anchors.fill: parent
+ fillMode: Image.Tile
+ source: "grid.png"
+ }
+}
diff --git a/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml b/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml
index dd344128..12a24f1d 100644
--- a/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml
+++ b/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml
@@ -43,6 +43,7 @@ import QtQuick 2.0
Item {
width: view.width; height: 188
property alias label: label.text
+ property alias value: root.value
Item {
id: root
property real value : 0
diff --git a/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml b/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml
index 164f7192..ff13b340 100644
--- a/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml
+++ b/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml
@@ -55,6 +55,7 @@ Rectangle {
snapMode: ListView.SnapOneItem;
delegate: Dial {
label: modelData.name;
+ value: modelData.value;
}
}
Rectangle {
diff --git a/examples/uml/duse-mt/qml/paretofrontview.qml b/examples/uml/duse-mt/qml/paretofrontview.qml
index 46b80ecc..69feb3dc 100644
--- a/examples/uml/duse-mt/qml/paretofrontview.qml
+++ b/examples/uml/duse-mt/qml/paretofrontview.qml
@@ -53,23 +53,14 @@ Rectangle {
Rectangle {
width: view.width; height: view.height
color: "#FFFEF0"
- Text { text: "Page 1"; anchors.centerIn: parent; font { family: "Korolev" } }
-
- Component.onDestruction: if (printDestruction) print("destroyed 1")
}
Rectangle {
width: view.width; height: view.height
color: "#F0FFF7"
- Text { text: "Page 2"; anchors.centerIn: parent; font { family: "Korolev" } }
-
- Component.onDestruction: if (printDestruction) print("destroyed 2")
}
Rectangle {
width: view.width; height: view.height
color: "#F4F0FF"
- Text { text: "Page 3"; anchors.centerIn: parent; font { family: "Korolev" } }
-
- Component.onDestruction: if (printDestruction) print("destroyed 3")
}
}
diff --git a/examples/uml/duse-mt/qml/welcomeview.qml b/examples/uml/duse-mt/qml/welcomeview.qml
index c9773cdc..b0d1dcee 100644
--- a/examples/uml/duse-mt/qml/welcomeview.qml
+++ b/examples/uml/duse-mt/qml/welcomeview.qml
@@ -41,7 +41,7 @@
import QtQuick 2.0
Image {
- fillMode: Image.Stretch
+ fillMode: Image.Pad
source: "welcome-background.jpg"
Row {
anchors { left: parent.left; right: parent.right; top: parent.top; margins: 20 }
diff --git a/examples/uml/r0.xmi b/examples/uml/r0.xmi
new file mode 100644
index 00000000..a1ed5ab7
--- /dev/null
+++ b/examples/uml/r0.xmi
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="CHR-20OS-RTTuner" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r1.xmi b/examples/uml/r1.xmi
new file mode 100644
index 00000000..bd23ec60
--- /dev/null
+++ b/examples/uml/r1.xmi
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="PIDController" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component1-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r10.xmi b/examples/uml/r10.xmi
new file mode 100644
index 00000000..a0fb6d3c
--- /dev/null
+++ b/examples/uml/r10.xmi
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="PIController" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r2.xmi b/examples/uml/r2.xmi
new file mode 100644
index 00000000..0f6c88d9
--- /dev/null
+++ b/examples/uml/r2.xmi
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="StaticStateController" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r3.xmi b/examples/uml/r3.xmi
new file mode 100644
index 00000000..7e5bfd1d
--- /dev/null
+++ b/examples/uml/r3.xmi
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="PrecompStaticStateController" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r4.xmi b/examples/uml/r4.xmi
new file mode 100644
index 00000000..84fe93e3
--- /dev/null
+++ b/examples/uml/r4.xmi
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="DynamicStateController" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r5.xmi b/examples/uml/r5.xmi
new file mode 100644
index 00000000..88c9b8b5
--- /dev/null
+++ b/examples/uml/r5.xmi
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="ZNTuner" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricTransductor" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r6.xmi b/examples/uml/r6.xmi
new file mode 100644
index 00000000..7d63ae68
--- /dev/null
+++ b/examples/uml/r6.xmi
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="CHR-0OS-DRTuner" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component1-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r7.xmi b/examples/uml/r7.xmi
new file mode 100644
index 00000000..9d6c451d
--- /dev/null
+++ b/examples/uml/r7.xmi
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="CHR-20OS-RTTuner" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r8.xmi b/examples/uml/r8.xmi
new file mode 100644
index 00000000..eba72d42
--- /dev/null
+++ b/examples/uml/r8.xmi
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="CCTuner" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="CCTuner" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component1-port2"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>
diff --git a/examples/uml/r9.xmi b/examples/uml/r9.xmi
new file mode 100644
index 00000000..7ec465fd
--- /dev/null
+++ b/examples/uml/r9.xmi
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile">
+ <uml:Model name="MyModel" xmi:id="MyModel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0">
+ <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Component" name="CHR-0OV-RTTuner" xmi:id="MyModel-PIDController">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/>
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/>
+ <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/>
+ <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0">
+ <role xmi:idref="MyModel-Component1-port1"/>
+ </end>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1">
+ <role xmi:idref="MyModel-Component2-port2"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2">
+ <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/>
+ <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name">
+ <type href=":/metamodels/PrimitiveTypes.xmi#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication">
+ <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/>
+ </profileApplication>
+ </uml:Model>
+ <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/>
+</xmi:XMI>