API (partage)

De Wiki1000
(Différences entre les versions)
(Propriétés)
Ligne 1 : Ligne 1 :
 
== Contexte de partage==
 
== 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é, sociétés de restitutions .... )
+
{{:Contexte_de_partage_(code)}}
 
+
*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 ==
 
== Attributs de partage sur un objet métier ==

Version du 4 novembre 2017 à 12:15

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

Propriété Accès Signification
property ShareLevel:Integer;
Lecture

Ecriture

Le niveau de partage de l'objet, le niveau de partage est défini par les constantes suivantes :
  • cstShareLevel_Default
  • cstShareLevel_Group (0)
  • cstShareLevel_Shared (1)
  • cstShareLevel_Society (2)

Changer ShareLevel est équivalent à affecter l'oidShare correspondant.

property oidShare:TOID;
Lecture

Ecriture

L'oid du périmètre de partage auquel appartient l'objet.
property ShareInfo:String;
Lecture Une chaîne de caractère identifiant le périmètre de partage auquel appartient l'objet.
property ShareInstanceLevel:Integer;
Lecture Niveau de partage des attributs privés de l'objet.
property ShareInstanceInfo:string;
Lecture Une chaîne de caractère identifiant le périmètre de partage des attributs privés de l'objet.

Déclenchement de règle sur un changement du niveau de partage

Utiliser ShareLevel comme déclencheur.

Variables globale du contexte

Variable Type Signification
GlbShareEnable Boolean La base de données contient des informations de partage
GlbShareGroupMode Boolean Mode groupe (Application de gestion de dossier)
GlbShareRestitution Boolean Mode restitution
GlbShareAllPerimeters Boolean Mode restitution sur tous les périmètres
GlbShareGroupPerimeter OID Périmètre de partage du dossier
GlbShareSocietyPerimeter OID Périmètre de partage de la société actif
GlbSharePerimeters OIDs Liste de tous les périmètres de la société active
GlbShareSocieties OIDs Liste des sociétés de restitution

API du ClassManager

Propriétés

Propriété Accès Signification
property ShareEnable:boolean;
Lecture Cette propriété retourne True si la base de données courante (defDataBase) supporte le partage.
property ShareRestitutionMode:boolean;
Lecture

Ecriture

Cette propriété retourne True si le contexte de partage est en mode restitution.
property ShareGroupMode:boolean;
Lecture

Ecriture

Cette propriété retourne True si le contexte de partage est en mode groupe.
property ShareSociety:TOID;
Lecture

Ecriture

Cette propriété retourne l'OID du périmètre de partage de la société de travail courante.

Utiliser cette propriété pour changer le contexte de partage.

property ShareSocietyPerimeter:TdbfPerimetrePartage;
Lecture Cette propriété retourne l'objet périmètre de partage de la société de travail courante.
property ShareGroup:TOID;
Lecture Cette propriété retourne l'OID du périmètre de partage du groupe.
property ShareGroupPerimeter:TdbfPerimetrePartage;
Lecture Cette propriété retourne l'objet périmètre de partage du dossier.
property ShareUserSocietyCount:Integer;
Lecture Cette propriété retourne le nombre de société, sur lequel l'utilisateur à accès, dans le dossier.
property ShareUserSocieties[index:Integer]:TOID;
Lecture Cette propriété retourne l'OID de partage d'une société, sur lequel l'utilisateur à accès, du dossier.
property ShareUserSocietyPerimeters[index:Integer]:TdbfPerimetrePartage;
Lecture Cette propriété retourne l'objet périmètre d'une société, sur lequel l'utilisateur à accès, du dossier.
property ShareRestitutionSocietyCount:Integer;
Lecture Cette propriété retourne le nombre de société actuellement en restitution.
property ShareRestitutionSocieties[index:Integer]:TOID;
Lecture Cette propriété retourne l'OID de partage d'une société actuellement en restitution.
property ShareUserSocietyCount:Integer;
Lecture Cette propriété retourne le nombre de société utilisable par l'utilisateur.
property ShareUserSocieties[index:Integer]:TOID;
Lecture Cette propriété retourne l'OID de partage d'une société utilisable par l'utilisateur.
property ShareUserSocietyPerimeters[index:Integer]:TdbfPerimetrePartage;
Lecture Cette propriété retourne l'objet périmètre de partage d'une société utilisable par l'utilisateur.

