Consolidation concepts
This series of articles will describe another main feature of the ShareAspace core. This is the logic used by the ShareAspace consolidation engine for deciding if an incoming data should be created, modified or left unmodified.
The basic principle of the consolidation engine follows the following process:
- A first check is performed to know if the incoming data already exists in the storage (using the ShareAspace Model uniqueness rules)
- If the data doesn't already exist, new data will be created if possible, using creation context and consolidation settings or
- If the data already exists,
- an evaluation of the difference between the incoming data and the existing one will be performed
- then based on the creation context and consolidation settings, the decision for modifying or not the existing data will be evaluated
ShareAspace has two consolidation engines, one for importing SoftTypes called the SoftType consolidator
. And another one, for importing pure data according to the ShareAspace PLM model, called the Unit of Information consolidator
.
Both consolidation setup engines are using the ShareAspace Uniqueness rules for matching differences against the data already in the store. The only difference is the way they react to the result of the differences for preparing the data before pushing it to the consolidation engine.
SoftType consolidation
The SoftType Consolidator works like if the data that is being pushed in the ShareAspace is considered as the new truth:
- Everything that is not included in the data being pushed is
terminated
in ShareAspace (i.e. the end date effectivity controlled relationships will be set to the session date), - Everything that is updated in the data being pushed is
recreated
in ShareAspace , the actual value in ShareAspace store isterminated
and a new value iscreated
, - Everything that is
new
is the data being pushed iscreated
in ShareAspace .
Note
The ShareAspace SoftType Consolidator can not be configured, no settings are available to an end user for changing the way incoming data is prepared against existing data in a ShareAspace storage.
Unit of Information consolidation
The Unit of Information Consolidator is based on settings that will indicate how the data being pushed is treated.
There are currently different categories of settings dealing with different aspects of the ShareAspace model:
For instance, Effectivity impact settings
. These settings are ruling the way effectivity of incoming data is treated before the consolidation.
Note
The ShareAspace Classic Consolidator has settings. Those act on different aspects of the ShareAspace model.
Consolidation error messages
Summary of the different supported exceptions and their presentation:
Exception | Summary | Detailed | |
---|---|---|---|
NotEnoughPermissionsToCreateSoftType | Not enough permissions to create an instance ({_defaultPresentation}) of SoftType '{_definitionId}', restricted on AllowedRoles for {_roles}. | ||
NotEnoughPermissionsToDeleteSoftType | Not enough permissions to delete an instance ({_defaultPresentation}) of SoftType '{_definitionId}', restricted on AllowedRoles for {_roles}. | ||
GloballyUniqueError | Global uniqueness collision between ({createdPresentation}) and existing ({existingPresentation}) | ||
LocallyUniqueError | Uniqueness collision in change set for instance {defaultPresentation} | Uniqueness collision in change set between ({firstPresentation}) and ({secondPresentation}). | |
ModelEffectivityError | Entry effectivity error in an instance of '{GetSoftTypeOrTypeId(uoi)}' for an entry ({entry.DefaultPresentation()}) | Entry effectivity error in ({entry.DefaultPresentation()}) [start: {start}, end: {end}, role: {role}] | |
ModelEffectivityUniqueError | Entry effectivity overlap in an instance of '{GetSoftTypeOrTypeId(uoi)}' for an entry ({entry.DefaultPresentation()}) | Entry effectivity overlap between ({entryA.DefaultPresentation()}) [start: {startA}, end: {endA}, role: {role}] and ({entryB.DefaultPresentation()}) [start: {startB}, end: {endB}, role: {role}] | |
ModelError | Expected: ({entry.DefaultPresentation()}).{attributeName} [{_lower}..{_upper}], Actual: {_actual} | ||
ModelUniqueError | Entry uniqueness collision between ({entryA.DefaultPresentation()}) and ({entryB.DefaultPresentation()}) | ||
NotEnoughPermissionsToAddParticipant | Not enough permissions to add a Participant. Expected permission(s): '{_expectedPermission}'. | ||
NotEnoughPermissionsToGrantExternalAccessValidationError | Not enough permissions to grant '{_grantedRights}' to Participant '{_receiver}'. Expected permission(s): '{_expectedPermission}'. | ||
SoftTypeRuleError | ({defaultPresentation}) Rule: {softType.Id} {attributeName} [{rule.Lower} .. {rule.Upper}], Actual: {actual} | ||
SoftTypePortRuleError | ({defaultPresentation}) {errorMessage} |