Cas d'utilisation (partage)
Sommaire |
Attributs privés
Définition
Un attribut privé est un attribut dont la valeur peut être différente d'un périmètre à un autre pour un même objet partagé. Par exemple un Tiers de niveau Groupe peut avoir des conditions commerciales différentes d'une société à une autre.
Implémentation
Les attributs privés d'une classe sont stockés dans une classe séparée (dite de partage) réalisant une association entre cette classe et la classe des périmètres. Cette classe de partage est créée automatiquement et dynamiquement par le framework.
Les attributs privés d'une classe sont tous définis au même niveau.
Escalade
Lorsqu'un objet est partagé la valeur des attributs privés doivent être définis dans chacun des périmètres sociétés où l'objet est utilisé; par exemple pour un Tiers groupe partagé par deux sociétés il faut définir les conditions comerciales sur chacune des sociétés.
L'escalade permet de gérer les valeurs attributs privés par exception :
- Si les valeurs sont définies au niveau Société ces valeurs sont utilisées
- Sinon, Si les valeurs sont définies au niveau Domaine ces valeurs sont utilisées
- Sinon, Si les valeurs sont définies au niveau Groupe ces valeurs sont utilisées
Saisie des attributs privés
Les cas d'utilisation normal de saisie des attributs privés sont :
- L'utilisateur crée un nouvel objet partagé, sans action particulière il saisie les valeurs des attributs privés. Ces valeurs sont saisies au niveau de partage de l'objet.
- L'utilisateur désir définir les valeurs de cascade des attributs privés, il ouvre le dialogue de configuration des niveau de partage et dans l'onglet "Partage d'attribut" il coche saisie au niveau "Groupe" ou "Domain", il saisie ensuite les valeurs des attributs. Ces valeurs sont saisie au niveau de partage de l'objet.
Les zones de saisie des attributs privés sont accessibles si :
- L'utilisateur n'a pas sélectionné un niveau de saisie ET le niveau de partage des attributs privé est égal au niveau de partage de l'objet
- L'utilisateur à sélectionné un niveau de saisie ET le niveau de partage des attributs privé est égal au niveau sélectionné
Impacts sur le moteur de règle
Cas de test
Les combinaisons possibles suivant le périmètre de partage de la classe métier et le niveau d'un objet de cette classe sont les suivantes :
Périmètre du domaine de la classe | Niveau de l'objet | Niveau des attributs |
Groupe | Groupe (*) | Groupe (*) |
Groupe | Groupe | Domaine |
Groupe | Groupe | Société |
Domaine | Groupe | Groupe |
Domaine | Groupe | Domaine |
Domaine | Groupe | Société |
Domaine | Domaine (*)(**) | Domaine (*) |
Domaine | Domaine | Société |
Domaine | Société | Société |
Société | Société (*) | Société (*) |
(*) : Niveau par défaut utilisé lors de la création.
(**): Si l'utilisateur n'a pas les droits de création le niveau société est utilisé, puis le niveau groupe
Relation entre le périmètre du domaine de la classe métier et le niveau d'un objet de la classe :
- Si le périmètre est Groupe un objet ne peut être que de niveau Groupe.
- Si le périmètre est Domaine un objet peut être de niveau Groupe, Domaine ou Société.
- Si le périmètre est Sociétée un objet ne peut être que de niveau Société.
Relation entre le niveau d'un objet et le niveau des attributs privés de cet objet :
- Si l'objet est de niveau Groupe les attributs privés peuvent être définis au niveau Groupe, Domaine ou Société.
- Si l'objet est de niveau Domaine les attributs privés peuvent être définis au niveau Domaine ou Société.
- Si l'objet est de niveau groupe les attributs privés ne peuvent être définis qu'au niveau Société.
Gestion des rôles
Compositions
Règle des composants : Le niveau de partage d'un composant est initialisé au niveau de partage du composé.
Règle des références : Un objet ne peut pas référencer un objet de niveau supérieur,
par exemple un objet de niveau groupe ne peut pas référencer un objet de niveau société.
Règle des associations : Les références des associations ne sont pas contrôlées.
Modification du niveau de partage
La modification du niveau de partage d'un objet peut poser des problèmes d'intégrité, par exemple :
- L'objet peut être référencé par d'autre objets, ces objets sont-ils compatibles avec le nouveau niveau de l'objet (règle des références) ?
- L'objet peut posséder des attributs privés dans plusieurs périmètres, que deviennent ces attributs privés ?
- L'objet peut être un composant, la modification du niveau de partage a-t-elle un sens en dehors du context du composé ?
Certains de ces problèmes ne sont pas forcément contrôlable, par exemple la règle des références ne peut pas être assurée lors du changement de niveau d'un objet.
Pour ces raisons le changement de niveau d'un objet n'est possible que vers un niveau inférieur. Les changements possibles sont donc :
- Niveau Société vers Niveau Domaine.
- Niveau Société vers Niveau Groupe.
- Niveau Domaine vers Niveau Groupe.
Compteurs et identités
Les compteurs sans modèle
Les compteurs qui n'utilisent pas de modèle sont partagés par tous les perimètres du Dossier.
Les compteurs avec modèle
Une instance d'un compteur avec modèle est partagée :
- Par le périmètre de l'objet si le compteur modèle est tiré à l'écriture .
- Par le périmètre de la Société de travail si le compteur modèle n'est pas tiré à l'écriture.
Les identités
Les attributs de type identité sont partagés par tous les perimètres du Dossier.
Initialisation des partages
Les périmètres de partage de type Dossier ou Activité peuvent être initialisés par le mécanisme d'initialisation des paquets métier basé sur les classes TRegister.
La classe TRegister d'un paquet de partage peut contenir une méthode d'initialisation pour chaque domaine métier du paquet; cette méthode doit avoir le nom du domaine métier et pour signature :
procedure <Nom du domaine métier>(const iOIDPerimeter:TOID; const iLevel:Integer);
Ces méthodes sont exécutées :
- Lors de la création d'un périmètre de partage du domaine
- Lors de l'entrée dans une application du dossier
- Lors de la synchronisation de la base de données du dossier
Une liste des méthodes exécutée est maintenue par le modèle de partage de sorte qu'une méthode ne soit exécutée qu'une seule fois lors de l'entrée dans une application du dossier.
Lors de la synchronisation de la base données du dossier cette liste est réinitialisée et toutes les méthodes sont réexécutées.
Le périmètre Dossier, qui n'est pas associé à un domaine métier, exécute la méthode de nom <Dossier>
Rappel : Le nom d'une classe TRegister doit être TRegister<Nom du paquet métier>
Remarque : Si la classe support d'un paquet de partage contient une méthode Initialize elle sera exécutée lors de l'entrée dans une application du dossier par le mécanisme commun d'initialisation des paquets métiers.
Cumuls
Trois cas sont considérés :
La classe Cumul n'est pas dans un domaine.
Dans ce cas l'information de partage de la classe cumulé est ignorée, le cumul est donc globale sur tous les périmètres du dossier.
Les classes Cumul et Cumulé sont dans un domaine.
Dans ce cas l'information de partage est un critère implicite du cumul, le cumul est donc réalisé par périmètre.
Si les domaines Cumul et Cumul sont incohérents les objets cumulés créés pouront ne pas être accessible. Par exemple dans le cas de deux domaines métiers différents les périmètres activités de la classe cumulée ne sont pas visible dans le domaine de la classe cumul.
La classe Cumul est dans un domaine mais pas la classe cumulé.
Dans ce cas le périmètre Dossier est utilisé comme périmètre de partage de la classe cumul.
Processus Métiers
Evènements
Le périmètre de partage de la société active est enregistré avec l'évènement
property oidEventPerimeter:TOID; property EventParameterName:string;
Le dialogue de propriété du moteur de Processus Métiers permet de sélectionner les périmètres de partage des évènements qui seront pris en compte.
Si aucun périmètre n'est sélectionné tous les évènements de tous les périmètre du dossier sont pris en compte.
Le dialogue de propriété d'un processus permet de sélectionné un périmètre lorsque la création d'une instance du processus doit créer un objet.
Notez que le périmètre indiqué ici n'est pas forcément le périmètre des évènements métiers pris en compte par l'instance.
Exportation
Exportation des informations de partage
Inclure dans le descriptif d'export l'attribut ShareInfo qui contient le nom du périmètre de partage de l'objet :
Importation
Fonctions disponibles dans l'évaluateur d'expression
function ShareSociety:string;
Retourne le nom de la Société de travail active.
function ShareOIDSociety:TOID;
Retourne l'identifiant de la Société de travail active.
Filtrer les données sources sur un périmètre de partage
Utilisez la pseudo colonne "Importer" pour filtrer les lignes sources suivant le périmètre de la Société de travail
Affecter le périmètre de partage aux objets importer
TODO
Automates de traitement
Caches
Le gestionnaire de partage maintient trois caches :
Un cache des périmètres
Clé | oid périmètre |
Valeurs | Libellés du périmètre Niveau de partage du périmètre (immuable) |
Invalide si | Les libellés du périmètre change |
Invalidé | Jamais |
Un cache des périmètres autorisés pour un périmètre société
Clé | oid périmètre (société) domaine métier |
Valeurs | Périmètre autorisé pour le périmètre dans le domaine |
Invalide si | Le périmètre autorisé d'un périmètre (société) change. |
Invalidé | Jamais |
Un cache des droits utilisateurs
Clé | oid entité authentifié oid périmètre |
Valeurs | Droits de l'utilisateur sur le périmètre. |
Invalide si | Les droits de l'utilisateur change. |
Invalidé | A la connexion de l'utilisateur. |