Important: When an XMI description is read, any model element that already exists in the server model interpreter (because its has been declared using the standard macros) is not replaced by a corresponding dynamic element. As a consequence, if the XMI description defines a dynamic class that already exists in the Server application as a static class declared to the server model interpreter by the ILS_OBJECT_DECL macro, this static class will not be replaced by the dynamic one. For example if a C++ class Network is declared to the model interpreter and this class is also declared in an XMI file, the resulting class is the union of the C++ class and the dynamic class. The C++ class will be complemented by the dynamic description of this class. The attributes that do not exist in C++ but do exist in the XMI decription are added as dynamic attributes. |
UML Basic Type | Rogue Wave Server Type |
boolean | IlsBoolean |
char | char |
double | double |
float | float |
short, int, long | long |
string | IlsString |
other | Rogue Wave Server type or user-defined type if available |
UML | Rogue Wave Server | Comments |
Attribute | Dynamic attribute | If the attribute scope is classifier, it is mapped to a dynamic attribute of the static model. These attributes are shared by all instances of the corresponding classes. These attributes are regular, which means that changing their value does not trigger any notification. If an initial value is specified in the UML model, this value will be assigned to the dynamic attribute. |
Association | Dynamic relation | See More About the Association/Relation Mapping below. |
Class | No dynamic class is created if its static equivalent already exists in the server. | |
Generalization | Inheritance link | Between two dynamic classes or between a dynamic class and a static class. The Rogue Wave Server dynamic modeling feature does not support multiple inheritance. |
Method | Dynamic member function |
Note: Rogue Wave Server does not differentiate between the various types of aggregation and considers the relation as an ownership relation both for shared and composite aggregations. |
Note: The Server relation is not mandatory if the mandatory Server property attached to the navigable role is false. |
Property | Possible Values | Default Value | Comment |
dynamic | true, false | true | All classes described in the provided UML model are registered to the server model interpreter. If the corresponding class does not exist, it will be declared as a dynamic class. Existing static classes in the dynamic Server application will not be replaced by dynamic classes. Use this property to hide internal classes. The hidden classes must not be the targets of any relations specified in the UML description. |
identifier | <attribute name> | If this property exists, it must designate an attribute of the class that will be used as the object identifier. See Identified Objects. | |
useDictionary | true, false | false | Specifies whether instances of this class must be stored in a global dictionary. |
Property | Possible Values | Default Value | Comment |
dynamic | true, false | true | By default, all attributes are considered dynamic attributes if they do not already exist in the server model interpreter. |
type | entry, derived, regular | regular | Specifies the Server attribute type. Regular attributes do not trigger notification when modified. |
check | true, false | false | When this property is set, Rogue Wave Server invokes a check function before the attribute is assigned. See Check Functions. |
Property | Possible Values | Default Value | Comment |
dynamic | true, false | true | By default, all methods are considered dynamic methods and declared to the server model interpreter. |
Property | Possible Values | Default Value | Comment |
dynamic | true, false | true | By default, all associations are considered as dynamic relations. If the direct role of an association (i.e. the navigable one) is marked as not dynamic, the corresponding association is not dynamic. |
navigable | true, false | - | By default, the UML property value is used. This property can be used to force navigability of the role. |
mandatory | true, false | true | Available only for navigable roles and if the relation is unary. Specifies whether the unary relation is mandatory or not. By default, the UML multiplicity is used to distinguish between mandatory (1) and not mandatory (0..1) relations. This property can be used to force the Server relation property. |
ownership | true, false | true | Specifies whether the relation is an ownership relation. If this property is missing, the relation type is determined by the UML aggregation property of the relation. |
multiplicity | unary, nary | - | Specifies whether the relation must be unary or n-ary. If this property is missing, the relation type is determined by the UML multiplicity: if the UML multiplicity is "1" or "1..1" or "0..1", the relation is considered unary, otherwise it is considered n-ary. |
implementation | list, set, pointer | list | Specifying pointer for this property means that the underlying relation will not be implemented as a Server relation. Only available for unary relations, this value allows you to specify a simple relation implemented as a direct pointer with no inverse relation. Specifying list or set for n-ary relations determines their underlying implementation. Moreover, if you specify set, the n-ary relation will be implemented as a set relation and in this case, the target class must have an identifier attribute whose value is non-null. specifying sortedList for the implementation allows to have a sorted relation. The objects in this relation must be identified and the relation is sorted on the identifier in alphanumeric order. |
check | true, false | false | When this property is set, Rogue Wave Server invokes a check function before the relation is assigned. See Check Functions. |
Important: XMI tags, attributes, and values are case-sensitive for the Rogue Wave Server XMI parser. |
XMI Tag | Mandatory Attribute | Comment |
Foundation.Core.Class | xmi.id | This tag defines a new class. |
Foundation.Core.ModelElement.name | Mandatory child class name | |
Foundation.Core.Generalization | xmi.idref | Reference to a generalization |
Foundation.Core.AssociationEnd | xmi.idref | Reference to an association end |
XMI Tag | Mandatory Attribute | Comment |
Foundation.Core.Generalization | xmi.id | This tag defines a new generalization relation between two classes. The generalization relation is stored at package level. This relation is referenced by the supertype class and the subtype class. |
Foundation.Core.Generalization.supertype | Mandatory child of Foundation.Core. Generalization, this tag references the supertype of the generalization. This tag must have a child that is a reference to a class. |
XMI Tag | Mandatory Attribute | Comment |
Foundation.Core.Attribute | xmi.id | This tag defines a new attribute for the current class. |
Foundation.Core.ModelElement.name | Mandatory child. attribute name | |
Foundation.Core.StructuralFeature.type | Mandatory child. The first child of this tag references the attribute type as a primitive data type or an existing class. See UML/Server Types Mapping. | |
Foundation.Core.Feature.ownerScope | xmi.value | This tag is used to specify whether the attribute scope is instance or classifier. An attribute with “classifier” scope will be mapped to a Server static dynamic attribute. |
<Foundation.Core.Attribute.initialValue> <Foundation.Data_Types.Expression> <Foundation.Data_Types<Expression.body> defValue</Foundation.Data_Types.Expression.body> </Foundation.Data_Types.Expression> </Foundation.Core.Attribute.initialValue> | This tag is used to specify an initial value for the attribute. |
XMI Tag | Mandatory Attribute | Comment |
Foundation.Core.Operation | xmi.id | This tag defines a new method for the current class. |
Foundation.Core.ModelElement.name | Mandatory child. method name | |
Foundation.Core.BehavioralFeature. parameter | Mandatory child of Foundation.Core.Operation. This tag introduces the subtree of the operation parameter. |
XMI Tag | Mandatory Attribute | Comment |
Foundation.Core.Parameter | xmi.id | This tag defines a new parameter for the current method. |
Foundation.Core.ModelElement.name | Mandatory child. Parameter name, if any | |
Foundation.Core.Parameter.kind | xmi.value | Optional child of Foundation.Core.Parameter. If the value of xmi.value is “return”, the corresponding parameter is the return parameter of the current method. |
Foundation.Core.Parameter.type | Mandatory child. Its only child is a reference to the primitive data type or the class that is the type for this parameter. |
XMI Tag | Mandatory Attribute | Comment |
Foundation.Core.AssociationEnd | xmi.id | This tag defines a new association end. If directly referenced by a class, this association end is considered to be the opposite role of the corresponding association for this class. The other association end of the association is the direct role. |
Foundation.Core.ModelElement.name | Mandatory child. role name if any. | |
Foundation.Core.AssociationEnd.type | Mandatory child of the direct role. The first child of this tag references the target type of the association. It must be an existing class. | |
Foundation.Core.AssociationEnd. isNavigable | xmi.value | Mandatory child of the direct role. If xmi.value is true, the association is considered a direct relation for this class. Otherwise, it is considered an inverse relation. |
Foundation.Core.AssociationEnd. aggregation | xmi.value | Mandatory child of the opposite role. If xmi.value is “none”, the direct relation is considered an ownership Server relation. Otherwise, the relation is considered a Server use relation. Inverse relations cannot be aggregated. |
Foundation.Core.AssociationEnd. multiplicity | Mandatory child of the direct role. The supported values are: 0..*: the Server relation is n-ary. 0..1: the Server relation is unary and not mandatory. 1: the Server relation is unary and mandatory |
UML Basic Type | Rogue Wave Server Type |
any, Any, IlsAny | IlsAny |
bool, boolean, IlsBoolean, Boolean | IlsBoolean |
char, Char | char |
float, Float | float |
double, Double | double |
long, int, short, Integer | long |
string, String, IlsString | IlsString |