Ressources
Gestion avancée des ressources dans la base Directory.
Vue d'ensemble
Les ressources dans APS désignent l'ensemble des entités stockées dans la base Directory : utilisateurs, groupes, services, rôles, acteurs. La gestion des ressources permet de configurer finement l'annuaire de l'application.
Types de ressources
Types standards
Les types de ressources standards sont :
user : Utilisateurs/Personnes
- Représente les utilisateurs de l'application
- Peuvent se connecter
- Possèdent un mot de passe
- Attributs : fonction, email, téléphone, etc.
group : Groupes
- Regroupements logiques d'utilisateurs
- Utilisés pour les droits d'accès
- Gérés via relations
service : Services/Entités organisationnelles
- Structure hiérarchique de l'entreprise
- Peuvent avoir un responsable
- Utilisés pour l'affectation
role : Rôles
- Définissent des responsabilités
- Utilisés dans les workflows
- Attribués aux utilisateurs
actor : Acteurs de workflow
- Intervenants spécifiques aux processus
- Peuvent être des rôles, groupes ou utilisateurs
Types personnalisés
Il est possible de créer des types de ressources personnalisés via la table DirectoryResourceTypes.
Structure des ressources
Propriétés principales
Chaque ressource possède :
public class DirectoryResource
{
public string Id { get; set; } // GUID unique
public string Type { get; set; } // Type de ressource
public string Reference { get; set; } // DN (Distinguished Name)
public string DisplayName { get; set; } // CN (Common Name)
public int Origin { get; set; } // Origine (0=manuel, 1=LDAP, etc.)
}
Id : Identifiant unique (GUID) Type : Type de la ressource (user, group, service, role, actor) Reference (dn_name) : Nom complet unique, utilisé comme clé fonctionnelle DisplayName (cn_name) : Nom d'affichage, peut être modifié Origin : Source de la ressource
- 0 = Création manuelle
- 1 = Import LDAP/AD
- 2 = Import CSV
- 3 = Import Azure AD
Attributs personnalisés
Les attributs additionnels sont stockés dans DirectoryResourceAttributes :
public class DirectoryResourceAttribute
{
public string ResourceId { get; set; } // Lien vers la ressource
public string Name { get; set; } // Nom de l'attribut
public string Value { get; set; } // Valeur de l'attribut
}
Attributs courants :
mail: Adresse emailfunction: Fonctiontelephone: Numéro de téléphonemobile: Numéro mobileservice: Service d'appartenancemanager: Responsable hiérarchique
Accès aux ressources
Dans Process Studio
- Menu Organisation → Ressources
- Affichage de toutes les ressources
- Filtrage par type
- Recherche par nom
Vue Liste complète
La vue "Toutes les ressources" permet de :
- Visualiser toutes les ressources
- Filtrer par type
- Modifier en masse
- Exporter
Fiche ressource
Double-clic sur une ressource pour ouvrir sa fiche :
- Onglet Identité : Informations de base
- Onglet Attributs : Attributs personnalisés
- Onglet Relations : Relations avec autres ressources
- Onglet Sécurité : Paramètres de connexion (pour users)
Relations entre ressources
Types de relations
Les relations lient les ressources entre elles :
member_of : Appartenance à un groupe/service
Utilisateur --[member_of]--> Service
Utilisateur --[member_of]--> Groupe
manager_of : Responsabilité
Responsable --[manager_of]--> Service
has_role : Attribution de rôle
Utilisateur --[has_role]--> Rôle
Définition des relations
Les types de relations sont définis dans DirectoryRelationDefinitions :
public class DirectoryRelationDefinition
{
public string Name { get; set; } // Nom de la relation
public string FromType { get; set; } // Type source
public string ToType { get; set; } // Type cible
}
Gestion des relations
Les relations sont stockées dans DirectoryRelations :
public class DirectoryRelation
{
public string RelationName { get; set; } // Type de relation
public string FromValue { get; set; } // DN de la ressource source
public string ToValue { get; set; } // DN de la ressource cible
}
Opérations sur les ressources
Création
Manuelle :
- Bouton Nouvelle ressource
- Sélectionner le type
- Renseigner les attributs
- Valider
Programmatique :
DirectoryDataSource.InsertResources(
id: Guid.NewGuid().ToString(),
type: "user",
cnName: "John Doe",
dnName: "jdoe",
origin: 0
);
Modification
Mise à jour du nom affiché :
DirectoryDataSource.UpdateResources(
id: resourceId,
type: "user",
cnName: "John DOE", // Nouveau nom
dnName: "jdoe" // DN inchangé
);
Mise à jour d'attributs :
DirectoryDataSource.UpdateResourcesAttributes(
resourceId: resourceId,
name: "mail",
value: "john.doe@company.com"
);
Suppression
DirectoryDataSource.DeleteResources(resourceId);
⚠️ Attention : La suppression d'une ressource supprime également :
- Tous ses attributs
- Toutes ses relations
- Son accès à l'application
Recherche de ressources
Par clé
// Par DN (Reference)
var resource = DirectoryDataSource.GetResourceByKey(
keyName: "dn_name",
keyValue: "jdoe"
);
// Par ID
var resource = DirectoryDataSource.GetResourceByKey(
keyName: "id",
keyValue: guid
);
Par type
SELECT * FROM DirectoryResources
WHERE type = 'user'
Par attribut
SELECT dr.*
FROM DirectoryResources dr
INNER JOIN DirectoryResourceAttributes dra ON dr.id = dra.id_resource
WHERE dra.name = 'mail'
AND dra.value = 'john.doe@company.com'
Origine des ressources
Traçabilité
Le champ origin indique la provenance de la ressource :
- 0 = Manuel : Créée manuellement dans Process Studio
- 1 = LDAP : Importée depuis Active Directory via LDAP
- 2 = CSV : Importée depuis fichier CSV
- 3 = Azure AD : Importée depuis Azure Active Directory
Impact sur la synchronisation
Lors de la synchronisation :
- Les ressources d'origine 1, 2, 3 peuvent être mises à jour automatiquement
- Les ressources d'origine 0 sont préservées (sauf suppression manuelle)
Verrouillage des ressources
DirectoryResourceLocks
Les ressources peuvent être verrouillées temporairement :
public class DirectoryResourceLock
{
public string ResourceId { get; set; } // Ressource verrouillée
public string LockedBy { get; set; } // Qui a verrouillé
public DateTime LockedAt { get; set; } // Quand
}
Utilisé pour :
- Édition concurrente
- Synchronisation en cours
- Opérations de masse
Attributs spéciaux
Pour les utilisateurs
Attributs d'authentification :
password: Hash du mot de passepassword_expiration: Date d'expirationaccount_enabled: Compte actif/inactif
Attributs de contact :
mail: Email principaltelephone: Téléphone fixemobile: Téléphone mobile
Attributs organisationnels :
function: Poste occupéservice: Service d'appartenancemanager: Responsable hiérarchique
Pour les services
manager: Responsable du serviceparent_service: Service parent dans la hiérarchieis_company: Entité de type société (1/0)
Utilisation dans le code
DirectoryContext EF Core
public class DirectoryContext : DbContext
{
public DbSet<DirectoryResource> DirectoryResources { get; set; }
public DbSet<DirectoryResourceAttribute> DirectoryResourceAttributes { get; set; }
public DbSet<DirectoryRelation> DirectoryRelations { get; set; }
public DbSet<DirectoryResourceType> DirectoryResourceTypes { get; set; }
}
ResourceManager
public interface IResourceManager
{
Task<DirectoryResource> FindByIdAsync(string id);
Task<DirectoryResource> FindByReferenceAsync(string reference);
Task<DirectoryResource> CreateAsync(DirectoryResource resource);
Task UpdateAsync(DirectoryResource resource);
Task DeleteAsync(string id);
}
Bonnes pratiques
Nommage
- DN (Reference) : Utiliser le login réseau ou identifiant unique
- CN (DisplayName) : Utiliser le nom complet lisible
- Éviter les caractères spéciaux dans le DN
Types de ressources
- Utiliser les types standards autant que possible
- Créer des types personnalisés seulement si nécessaire
- Documenter les types personnalisés
Attributs
- Limiter le nombre d'attributs personnalisés
- Utiliser des noms d'attributs explicites
- Ne pas stocker de données sensibles en clair
Performance
- Indexer les attributs fréquemment recherchés
- Éviter les requêtes sur tous les attributs
- Utiliser le cache pour les ressources courantes