Méthodes

Méthode Signature Usage
Création d'un périmètre société
function CreateSocietyPerimeter(const iSocietyName:string):TdbfPerimetrePartage;
Cette méthode crée un périmètre de société et affecte les droits à l'utilisateur courant sur cette société. Une transaction doit être ouverte lors de l'appel de cette méthode.
Recherche d'un objet dans tous les périmètres
function FindObjectAnywhere(const iClassName:string; 
                            const iWhere:String; 
                            const iOrderBy:string; 
                            iDescendant:Boolean; 
                            Args:Array of variant):TitObject;
Cette méthode, identique à FindObject, recherche un objet dans tous les périmètres sans appliquer la clause Where sur l'oidShare de la classe.

Example

//Procedure TestShareAPI;
var idx:Integer; s,stag,save:string;
begin
  stag := #10;
  s := stag+'Mode Restitution';
  if ClassManager.ShareRestitutionMode
     then s := s+' :Yes'
     else s := s+' :No';
  s := s+stag+'Mode group';
  if ClassManager.ShareGroupMode
     then s := s+' :Yes'
     else s := s+' :No';
  //
  s := s+stag+'Group (oid)';
  s := s+stag+ClassManager.ShareGroup;
  //
  s := s+stag+'Group (perimeter)';
  s := s+stag+ClassManager.ShareGroupPerimeter.Caption;
  //
  s := s+stag+'Current Society (oid)';
  s := s+stag+ClassManager.ShareSociety;
  //
  s := s+stag+'Current Society (perimeter)';
  s := s+stag+ClassManager.ShareSocietyPerimeter.Caption;
  //
  s := s+stag+'Restitutions'; stag := #10;
  for idx:=0 to ClassManager.ShareRestitutionSocietyCount-1 do
   s := s+stag+ClassManager.ShareRestitutionSocieties[idx];
  //
  s := s+stag+'User Societies (oids)';;
  for idx:=0 to ClassManager.ShareUserSocietyCount-1 do
   s := s+stag+ClassManager.ShareUserSocieties[idx];
  //
  s := s+stag+'User Societies (names)';
  for idx:=0 to ClassManager.ShareUserSocietyCount-1 do
   s := s+stag+ClassManager.ShareUserSocietyPerimeters[idx].Caption;
  //
  s := s+stag+'Change Current Society';
  save := ClassManager.ShareSociety;
  for idx:=0 to ClassManager.ShareSocietyCount-1 do
   try
    ClassManager.ShareSociety := ClassManager.ShareSocieties[idx];
    s := s+stag+ClassManager.ShareSocietyPerimeters[idx].Caption+': OK';
   except
    s := s+stag+ClassManager.ShareSocietyPerimeters[idx].Caption+': Failed';
   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 context de l'utilisateur

Variable Type Contenu
glbShareEnable Boolean Le mode partage est actif dans la base de données par défaut.
glbShareRestitution Boolean Le mode restitution est actif.
glbShareGroupMode Boolean Le mode groupe est actif.

Ce mode est un mode spécial utilisé uniquement par les applications d'administration de Dossier. Dans ce mode le périmètre société actif est égal au périmètre groupe.

glbShareGroupPerimeter OID OID du périmètre groupe du Dossier
glbShareSocietyPerimeter OID OID du périmètre Société actif
glbSharePerimeters Liste d'OID Liste des OIDs de tous les périmètres de la sociétés active.
glbShareSocieties Liste d'OID Liste de tous les périmètres sociétés en cours de restitution.

Développement DSM





Whos here now:   Members 0   Guests 0   Bots & Crawlers 1
 
Outils personnels