This diagram describes the inheritance tree of a customized entity MyCustoProductRef (defined in MYCUSTO metadata file) up to the common base entity PLMEntity (defined in PLMABSTRACT metadata file) going through the modeler (here PRODUCT) and PLMCORE layers:

Security masks can be defined for the entities and attributes of the:
- Modeler layer
- Customization layer
- Applicative extension layer
A security mask on customized metadata is required since there is mask inheritance at runtime. No mask is defined on the upper layers.
A security mask on modeler metadata is useful for these items:
- Modeler entities that are not customizable (not CAA_Derivable and not Abstract in metadata) but can either be extensible or not.
- Any extensions of such non-customizable modeler entities. A security mask defined on an extension only affects the attributes of that extension and not the attributes of the extended modeler entity. The app combines the two masks to display the views for an extension.
- Modeler entities that are "usable" types (as compared to "authoring" types) in an environment, using the READ, QUERY, and EZQUERY operations.
- Any customized entities. You can incorporate the mask defined on the inherited modeler attributes when using the VPLMPosMaskGenerator mask file generator tool.
The client runtime can use any new
(customized) entities even if no mask is defined. A mask is
computed on the fly on the client side for each new entity, as if a
mask had been generated and compiled using the mask tools on the
server side. The client-side mask concatenates the parent entity's mask (if it exists) with a mask computed from
the entity's own attributes according to their IP Protection. For the Tree mask, the resulting mask is the parent's Tree
mask (if it exists).
IP Protection | Masked Methods |
---|
Attribute Protection | Create | Write | Read | Query EzQuery |
EXTERNAL IN or
FREE and CustoUserAccess = ReadWrite | Editable | Editable | Not editable | Editable |
EXTERNAL, EXTERNAL RO or
FREE and CustoUserAccess = ReadOnly
| Not editable in new typing for specializations, customer
extensions and deployment extensions. Not visible in any
other cases. | Not editable | Not editable | Editable |
INTERNAL, INTERNAL RO, PRIVATE or
FREE and CustoUserAccess =None
| Not visible |
You can define a mask for an entity to inherit the definition from a parent entity. This mask definition is completed at runtime by the
mask defined on the parent entity. This runtime computation is done on the fly on the client
side when necessary.
In all views defined by the mask, the
attributes are ordered according to the entity hierarchy, beginning
with the top most entity (for example, attributes of entity P will
appear before attributes of entity T in all views).
Use the
@Inherits
annotation with the ENTITY
command to specify
that this particular entity inherits from its parent entity's
mask. The inheritance capability applies at the entity level inside
the corresponding package (the source mask file) for all the
defined views. When the mask definition of an inheriting entity T is
used on the client side, the mask of its parent entity P, is searched to complete this mask definition.
By default, a mask stands on its own (no inheritance) unless you add the @Inherits
annotation to the entity definition. A local mask includes the mask for the specific entity, and its parent entities. Specifically:
Mask Type | Description |
---|
Stand-alone (no inheritance) | Completes and overrides
the parent entity's mask. Future modifications of the parent
entity's mask are not propagated to this mask unless this mask
is generated again |
Local (inherits from parent entity) | Restricted to the attributes of this
entity while keeping the parent entity's mask for all inherited
attributes. Future modifications of the parent entity's mask are automatically inherited. |
For local mask definitions, add the @Inherits
annotation at the end of the ENTITY
declaration line and remove all
attribute declarations ATTR/FATTR
referring to an inherited
attribute. Any ATTR/FATTR
declarations for an
inherited attribute override the ones defined in the parent's
mask (except for the order).