API (partage)
De Wiki1000
Sommaire |
Contexte de partage
Le contexte de partage est une sous partie du contexte de l'utilisateur qui contient l'ensemble des informations de partages (société de travail, entité authentifiée, sociétés de restitution .... )
- Lorsqu'aucune transaction n'est démarrée le contexte de partage utilisé par le framework est le contexte contenu dans le contexte de l'utilisateur.
- Lorsqu'une transaction est démarrée le contexte de partage utilisé par le framework est une copie du contexte de partage de l'utilsiateur créée au moment du démarrage de la transaction. Cette copie est propre à la transaction et à la même durée de vie que la transaction.
Le contexte de partage modifié par le dialogue de partage est toujours celui du contexte de l'utilisateur.
Attributs de partage sur un objet métier
oidShare | TOID | Read only | Périmètre de partage (oid de la classe TdbfPerimetrePartage) |
ShareInfo | String | Read only | Information de partage (nom du périmètre de partage) |
ShareLevel | Integer | Read only | Niveau de partage |
ShareInstanceLevel | Integer | Read only | Niveau de partage des attributs privés |
ShareInstanceInfo | String | Read only | Informations de partage des attributs privés |
ShareInstanceRequestedLevel | Integer | Read/Write | Niveau de partage demandé pour les attributs privés |
Déclenchement de règle sur un changement du niveau de partage
Utiliser ShareLevel comme déclencheur.
API du ClassManager
Propriétés
ShareEnable | Cette propriété retourne True si la base de données courante (defDataBase) supporte le partage. |
ShareRestitutionMode | Cette propriété retourne True si le contexte de partage est en mode restitution. |
ShareGroupMode | Cette propriété retourne True si le contexte de partage est en mode groupe. |
ShareSociety | Cette propriété retourne l'OID du périmètre de partage de la société de travail courante. |
ShareSocietyPerimeter | Cette propriété retourne l'objet périmètre de partage de la société de travail courante. |
ShareGroup | Cette propriété retourne l'OID du périmètre de partage du groupe. |
ShareGroupPerimeter | Cette propriété retourne l'objet périmètre de partage du dossier. |
ShareUserSocietyCount | Cette propriété retourne le nombre de société, sur lequel l'utilisateur à accès, dans le dossier. |
ShareUserSocieties | Cette propriété retourne l'OID de partage d'une société, sur lequel l'utilisateur à accès, du dossier. |
ShareUserSocietyPerimeters | Cette propriété retourne l'objet périmètre d'une société, sur lequel l'utilisateur à accès, du dossier. |
ShareRestitutionSocietyCount | Cette propriété retourne le nombre de société actuellement en restitution. |
ShareRestitutionSocieties | Cette propriété retourne l'OID de partage d'une société actuellement en restitution. |
ShareUserSocietyCount | Cette propriété retourne le nombre de société utilisable par l'utilisateur. |
ShareUserSocieties | Cette propriété retourne l'OID de partage d'une société utilisable par l'utilisateur. |
ShareUserSocietyPerimeters | Cette propriété retourne l'objet périmètre de partage d'une société utilisable par l'utilisateur. |
Fonctions
CreateSocietyPerimeter | Création d'un périmètre Société. |
FindObjectAnyWhere | Recherche un objet en incluant tous les périmètres de partage. |
PushShareContext | Empile le contexte de partage. |
PopShareContext | Dépile le contexte de partage. |
LockSocietyPerimeter | Verrouille le contexte société. |
UnLockSocietyPerimeter | Dèverrouille le contexte société. |
Exemples
//Procedure _TestShareAPI; var idx : Integer; s : String; stag : String; save : String; vStr : String; Function EvalBoolean(aBool:Boolean):String; Begin if aBool then Result := 'Oui' else Result := 'Non'; End; begin stag := #10; s := stag + Format(_TP('Mode Restitution : %s'), [EvalBoolean(ClassManager.ShareRestitutionMode)]); s := s+stag + Format(_TP('Mode Groupe (Dossier) : %s'), [EvalBoolean(ClassManager.ShareGroupMode)]); // s := s+stag + Format(_TP('Groupe (oid) : %s'), [ClassManager.ShareGroup]); // s := s+stag + Format(_TP('Groupe (périmètre) : %s'), [ClassManager.ShareGroupPerimeter.Caption]); // s := s+stag + Format(_TP('Societé actuelle (oid) : %s'), [ClassManager.ShareSociety]); // s := s+stag + Format(_TP('Societé actuelle (périmètre) : %s'), [ClassManager.ShareSocietyPerimeter.Caption]); // s := s+stag+'Liste de Restitutions : '; for idx:=0 to ClassManager.ShareRestitutionSocietyCount-1 do s := s+stag+ClassManager.ShareRestitutionSocieties[idx]; // s := s+stag+'Liste de Société(s) de l''utilisateur (oids)'; for idx:=0 to ClassManager.ShareUserSocietyCount-1 do s := s+stag+ClassManager.ShareUserSocieties[idx]; // s := s+stag+'Liste de Société(s) de l''utilisateur (name) : '; for idx:=0 to ClassManager.ShareUserSocietyCount-1 do s := s+stag+ClassManager.ShareUserSocietyPerimeters[idx].Caption; // s := s+stag+'Test commutation de la société courante :'; save := ClassManager.ShareSociety; for idx:=0 to ClassManager.ShareUserSocietyCount-1 do Begin vStr := 'OK'; try classmanager.sharesociety := classmanager.ShareUserSocieties[idx]; except vStr := 'failed'; end; s := s+stag+ Format('%s : %s', [classmanager.ShareUserSocietyPerimeters[idx].caption, vstr]); End; ClassManager.ShareSociety := save; ShowMessage(s); end;
Traitement multi-société :
//Procedure ModifierClasseA; var idx,ido:Integer; ls:ClasseAList; ss,stag,SaveCtx:string; obj:ClasseA; begin ss := ''; stag := #13; SaveCtx := ClassManager.ShareSociety; try ClassManager.BeginTran; try for idx:=0 to ClassManager.ShareSocietyCount-1 do begin ClassManager.ShareSociety := ClassManager.ShareSocieties[idx]; // ls := ClasseA.CreateList; ls.AddWhere('oidShare=%1','','Caption',True,-1,[ClassManager.ShareSociety]); for ido:=0 to ls.Count-1 do begin obj := ls.Refs[ido]; obj.unEntier := obj.unEntier+1; ss := ss+stag+obj.uneChaine; stag := #13; end; end; showMessage(ss); ClassManager.Commit; except ClassManager.RollBack; end; finally ClassManager.ShareSociety := SaveCtx; end; end;
Variables globales d'environnement
Ces variables sont contenues dans le contexte de l'utilisateur
GlbShareEnable | Le Dossier est en mode partage (multi-sociétés) |
GlbShareGroupPerimeter | OID du périmètre Dossier |
GlbShareSocietyPerimeter | OID du périmètre Société actif |
GlbSharePerimeters | Liste des OIDs de tous les périmètres de la société active |
GlbShareRestitution | Le contexte de partage est en mode restitution |
GlbShareAllSocieties | La restitution est sur toutes les sociétés |
GlbShareSocieties | Liste des OIDs des périmètres sociétés de restitution |
GlbShareGroupMode | Le contexte de partage est en mode Administration de dossier |