Как применить стереотип из стандартного профиля UML внутри преобразования QVTo?

Внутри преобразования QVTo я хочу применить <<Create>> стереотип из стандартного профиля UML во вновь созданную операцию. На странице 678 спецификации UML говорится, что она применима к поведенческим особенностям и, следовательно, к операциям. Я попробовал следующее внутри помощника, но безрезультатно:

var _result := object Class {};

var const := object Operation {
    name := "Constructor";
    _class := _result;

    ownedParameter += object Parameter{
        name := "return";
        type := _result;
        direction := ParameterDirectionKind::_return;
    };
};

_result.ownedOperation += const;

log("", SP.ownedStereotype![name = "Create"]));
// ", data: org.eclipse.uml2.uml.internal.impl.StereotypeImpl@4e796d93 (name: Create, visibility: <unset>) (isLeaf: false, isAbstract: false, isFinalSpecialization: false) (isActive: false)"

log("", const.getApplicableStereotypes());
// , data: []

log("", const.applyStereotype(SP.ownedStereotype![name = "Create"]));
// ", data: <Invalid>"

Преобразование работает на inout sourceModel : UML и я проверил, что профиль применяется к sourceModel заблаговременно:

property SP = sourceModel.rootObjects()![Model].getAppliedProfile("StandardProfile");

Что я делаю не так и как это делается правильно?

1 ответ

Я обнаружил, что могу применить стереотип из контекста отображения после того, как он был возвращен помощником и добавлен к элементу, подобному этому:

element.allSubobjectsOfKind(Operation)
    // TODO: Refine selector if there is more than one Operation
    .applyStereotype(SP.ownedStereotype![name = "Create"]);

Я подозреваю, что внутри помощника элемент еще не принадлежит выходной модели, и поэтому не может быть применен стереотип из профиля, который применяется к модели.

Другие вопросы по тегам