Manipuler les classes de documents

Créez, récupérez, modifiez, supprimez vos classes de documents

Le service DocumentClassService expose toutes les opérations disponibles autour des composants de type DocumentClass.

Récupération des classes de documents

Récupération de toutes les classes de documents

Les exemples ci-dessous indiquent comment récupérer toutes les classes de documents.


# <CORE_HOST>: URL de base de FlowerDocs Core
# <TOKEN>: jeton d'authentification
curl -X GET "<CORE_HOST>/rest/documentclass" \
  -H "token: <TOKEN>"

    @Autowired
    private DocumentClassService docClassService;

    public List<DocumentClass> getAllDocumentClass() throws FunctionalException, TechnicalException
    {
        return docClassService.getAll();
    }

Récupération d’une liste définie de classes de documents

Les exemples ci-dessous indiquent comment récupérer une liste de classes de documents à partir de leurs identifiants.


# <CORE_HOST>: URL de base de FlowerDocs Core
# <TOKEN>: jeton d'authentification
# <IDS>: liste d'identifiants de classes de documents
curl -X GET "<CORE_HOST>/rest/documentclass/<IDS>" \
  -H "token: <TOKEN>"

    @Autowired
    private DocumentClassService docClassService;

    public List<DocumentClass> getDocumentClasses() throws FunctionalException, TechnicalException
    {
        List<Id> docClassesIds = Lists.newArrayList(new Id("docClassId"));
        docClassesIds.add(new Id("docClass2Id"));
        return docClassService.get(docClassesIds);
    }

Création de classes de documents

Les exemples ci-dessous indiquent comment créer une classe de documents.


# <CORE_HOST>: URL de base de FlowerDocs Core
# <TOKEN>: jeton d'authentification
curl -X POST "<CORE_HOST>/rest/documentclass" \
  -H "token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '[
    {
        "id": "CourrierTest",
        "data": {
            "owner": "fadmin",
            "creationDate": "2024-03-07 1353.401 +0100",
            "lastUpdateDate": "2024-03-07 1353.401 +0100",
            "ACL": "acl-courrier"
        },
        "tagCategories": [
            "InfoCourrier",
            "InfoClient"
        ],
        "tagReferences": [
            {
                "tagName": "RefClient",
                "mandatory": false,
                "multivalued": false,
                "technical": false,
                "readonly": false,
                "order": 0,
                "descriptions": [
                    {
                        "value": "Internal customer reference allowing to classify it",
                        "language": "EN"
                    },
                    {
                        "value": "Référence interne du client permettant de faire le lien avec son dossier",
                        "language": "FR"
                    }
                ]
            }
        ],
        "displayNames": [
            {
                "value": "Courrier Test",
                "language": "FR"
            }
        ],
        "descriptions": [
            {
                "value": "Test Document issu d'\''une chaîne d'\''acquisition",
                "language": "FR"
            }
        ],
        "RetentionDuration": {
            "value": 0,
            "unit": "MONTH"
        },
        "category": "DOCUMENT",
        "active": false,
        "technical": false
    }
]'

    @Autowired
    private DocumentClassService docClassService;

    public void createDocumentClasses() throws FunctionalException, TechnicalException
    {
        List<Id> tagCat = new ArrayList<Id>();
        tagCat.add(new Id("InfoCourrier"));
        tagCat.add(new Id("InfoClient"));

        List<I18NLabel> tagRefLabels = new ArrayList<>();
        I18NLabel tagReflabelFR = new I18NLabel(
                "Référence interne du client permettant de faire le lien avec son dossier", "FR");
        I18NLabel tagReflabelEN = new I18NLabel("Internal customer reference allowing to classify it", "EN");
        tagRefLabels.add(tagReflabelFR);
        tagRefLabels.add(tagReflabelEN);

        List<I18NLabel> docClassLabels = new ArrayList<>();
        I18NLabel docClasslabelFR = new I18NLabel("Test Document issu d'une chaîne d'acquisition", "FR");
        docClassLabels.add(docClasslabelFR);

        TagReference tag = new TagReference();
        tag.setTagName("NumReference");
        tag.setDescriptions(tagRefLabels);
        List<TagReference> tags = new ArrayList<>();
        tags.add(tag);

        DocumentClass docClass = new DocumentClass();
        docClass.setId(new Id("CourrierTest"));
        docClass.setData(new Data());
        docClass.getData().setOwner("admin");
        docClass.getData().setCreationDate(new Date());
        docClass.getData().setACL(new Id("acl-courrier"));
        docClass.setTagCategories(tagCat);
        docClass.setTagReferences(tags);
        docClass.setDescriptions(docClassLabels);
        docClass.setCategory(com.flower.docs.domain.component.Category.DOCUMENT);

        List<DocumentClass> docClasses = new ArrayList<>();
        docClasses.add(docClass);

        docClassService.create(docClasses);
    }

Modification de classes de documents

Les exemples ci-dessous indiquent comment modifier une classe de documents.


# <CORE_HOST>: URL de base de FlowerDocs Core
# <TOKEN>: jeton d'authentification
# <IDS>: liste des identifiants de classe de documents à mettre à jour, séparés par des virgules
curl -X POST "<CORE_HOST>/rest/documentclass/<IDS>" \
  -H "token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '[
    {
        "id": "CourrierTest",
        "data": {
            "owner": "fadmin",
            "creationDate": "2024-03-07 1353.401 +0100",
            "lastUpdateDate": "2024-03-07 1353.401 +0100",
            "ACL": "acl-courrier"
        },
        "tagCategories": [
            "InfoClient"
        ],
        "tagReferences": [
            {
                "tagName": "RefClient",
                "mandatory": true,
                "multivalued": false,
                "technical": false,
                "readonly": false,
                "order": 0
            }
        ],
        "displayNames": [
            {
                "value": "Courrier Test",
                "language": "FR"
            }
        ],
        "descriptions": [
            {
                "value": "Test Document issu d'\''une chaîne d'\''acquisition",
                "language": "FR"
            }
        ],
        "RetentionDuration": {
            "value": 0,
            "unit": "MONTH"
        },
        "category": "DOCUMENT",
        "active": false,
        "technical": false
    }
]'

    @Autowired
    private DocumentClassService docClassService;

    public List<DocumentClass> updatedocClass(DocumentClass docClass) throws FunctionalException, TechnicalException
    {
        TagReference tag = new TagReference();
        tag.setTagName("NameClient");

        docClass.getTagCategories().remove(new Id("InfoCourrier"));
        docClass.getTagReferences().add(tag);
        List<DocumentClass> docClasses = new ArrayList<>();
        docClasses.add(docClass);

        return docClassService.update(docClasses);
    }


En utilisant le service REST, les informations non renseignées seront vidées : il faut envoyer la totalité de la classe de document et pas seulement les informations à modifier.

Suppression de classes de documents

Les exemples ci-dessous indiquent comment supprimer une liste de classes de documents.


# <CORE_HOST>: URL de base de FlowerDocs Core
# <TOKEN>: jeton d'authentification
# <IDS>: liste des identifiants de classe de documents à supprimer, séparés par des virgules
curl -X DELETE "<CORE_HOST>/rest/documentclass/<IDS>" \
  -H "token: <TOKEN>"

    @Autowired
    private DocumentClassService docClassService;

    public void deleteDocumentClasses() throws FunctionalException, TechnicalException
    {
        List<Id> docClassesIds = Lists.newArrayList(new Id("docClassId"));
        docClassService.delete(docClassesIds);
    }


La suppression ne fait aucun contrôle : il faut donc vérifier qu’il n’y a pas d’instances en cours avant la suppression d’une classe de document.