Ce document est la référence exhaustive de toutes les applications document_* et documents du fork Mayan EDMS 4.11.1+egyptian.1.
Applications couvertes : documents (noyau), document_comments, document_downloads, document_exports, document_indexing, document_parsing, document_signatures, document_states.
Exclue intentionnellement :
document_qa(application expérimentale du fork local).
Toutes les apps satellitaires gravitent autour du noyau documents. Le graphe de dépendances simplifié :
documents (noyau)
├── document_comments → documents
├── document_downloads → documents · storage · messaging
├── document_exports → documents · storage · messaging
├── document_indexing → documents · events
├── document_parsing → documents · converter · storage
├── document_signatures → documents · django_gpg · storage
└── document_states → documents · events · storage
Infrastructure commune utilisée par toutes les apps :
acls, events, permissions, navigation, rest_api, task_manager, databases
documents — Noyau documentaireChemin : mayan/apps/documents/
Rôle : Gestion complète du cycle de vie d'un document — création, versionnage, gestion des fichiers, corbeille, restauration. Hub central de l'ensemble de l'EDMS.
DocumentTypeCatégorie de document. Définit un gabarit pour organiser les documents.
| Champ | Type | Description |
|---|---|---|
label |
CharField | Nom affiché |
filename_generator_backend |
CharField | Backend de génération de nom de fichier |
document_stub_expiration_interval |
DurationField | Délai avant suppression automatique des stubs |
Relations sortantes : templates de workflow, permissions, étiquettes rapides (quick labels).
DocumentEntité principale. Un document est un conteneur logique pouvant avoir plusieurs fichiers et versions.
| Champ | Type | Description |
|---|---|---|
document_type |
FK → DocumentType | Catégorie |
label |
CharField | Titre |
description |
TextField | Description libre |
date_added |
DateTimeField | Date de création |
user_creator |
FK → User | Créateur |
is_stub |
BooleanField | True tant qu'aucun fichier n'est attaché |
Managers : objects (tous), valid (non supprimés), trashed (corbeille).
Propriétés calculées : .latest_file, .file_latest, .version_active, .pages, .content (via parsing).
DocumentFileFichier physique attaché à un document. Un document peut avoir plusieurs fichiers successifs.
| Champ | Type | Description |
|---|---|---|
document |
FK → Document | Document parent |
file |
FileField | Référence fichier dans le backend de stockage |
checksum |
CharField | Hash SHA-256 |
mimetype |
CharField | Type MIME détecté |
size |
IntegerField | Taille en octets |
page_count |
IntegerField | Nombre de pages |
encoding |
CharField | Encodage (ex. UTF-8) |
timestamp |
DateTimeField | Date d'ajout |
Hooks disponibles : pre_open (ex. déchiffrement), post_save (ex. détection de signatures).
DocumentFilePagePage individuelle d'un DocumentFile.
| Champ | Type | Description |
|---|---|---|
document_file |
FK → DocumentFile | Fichier parent |
page_number |
IntegerField | Numéro de page (1-based) |
Propriété .content → texte extrait (via document_parsing).
DocumentVersionInstantané logique d'un document à un instant donné. Peut assembler des pages provenant de plusieurs fichiers.
| Champ | Type | Description |
|---|---|---|
document |
FK → Document | Document parent |
timestamp |
DateTimeField | Date de création |
comment |
TextField | Note de version |
active |
BooleanField | Version courante |
DocumentVersionPagePage composant une DocumentVersion. Peut référencer n'importe quelle DocumentFilePage.
| Champ | Type | Description |
|---|---|---|
document_version |
FK → DocumentVersion | Version parente |
page_number |
IntegerField | Numéro dans la version |
content_type |
FK → ContentType | Type de page source |
object_id |
PositiveIntegerField | ID de la page source |
TrashedDocumentDocument supprimé logiquement (corbeille).
| Champ | Type | Description |
|---|---|---|
document |
FK → Document | Document concerné |
datetime_deleted |
DateTimeField | Date de mise en corbeille |
user_who_deleted |
FK → User | Auteur de la suppression |
FavoriteDocumentFavoris par utilisateur.
| Champ | Type | Description |
|---|---|---|
document |
FK → Document | |
user |
FK → User | |
datetime_added |
DateTimeField |
RecentlyAccessedDocumentSuivi des accès récents par utilisateur (auto-géré via signal).
Vues Django (interface web)
| Groupe | Vues disponibles |
|---|---|
| Document | liste, détail, propriétés, changement de type, récents |
| DocumentFile | liste, édition, suppression, introspection, aperçu, impression, transformations |
| DocumentVersion | liste, création, activation, édition, suppression, aperçu, pages |
| DocumentVersionPage | affichage, rotation, zoom, navigation |
| DocumentType | liste, création, édition, suppression, étiquettes rapides |
| Corbeille | vider, restaurer, supprimer définitivement |
API REST
Endpoints complets (CRUD) pour toutes les entités ci-dessus, préfixe /api/v4/documents/.
| Permission | Description |
|---|---|
permission_document_create |
Créer un document |
permission_document_view |
Voir un document |
permission_document_edit |
Modifier les métadonnées |
permission_document_properties_edit |
Modifier les propriétés étendues |
permission_document_tools |
Accéder aux outils |
permission_document_trash |
Mettre en corbeille |
permission_document_change_type |
Changer le type |
permission_document_file_new |
Attacher un nouveau fichier |
permission_document_file_view |
Voir les fichiers |
permission_document_file_edit |
Modifier un fichier |
permission_document_file_delete |
Supprimer un fichier |
permission_document_file_print |
Imprimer |
permission_document_file_tools |
Outils fichier |
permission_document_version_create |
Créer une version |
permission_document_version_view |
Voir les versions |
permission_document_version_edit |
Modifier une version |
permission_document_version_delete |
Supprimer une version |
permission_document_version_print |
Imprimer une version |
permission_document_type_create |
Créer un type |
permission_document_type_view |
Voir les types |
permission_document_type_edit |
Modifier un type |
permission_document_type_delete |
Supprimer un type |
permission_document_trashed_restore |
Restaurer depuis corbeille |
permission_document_trashed_delete |
Supprimer définitivement |
permission_empty_trash |
Vider la corbeille |
| Événement | Déclencheur |
|---|---|
event_document_created |
Création d'un document |
event_document_edited |
Modification des métadonnées |
event_document_viewed |
Consultation |
event_document_trashed |
Mise en corbeille |
event_document_trashed_restored |
Restauration |
event_document_trashed_deleted |
Suppression définitive |
event_document_file_created |
Nouveau fichier attaché |
event_document_file_edited |
Fichier modifié |
event_document_file_deleted |
Fichier supprimé |
event_document_version_created |
Nouvelle version |
event_document_version_edited |
Version modifiée |
event_document_version_deleted |
Version supprimée |
event_document_type_created |
Nouveau type créé |
event_document_type_edited |
Type modifié |
| Paramètre | Défaut | Description |
|---|---|---|
MAYAN_DOCUMENTS_DISPLAY_WIDTH |
1280 | Largeur d'affichage (px) |
MAYAN_DOCUMENTS_DISPLAY_HEIGHT |
900 | Hauteur d'affichage (px) |
MAYAN_DOCUMENTS_THUMBNAIL_WIDTH |
200 | Largeur miniature |
MAYAN_DOCUMENTS_THUMBNAIL_HEIGHT |
300 | Hauteur miniature |
MAYAN_DOCUMENTS_PREVIEW_WIDTH |
640 | Largeur aperçu |
MAYAN_DOCUMENTS_PREVIEW_HEIGHT |
480 | Hauteur aperçu |
MAYAN_DOCUMENTS_FILE_STORAGE_BACKEND |
FileSystemStorage | Backend de stockage des fichiers |
MAYAN_DOCUMENTS_FILE_STORAGE_BACKEND_ARGUMENTS |
— | Arguments du backend |
MAYAN_DOCUMENTS_DOCUMENT_FILE_PAGE_IMAGE_CACHE_MAXIMUM_SIZE |
500 MB | Taille max du cache d'images de pages |
MAYAN_DOCUMENTS_DOCUMENT_FILE_PAGE_IMAGE_CACHE_STORAGE_BACKEND |
FileSystemStorage | Backend du cache |
MAYAN_DOCUMENTS_ZOOM_MAX_LEVEL |
300 | Zoom maximum (%) |
MAYAN_DOCUMENTS_ZOOM_MIN_LEVEL |
25 | Zoom minimum (%) |
MAYAN_DOCUMENTS_ROTATION_STEP |
90 | Pas de rotation (degrés) |
MAYAN_DOCUMENTS_FAVORITE_COUNT |
40 | Nombre max de favoris |
MAYAN_DOCUMENTS_RECENTLY_ACCESSED_COUNT |
40 | Nombre de récents |
MAYAN_DOCUMENTS_RECENTLY_CREATED_COUNT |
40 | Nombre de créés récemment |
MAYAN_DOCUMENTS_TRASH_PERIOD_INTERVAL |
3600s | Intervalle vérification corbeille |
MAYAN_DOCUMENTS_STUB_EXPIRATION_INTERVAL |
3600s | Intervalle nettoyage stubs |
| File | Worker | Tâche | Description |
|---|---|---|---|
queue_documents_fast |
worker_b | task_document_file_create |
Création d'un fichier document |
queue_documents_slow |
worker_b | task_document_upload |
Téléversement complet |
queue_documents_slow |
worker_b | task_document_move_to_trash |
Mise en corbeille |
queue_documents_file |
worker_b | task_document_file_checksum |
Calcul checksum |
queue_documents_file |
worker_b | task_document_file_mimetype |
Détection MIME |
queue_documents_file |
worker_b | task_document_file_page_count |
Comptage pages |
queue_documents_file |
worker_b | task_document_file_size |
Calcul taille |
queue_documents_file |
worker_b | task_document_version_create |
Création de version |
queue_documents_file_slow |
worker_b | task_document_file_delete |
Suppression fichier |
queue_documents_periodic |
worker_c | task_document_stub_delete |
Nettoyage stubs expirés |
queue_documents_periodic |
worker_c | task_trashed_document_period_check |
Vérification corbeille |
queue_documents_trash |
worker_c | task_trash_can_empty |
Vider la corbeille |
queue_documents_trash |
worker_c | task_trashed_document_delete |
Suppression définitive |
queue_documents_version |
worker_b | task_document_version_page_list_append |
Ajout de pages à une version |
queue_documents_version |
worker_b | task_document_version_page_list_reset |
Réinitialisation pages |
document_comments — CommentairesChemin : mayan/apps/document_comments/
Rôle : Discussion par document — permet aux utilisateurs de laisser des commentaires horodatés sur n'importe quel document.
Comment| Champ | Type | Description |
|---|---|---|
document |
FK → Document | Document commenté |
user |
FK → User | Auteur |
text |
TextField | Corps du commentaire |
submit_date |
DateTimeField | Date/heure de soumission (auto) |
Ordre par défaut : -submit_date (plus récent en premier).
Mixin : ExtraDataModelMixin pour extensibilité future.
Vues Django
| Vue | Description |
|---|---|
DocumentCommentCreateView |
Formulaire de création |
DocumentCommentDeleteView |
Confirmation de suppression |
DocumentCommentDetailView |
Détail d'un commentaire |
DocumentCommentEditView |
Édition |
DocumentCommentListView |
Liste des commentaires d'un document |
API REST
| Endpoint | Méthodes | Description |
|---|---|---|
/api/v4/documents/{id}/comments/ |
GET, POST | Lister / créer |
/api/v4/documents/{id}/comments/{comment_id}/ |
GET, PATCH, PUT, DELETE | CRUD unitaire |
| Permission | Description |
|---|---|
permission_document_comment_create |
Créer un commentaire |
permission_document_comment_delete |
Supprimer |
permission_document_comment_edit |
Modifier |
permission_document_comment_view |
Consulter |
| Événement | Déclencheur |
|---|---|
event_document_comment_created |
Création d'un commentaire |
event_document_comment_deleted |
Suppression |
event_document_comment_edited |
Modification |
document_downloads — TéléchargementsChemin : mayan/apps/document_downloads/
Rôle : Téléchargement unitaire ou par lot de fichiers documents, avec compression ZIP et notification par message interne.
DocumentFileCompressorLogique métier de compression. Non persistée en base de données.
DocumentFile.zipfile.DownloadFile (app storage) pour un accès différé.Message (app messaging) à l'utilisateur avec l'URL de téléchargement.| Vue / Endpoint | Description |
|---|---|
DocumentDownloadView |
Formulaire multi-documents (formset) |
DocumentFileDownloadView |
Téléchargement direct d'un seul fichier |
APIDocumentFileDownloadView |
API REST — téléchargement fichier |
| Permission | Description |
|---|---|
permission_document_file_download |
Télécharger des fichiers documents |
| Événement | Déclencheur |
|---|---|
event_document_file_downloaded |
Téléchargement effectué |
| Paramètre | Défaut | Description |
|---|---|---|
setting_document_file_download_backend |
backend storage par défaut | Classe backend de téléchargement |
setting_document_file_download_backend_arguments |
— | Arguments du backend |
setting_message_body_template |
template intégré | Template Jinja2 pour le corps du message (variables : document_list, download_file, download_list_url, download_url) |
setting_message_subject_template |
template intégré | Template pour le sujet (HTML strippé) |
| File | Worker | Tâche | Description |
|---|---|---|---|
queue_document_downloads |
worker_c | task_document_file_compress |
Compression asynchrone, création DownloadFile, envoi message |
locale-aware).document_exports — Export PDFChemin : mayan/apps/document_exports/
Rôle : Exporte des versions de documents en fichier PDF reconstitué à partir des images de pages mises en cache.
DocumentVersionExporterLogique d'export. Non persistée.
DocumentVersionPage de la version.file_caching).DownloadFile (app storage).Message à l'utilisateur avec le lien de téléchargement.| Vue / Endpoint | Description |
|---|---|
DocumentVersionExportView |
Vue multi-sélection avec confirmation |
APIDocumentVersionExportView |
POST — déclenche l'export d'une version |
| Permission | Description |
|---|---|
permission_document_version_export |
Exporter une version en PDF |
| Événement | Déclencheur |
|---|---|
event_document_version_exported |
Export réussi |
| File | Worker | Tâche | Description |
|---|---|---|---|
queue_document_exports |
worker_c | task_document_version_export |
Export asynchrone en PDF |
content_object) sont exportées.document_indexing — Indexation hiérarchiqueChemin : mayan/apps/document_indexing/
Rôle : Création d'arbres d'index dynamiques permettant de naviguer dans les documents via des hiérarchies générées par expressions (ex. par date, type, auteur).
IndexTemplateGabarit définissant la structure d'un index.
| Champ | Type | Description |
|---|---|---|
label |
CharField | Nom de l'index |
slug |
SlugField | Identifiant URL |
enabled |
BooleanField | Actif/inactif |
document_types |
M2M → DocumentType | Types de documents indexés |
Un nœud racine (IndexTemplateNode) est créé automatiquement à la sauvegarde.
IndexTemplateNodeNœud dans l'arbre du gabarit. Utilise django-mptt pour la structure hiérarchique.
| Champ | Type | Description |
|---|---|---|
index |
FK → IndexTemplate | Index parent |
expression |
TextField | Expression Jinja2 évaluée pour générer la valeur du nœud |
enabled |
BooleanField | |
link_documents |
BooleanField | Si True, les documents sont attachés à ce nœud |
parent |
TreeForeignKey → self | Nœud parent (MPTT) |
IndexTemplateEventTriggerDéclenche une reconstruction de l'index sur un événement document.
| Champ | Type | Description |
|---|---|---|
index |
FK → IndexTemplate | Index concerné |
event_type |
FK → EventType | Événement déclencheur |
IndexInstanceInstance runtime générée à partir d'un IndexTemplate.
IndexInstanceNodeNœud runtime contenant les documents réellement indexés.
| Champ | Type | Description |
|---|---|---|
index_template_node |
FK → IndexTemplateNode | Gabarit source |
parent |
TreeFK → self | Nœud parent (MPTT) |
value |
CharField | Valeur calculée par l'expression |
documents |
M2M → Document | Documents rattachés |
IndexInstanceNodeSearchResultProxy pour l'affichage des résultats de recherche dans les nœuds d'index.
Vues — Gabarit (IndexTemplate)
| Vue | Description |
|---|---|
IndexTemplateCreateView |
Création |
IndexTemplateEditView |
Édition |
IndexTemplateDeleteView |
Suppression |
IndexTemplateListView |
Liste |
IndexTemplateRebuildView |
Reconstruction manuelle |
IndexTemplateNodeCreateView |
Création de nœud |
IndexTemplateNodeEditView |
Édition de nœud |
Vues — Instance (IndexInstance)
| Vue | Description |
|---|---|
IndexInstanceNodeView |
Navigation dans l'arbre |
IndexInstanceSearchView |
Recherche dans l'index |
API REST
| Endpoint | Description |
|---|---|
/api/v4/indexing/index-templates/ |
CRUD gabarits |
/api/v4/indexing/index-template-nodes/ |
CRUD nœuds |
/api/v4/indexing/index-instances/ |
Consultation instances |
/api/v4/indexing/index-instance-nodes/{id}/documents/ |
Documents dans un nœud |
| Permission | Description |
|---|---|
permission_index_instance_view |
Naviguer dans les instances |
permission_index_template_create |
Créer un gabarit |
permission_index_template_edit |
Modifier |
permission_index_template_delete |
Supprimer |
permission_index_template_view |
Voir les gabarits |
permission_index_template_rebuild |
Reconstruire |
| Événement | Déclencheur |
|---|---|
event_index_template_created |
Création d'un gabarit |
event_index_template_edited |
Modification |
| File | Worker | Tâche | Description |
|---|---|---|---|
queue_indexing |
worker_b | task_index_instance_document_add |
Ajouter un document aux index (avec retry) |
queue_indexing |
worker_b | task_index_instance_document_remove |
Retirer un document des index |
queue_indexing_slow |
worker_c | task_index_template_rebuild |
Reconstruction complète (avec verrou) |
{{ document.date_added.year }}).IndexTemplateEventTrigger.document_parsing — Extraction de texteChemin : mayan/apps/document_parsing/
Rôle : Extraction du contenu textuel des fichiers documents (via pdftotext, etc.) pour rendre les documents recherchables en plein texte.
DocumentFilePageContentContenu textuel extrait d'une page.
| Champ | Type | Description |
|---|---|---|
document_file_page |
OneToOneField → DocumentFilePage | Page source |
content |
TextField | Texte extrait |
DocumentTypeSettingsConfiguration d'extraction par type de document.
| Champ | Type | Description |
|---|---|---|
document_type |
OneToOneField → DocumentType | Type concerné |
auto_parsing |
BooleanField | Parser automatiquement les nouveaux fichiers |
Classe de base Parser avec registre par type MIME :
Parser.registry = {
'application/pdf': [PDFParser, ...],
'*': [FallbackParser],
}
Méthodes de classe :
parse_document_file(document_file) — parse l'intégralité d'un fichierparse_document_file_page(document_file_page) — parse une page individuelleChaque parseur implémente :
process_document_file(document_file) — itère les pagesprocess_document_file_page(document_file_page) — extrait et stocke le texteDomaine d'erreur ErrorLogDomain dédié pour tracer les échecs.
| Endpoint API | Méthodes | Description |
|---|---|---|
/api/v4/documents/files/pages/{id}/content/ |
GET | Contenu textuel d'une page |
/api/v4/document-types/{id}/parsing/settings/ |
GET, PATCH, PUT | Paramètres par type |
Vues Django
| Vue | Description |
|---|---|
DocumentFilePageContentDetailView |
Affiche le texte extrait d'une page |
DocumentFileParseView |
Soumettre un fichier au parsing |
DocumentTypeParsingSettingsEditView |
Configurer l'auto-parsing par type |
| Permission | Description |
|---|---|
permission_document_file_content_view |
Voir le contenu extrait |
permission_document_file_parse |
Soumettre au parsing |
permission_document_type_parsing_setup |
Configurer par type |
| Événement | Déclencheur |
|---|---|
event_parsing_document_file_content_deleted |
Contenu supprimé |
event_parsing_document_file_submitted |
Soumission au parsing |
event_parsing_document_file_finished |
Parsing terminé |
| Paramètre | Défaut | Description |
|---|---|---|
setting_auto_parsing |
True |
Parser automatiquement tous les nouveaux fichiers |
setting_pdftotext_path |
pdftotext |
Chemin vers le binaire pdftotext (poppler-utils) |
| File | Worker | Tâche | Description |
|---|---|---|---|
queue_parsing |
worker_b | task_parse_document_file |
Parsing asynchrone d'un fichier |
Document et DocumentFile : .content (texte complet concaténé), .submit_for_parsing().update_or_create).ErrorLogDomain dédié.DocumentTypeSettings.auto_parsing).post_save de DocumentFile pour déclencher le parsing automatique.document_signatures — Signatures GPGChemin : mayan/apps/document_signatures/
Rôle : Gestion des signatures cryptographiques GPG sur les fichiers documents — signatures embarquées (dans le fichier) et signatures détachées (fichier séparé).
SignatureBaseModel (abstrait)Champs communs à tous les types de signature.
| Champ | Type | Description |
|---|---|---|
document_file |
FK → DocumentFile | Fichier signé |
date_time |
DateTimeField | Horodatage de la signature |
key_id |
CharField | ID court de la clé GPG |
signature_id |
CharField | Identifiant unique de la signature |
public_key_fingerprint |
CharField | Empreinte de la clé publique |
Utilise InheritanceManager (django-model-utils) pour les requêtes polymorphiques.
DetachedSignatureSignature dans un fichier séparé du document.
| Champ | Type | Description |
|---|---|---|
| (hérite de SignatureBaseModel) | ||
signature_file |
FileField | Fichier .sig ou .asc |
Opérations : upload, téléchargement, suppression.
EmbeddedSignatureSignature intégrée dans le fichier document (ex. PDF signé, fichier .gpg).
| Champ | Type | Description |
|---|---|---|
| (hérite de SignatureBaseModel) |
Détectée automatiquement via hook post_save de DocumentFile.
| Vue | Description |
|---|---|
DocumentFileSignatureListView |
Liste des signatures d'un fichier |
DocumentFileSignatureDetailView |
Détail d'une signature |
DetachedSignatureDeleteView |
Suppression d'une signature détachée |
DetachedSignatureDownloadView |
Téléchargement |
DetachedSignatureUploadView |
Upload d'un fichier de signature |
DocumentFileEmbeddedSignatureVerifyView |
Vérification manuelle |
AllSignaturesRefreshView (outil) |
Rafraîchit toutes les signatures |
AllSignaturesVerifyView (outil) |
Vérifie toutes les signatures |
API REST
| Endpoint | Méthodes | Description |
|---|---|---|
/api/v4/documents/files/{id}/signatures/ |
GET | Lister les signatures |
/api/v4/documents/files/{id}/signatures/{sig_id}/ |
GET, DELETE | Détail / suppression |
| Permission | Description |
|---|---|
permission_document_file_sign_detached |
Créer une signature détachée |
permission_document_file_sign_embedded |
Créer une signature embarquée |
permission_document_file_signature_delete |
Supprimer une signature détachée |
permission_document_file_signature_download |
Télécharger une signature |
permission_document_file_signature_upload |
Uploader une signature détachée |
permission_document_file_signature_view |
Voir les signatures |
| Événement | Déclencheur |
|---|---|
event_detached_signature_created |
Signature détachée créée |
event_detached_signature_deleted |
Signature détachée supprimée |
event_detached_signature_uploaded |
Signature détachée uploadée |
event_embedded_signature_created |
Signature embarquée détectée |
| File | Worker | Tâche | Description |
|---|---|---|---|
queue_signatures |
worker_c | task_verify_document_file |
Vérifie toutes les signatures d'un fichier |
queue_signatures |
worker_c | task_verify_key_signatures |
Vérifie les signatures pour une clé GPG |
queue_signatures |
worker_c | task_refresh_signature_information |
Met à jour les métadonnées de signature |
queue_signatures_slow |
worker_d | task_unverify_key_signatures |
Marque les signatures non vérifiées (clé supprimée) |
queue_signatures_slow |
worker_d | task_verify_missing_embedded_signature |
Recherche les signatures embarquées non encore détectées |
InheritanceManager permet Signature.objects.select_subclasses() pour récupérer le bon sous-type.post_save sur DocumentFile : déclenche automatiquement la détection des signatures embarquées.pre_open sur DocumentFile : peut déclencher le déchiffrement avant ouverture (chaîné avec encryptedstorage).post_save → re-vérifie les signatures ; pre_delete → marque les signatures non vérifiées.signature_id, key_id, fingerprint, date_time.document_states — WorkflowsChemin : mayan/apps/document_states/
Rôle : Moteur de workflow (machine à états) pour les documents. Définit des gabarits de workflow avec états, transitions, actions et escalades. Gère l'historique complet des transitions.
WorkflowGabarit de workflow.
| Champ | Type | Description |
|---|---|---|
label |
CharField | Nom |
internal_name |
CharField | Identifiant interne unique |
initial_state |
FK → WorkflowState | État initial |
document_types |
M2M → DocumentType | Types de documents concernés |
WorkflowStateÉtat dans un workflow.
| Champ | Type | Description |
|---|---|---|
workflow |
FK → Workflow | Workflow parent |
label |
CharField | Nom affiché |
initial |
BooleanField | État de départ |
WorkflowStateActionAction exécutée à l'entrée ou à la sortie d'un état.
| Champ | Type | Description |
|---|---|---|
workflow_state |
FK → WorkflowState | État déclencheur |
label |
CharField | Nom |
enabled |
BooleanField | Actif |
action_type |
CharField | Type : HTTP callback, Python, template |
when |
IntegerField | on_entry ou on_exit |
action_data |
TextField | Configuration JSON de l'action |
WorkflowStateEscalationEscalade automatique après un délai dans un état.
| Champ | Type | Description |
|---|---|---|
workflow_state |
FK → WorkflowState | État source |
action |
FK → WorkflowStateAction | Action à déclencher |
enabled |
BooleanField | |
timedelta |
DurationField | Délai avant escalade |
WorkflowTransitionTransition possible entre deux états.
| Champ | Type | Description |
|---|---|---|
workflow |
FK → Workflow | Workflow parent |
label |
CharField | Nom affiché |
origin_state |
FK → WorkflowState | État source |
destination_state |
FK → WorkflowState | État cible |
condition |
TextField | Expression Jinja2 de condition (optionnel) |
WorkflowTransitionFieldChamp de formulaire associé à une transition (données saisies lors de la transition).
| Champ | Type | Description |
|---|---|---|
transition |
FK → WorkflowTransition | |
field_type |
CharField | Type : texte, entier, date, booléen |
label |
CharField | Libellé du champ |
required |
BooleanField | |
help_text |
CharField | |
widget_class |
CharField | Widget Django optionnel |
WorkflowTransitionTriggerEventDéclencheur automatique d'une transition sur un événement Mayan.
| Champ | Type | Description |
|---|---|---|
transition |
FK → WorkflowTransition | |
event_type |
FK → EventType | Événement déclencheur |
WorkflowInstanceInstance d'exécution d'un workflow pour un document.
| Champ | Type | Description |
|---|---|---|
workflow |
FK → Workflow | Gabarit |
document |
FK → Document | Document concerné |
Méthode .do_transition(transition, user, extra_data) — exécute une transition.
Propriété .current_state — état courant (dernier log).
WorkflowInstanceLogEntryEntrée d'audit — une ligne par transition effectuée.
| Champ | Type | Description |
|---|---|---|
workflow_instance |
FK → WorkflowInstance | |
transition |
FK → WorkflowTransition | Transition effectuée |
timestamp |
DateTimeField | |
user |
FK → User | Utilisateur ayant déclenché |
extra_data |
TextField | Données des champs de transition (JSON) |
WorkflowRuntimeProxy / WorkflowStateRuntimeProxyProxy models pour l'interface utilisateur (pas de nouveaux champs — uniquement des méthodes et managers supplémentaires).
Gabarits
| Vue | Description |
|---|---|
WorkflowTemplateCreateView |
Création |
WorkflowTemplateEditView |
Édition |
WorkflowTemplateDeleteView |
Suppression |
WorkflowTemplateListView |
Liste |
WorkflowTemplatePreviewView |
Diagramme graphviz |
WorkflowTemplateStateCreateView |
Ajout d'état |
WorkflowTemplateTransitionCreateView |
Ajout de transition |
WorkflowTemplateTransitionTriggerCreateView |
Ajout de déclencheur |
Instances
| Vue | Description |
|---|---|
WorkflowInstanceListView |
Workflows actifs d'un document |
WorkflowInstanceDetailView |
Historique des transitions |
WorkflowInstanceTransitionExecuteView |
Exécuter une transition |
API REST
| Endpoint | Description |
|---|---|
/api/v4/workflow-templates/ |
CRUD gabarits |
/api/v4/workflow-templates/{id}/states/ |
États |
/api/v4/workflow-templates/{id}/transitions/ |
Transitions |
/api/v4/workflow-instances/ |
Instances |
/api/v4/workflow-instances/{id}/log-entries/ |
Historique |
/api/v4/workflow-instances/{id}/transitions/ |
Exécuter une transition |
| Permission | Description |
|---|---|
permission_workflow_template_create |
Créer un gabarit |
permission_workflow_template_edit |
Modifier |
permission_workflow_template_delete |
Supprimer |
permission_workflow_template_view |
Voir |
permission_workflow_instance_transition |
Exécuter une transition |
permission_workflow_instance_delete |
Supprimer une instance |
permission_workflow_tools |
Accès aux outils |
| Événement | Déclencheur |
|---|---|
event_workflow_template_created |
Création d'un gabarit |
event_workflow_template_edited |
Modification |
event_workflow_instance_created |
Instance créée |
event_workflow_instance_transitioned |
Transition effectuée |
| Paramètre | Défaut | Description |
|---|---|---|
setting_graphviz_dot_path |
dot |
Chemin vers le binaire graphviz dot |
setting_workflow_image_cache_maximum_size |
50 MB | Taille max du cache des diagrammes |
setting_workflow_image_cache_storage_backend |
FileSystemStorage | Backend du cache |
setting_workflow_image_cache_storage_backend_arguments |
— | Arguments du backend |
setting_workflow_state_escalation_check_interval |
3600s | Intervalle de vérification des escalades |
| File | Worker | Tâche | Description |
|---|---|---|---|
queue_workflows |
worker_b | task_launch_workflow_for |
Lancer un workflow spécifique pour un document |
queue_workflows |
worker_b | task_launch_all_workflow_for |
Lancer tous les workflows d'un document |
queue_workflows |
worker_b | task_launch_all_workflows |
Lancer tous les workflows pour tous les documents |
queue_workflows_slow |
worker_c | task_workflow_instance_do_check_escalation |
Vérifier les escalades d'une instance |
queue_workflows_slow |
worker_c | task_workflow_instance_do_check_escalation_all |
Vérifier toutes les escalades (tâche périodique) |
timedelta, l'action configurée est déclenchée automatiquement.WorkflowInstanceLogEntry.extra_data.WorkflowTransitionTriggerEvent connecte n'importe quel événement Mayan à n'importe quelle transition.Document : .workflow → helper d'accès aux instances.DocumentType : méthodes de gestion des gabarits de workflow.| App | Rôle principal | Modèles | Tâches Celery | Paramètres |
|---|---|---|---|---|
| documents | Noyau — cycle de vie complet | 9 | 15+ | 20+ |
| document_comments | Commentaires collaboratifs | 1 | 0 | 0 |
| document_downloads | Téléchargement / ZIP | 0 | 1 | 3 |
| document_exports | Export PDF | 0 | 1 | 0 |
| document_indexing | Arbre d'index dynamique | 6 | 3 | 0 |
| document_parsing | Extraction texte (OCR-adjacent) | 2 | 1 | 2 |
| document_signatures | Signatures GPG | 3 | 5 | 0 |
| document_states | Moteur de workflow | 10 | 5 | 5 |
worker_b (rapide) : documents, document_indexing, document_parsing, document_states
worker_c (lent) : document_downloads, document_exports, document_indexing (rebuild),
document_signatures, document_states (escalades)
worker_d (très lent): document_signatures (dé-vérification, scan global)
┌─────────────────────────────────────────────────────────────┐
│ documents (noyau) │
│ Document · DocumentType · DocumentFile · DocumentFilePage │
│ DocumentVersion · DocumentVersionPage · TrashedDocument │
└───┬─────────────────────────────────────────────────────────┘
│
├──► document_comments (Comment)
├──► document_downloads (DocumentFileCompressor) → storage · messaging
├──► document_exports (DocumentVersionExporter) → storage · messaging
├──► document_indexing (IndexTemplate/Instance) → events
├──► document_parsing (DocumentFilePageContent) → converter · storage
├──► document_signatures (DetachedSignature/EmbeddedSignature) → django_gpg · storage
└──► document_states (Workflow/WorkflowInstance) → events · storage
Généré le 2026-04-28 — Fork 4.11.1+egyptian.1, branche egyptian.