API (partage)

De Wiki1000
(Différences entre les versions)
m (Exemples)
 
(7 révisions intermédiaires par un utilisateur sont masquées)
Ligne 4 : Ligne 4 :
 
== Attributs de partage sur un objet métier ==
 
== Attributs de partage sur un objet métier ==
  
{| class="wikitable"
+
{{:Attributs de partage (Instance)}}
!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 ==
 
== Déclenchement de règle sur un changement du niveau de partage ==
  
 
Utiliser ShareLevel comme déclencheur.
 
Utiliser ShareLevel comme déclencheur.
 
==Variables globale du contexte==
 
 
{| class="wikitable"
 
!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 ==
 
== API du ClassManager ==
 +
{{:API_de_partage_(CM)}}
  
===Propriétés===
+
===Exemples===
 +
<source lang="delphi">
 +
//Procedure _TestShareAPI;
 +
var idx  : Integer;
 +
    s      : String;
 +
    stag : String;
 +
    save : String;
 +
    vStr : String;
  
{| class="wikitable"
+
Function EvalBoolean(aBool:Boolean):String;
!Propriété
+
Begin
!Accès
+
  if aBool then
!Signification
+
    Result := 'Oui'
|-
+
  else
|
+
    Result := 'Non';
property ShareEnable:boolean;
+
End;
|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===
 
 
{| class="wikitable"
 
!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===
 
<pre>
 
//Procedure TestShareAPI;
 
var idx:Integer; s,stag,save:string;
 
 
begin
 
begin
 
   stag := #10;
 
   stag := #10;
   s := stag+'Mode Restitution';
+
   s := stag   + Format(_TP('Mode Restitution : %s'), [EvalBoolean(ClassManager.ShareRestitutionMode)]);
  if ClassManager.ShareRestitutionMode
+
   s := s+stag + Format(_TP('Mode Groupe (Dossier) : %s'), [EvalBoolean(ClassManager.ShareGroupMode)]);
    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 + Format(_TP('Groupe (oid) : %s'), [ClassManager.ShareGroup]);
  s := s+stag+ClassManager.ShareGroup;
+
 
   //
 
   //
   s := s+stag+'Group (perimeter)';
+
   s := s+stag + Format(_TP('Groupe (périmètre) : %s'), [ClassManager.ShareGroupPerimeter.Caption]);
  s := s+stag+ClassManager.ShareGroupPerimeter.Caption;
+
 
   //
 
   //
   s := s+stag+'Current Society (oid)';
+
   s := s+stag + Format(_TP('Societé actuelle (oid) : %s'), [ClassManager.ShareSociety]);
  s := s+stag+ClassManager.ShareSociety;
+
 
   //
 
   //
   s := s+stag+'Current Society (perimeter)';
+
   s := s+stag + Format(_TP('Societé actuelle (périmètre) : %s'), [ClassManager.ShareSocietyPerimeter.Caption]);
  s := s+stag+ClassManager.ShareSocietyPerimeter.Caption;
+
 
   //
 
   //
   s := s+stag+'Restitutions'; stag := #10;
+
   s := s+stag+'Liste de Restitutions : ';
 
   for idx:=0 to ClassManager.ShareRestitutionSocietyCount-1 do
 
   for idx:=0 to ClassManager.ShareRestitutionSocietyCount-1 do
 
   s := s+stag+ClassManager.ShareRestitutionSocieties[idx];
 
   s := s+stag+ClassManager.ShareRestitutionSocieties[idx];
 
   //
 
   //
   s := s+stag+'User Societies (oids)';;
+
   s := s+stag+'Liste de Société(s) de l''utilisateur (oids)';
 
   for idx:=0 to ClassManager.ShareUserSocietyCount-1 do
 
   for idx:=0 to ClassManager.ShareUserSocietyCount-1 do
 
   s := s+stag+ClassManager.ShareUserSocieties[idx];
 
   s := s+stag+ClassManager.ShareUserSocieties[idx];
 
   //
 
   //
   s := s+stag+'User Societies (names)';
+
   s := s+stag+'Liste de Société(s) de l''utilisateur (name) : ';
 
   for idx:=0 to ClassManager.ShareUserSocietyCount-1 do
 
   for idx:=0 to ClassManager.ShareUserSocietyCount-1 do
 
   s := s+stag+ClassManager.ShareUserSocietyPerimeters[idx].Caption;
 
   s := s+stag+ClassManager.ShareUserSocietyPerimeters[idx].Caption;
 
   //
 
   //
   s := s+stag+'Change Current Society';
+
   s := s+stag+'Test commutation de la société courante :';
 
   save := ClassManager.ShareSociety;
 
   save := ClassManager.ShareSociety;
   for idx:=0 to ClassManager.ShareSocietyCount-1 do
+
   for idx:=0 to ClassManager.ShareUserSocietyCount-1 do
  try
+
  Begin
     ClassManager.ShareSociety := ClassManager.ShareSocieties[idx];
+
    vStr := 'OK';
     s := s+stag+ClassManager.ShareSocietyPerimeters[idx].Caption+': OK';
+
     try
  except
+
      classmanager.sharesociety := classmanager.ShareUserSocieties[idx];
     s := s+stag+ClassManager.ShareSocietyPerimeters[idx].Caption+': Failed';
+
     except
  end;
+
      vStr := 'failed';
 +
    end;
 +
     s := s+stag+ Format('%s : %s', [classmanager.ShareUserSocietyPerimeters[idx].caption, vstr]);
 +
  End;
 +
 
 
   ClassManager.ShareSociety := save;
 
   ClassManager.ShareSociety := save;
 
   ShowMessage(s);
 
   ShowMessage(s);
end;
+
end;</source>
</pre>
+
  
 
Traitement multi-société :  
 
Traitement multi-société :  
  
<pre>
+
<source lang="delphi">
 
//Procedure ModifierClasseA;
 
//Procedure ModifierClasseA;
 
var idx,ido:Integer; ls:ClasseAList; ss,stag,SaveCtx:string; obj:ClasseA;
 
var idx,ido:Integer; ls:ClasseAList; ss,stag,SaveCtx:string; obj:ClasseA;
Ligne 286 : Ligne 106 :
 
   end;
 
   end;
 
end;
 
end;
</pre>
+
</source>
  
 
==Variables globales d'environnement==
 
==Variables globales d'environnement==
  
Ces variables sont contenues dans le context de l'utilisateur
+
Ces variables sont contenues dans le contexte de l'utilisateur
  
{| class="wikitable"
+
{{:Paramètres_de_partage_(Paramètres)}}
!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.
+
|}
+
  
 
{{footer}}
 
{{footer}}
 
[[Category:Partage]]
 
[[Category:Partage]]

Version actuelle en date du 28 février 2019 à 17:59

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.

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

Développement DSM





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