Aller au contenu principal

Modeler

Canvas visuel drag-and-drop pour créer et gérer vos ontologies.

Vue d'ensemble

Le Modeler permet de :

  • Canvas visuel - Interface drag-and-drop intuitive
  • Gestion des entités - Créer, modifier, supprimer des nœuds
  • Mapping des relations - Connecter les entités avec des liens typés
  • Actions Kinetic - Workflows automatisés sur les entités
  • Historique - Annuler/Rétablir avec traçabilité complète

Types d'entités

TypeIcôneCas d'usage
concept💡Idées abstraites, catégories
object📦Objets physiques ou numériques
process⚙️Workflows, procédures
actor👤Personnes, systèmes, organisations

Schéma d'entité

interface Entity {
id: string; // UUID v4
name: string; // Nom d'affichage
entityType: EntityType;
position: { x: number; y: number };
data: Record<string, unknown>; // Métadonnées personnalisées
workspaceId: string;
createdAt: string; // ISO 8601
updatedAt: string;
}

Commandes

Créer une entité

curl -X POST "https://api.dev-growthsystemes.com/api/commands/execute" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"type": "CREATE_NODE",
"payload": {
"name": "Client",
"entityType": "concept",
"position": { "x": 100, "y": 100 },
"data": { "description": "Utilisateur final du système" }
}
}'

Modifier une entité

curl -X POST "https://api.dev-growthsystemes.com/api/commands/execute" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"type": "UPDATE_NODE",
"payload": {
"id": "550e8400-...",
"name": "Nom modifié",
"data": { "description": "Description mise à jour" }
},
"expectedVersion": 3
}'

Supprimer une entité

curl -X POST "https://api.dev-growthsystemes.com/api/commands/execute" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"type": "DELETE_NODE",
"payload": { "id": "550e8400-..." }
}'

Relations

Schéma de relation

interface Edge {
id: string;
source: string; // ID entité source
target: string; // ID entité cible
relationType: string; // ex: "depends_on", "contains"
data: Record<string, unknown>;
}

Créer une relation

curl -X POST "https://api.dev-growthsystemes.com/api/commands/execute" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"type": "CREATE_EDGE",
"payload": {
"source": "550e8400-...",
"target": "550e8400-...",
"relationType": "depends_on"
}
}'

Annuler/Rétablir

Chaque action peut être annulée :

# Annuler la dernière action
curl -X POST "https://api.dev-growthsystemes.com/api/commands/execute" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{ "type": "UNDO" }'

# Rétablir la dernière action annulée
curl -X POST "https://api.dev-growthsystemes.com/api/commands/execute" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{ "type": "REDO" }'

La réponse indique les actions disponibles :

{
"metadata": {
"canUndo": true,
"canRedo": false,
"undoableEvents": 5
}
}

Limites

LimiteValeurNotes
Entités par workspace10 000Maximum recommandé
Relations par entité100Maximum recommandé
Longueur nom entité255 caractèresUTF-8
Taille données custom64 KoPayload JSON
Actions Kinetic par entité100Déclencheurs de workflow

Requêtes

Lister toutes les entités

curl "https://api.dev-growthsystemes.com/api/queries/nodes?limit=50&offset=0" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID"

Filtrer par type

curl "https://api.dev-growthsystemes.com/api/queries/nodes?entityType=concept" \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID"

Obtenir une entité

curl "https://api.dev-growthsystemes.com/api/queries/nodes/550e8400-..." \
-H "Authorization: Bearer $API_KEY" \
-H "x-workspace-id: $WORKSPACE_ID"

Dépannage

ProblèmeCauseSolution
Entité non visibleDélai de cacheAttendre 100ms, rafraîchir
409 ConflictÉdition concurrenteRecharger, réessayer avec nouvelle version
Position non sauvéePosition manquanteInclure position dans le payload
Création relation échoueSource/target invalideVérifier que les IDs existent

Voir Erreurs courantes pour plus de détails.