如何在 QVTo 转换中应用来自 UML 标准配置文件的构造型?
How to apply a stereotype from UML Standard Profile inside QVTo transformation?
在 QVTo 转换中,我想将 UML 标准配置文件中的 <<Create>>
构造型应用于新创建的操作。在 UML spec 的第 678 页上,它说它适用于 BehavioralFeatures,因此适用于 Operations。我在助手中尝试了以下操作,但无济于事:
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");
我做错了什么,如何正确完成?
我发现我可以在 helper 返回并添加到元素后应用映射上下文中的构造型,如下所示:
element.allSubobjectsOfKind(Operation)
// TODO: Refine selector if there is more than one Operation
.applyStereotype(SP.ownedStereotype![name = "Create"]);
我怀疑,在助手内部,元素不属于输出模型,因此不能应用来自应用于模型的配置文件的原型。
在 QVTo 转换中,我想将 UML 标准配置文件中的 <<Create>>
构造型应用于新创建的操作。在 UML spec 的第 678 页上,它说它适用于 BehavioralFeatures,因此适用于 Operations。我在助手中尝试了以下操作,但无济于事:
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");
我做错了什么,如何正确完成?
我发现我可以在 helper 返回并添加到元素后应用映射上下文中的构造型,如下所示:
element.allSubobjectsOfKind(Operation)
// TODO: Refine selector if there is more than one Operation
.applyStereotype(SP.ownedStereotype![name = "Create"]);
我怀疑,在助手内部,元素不属于输出模型,因此不能应用来自应用于模型的配置文件的原型。