cancel
Showing results for 
Search instead for 
Did you mean: 

Ajouter metadata à un dossier

luciel
Champ in-the-making
Champ in-the-making

Bonjour,

Je développe actuellement une application Java qui me permet de créer un dossier sur Alfresco dont voici le code :

         Folder parentFolder = FileUtils.getFolder(rootId, getSession());
        ItemIterable<CmisObject> parentChildren = parentFolder.getChildren();
        boolean existing = false;
        for (CmisObject parentChild : parentChildren) {
            if (parentChild.getName().equals(name)) {
                existing = true;
                break;
            }
        }
        if (!existing) {
            Map<String, Object> properties = new HashMap<String, Object>();
            properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
            properties.put(PropertyIds.NAME, name);
            properties.put(PropertyIds.DESCRIPTION, "cdr : " + metadatas.getCdr() + ", procedure : " + metadatas.getProcedure());
            Folder folder = parentFolder.createFolder(properties);
            return folder;
        }
        return null;

Ceci fonctionne très bien mais maintenant je voudrais pouvoir ajouter des metadatas.

Comme vous pouvez le voir, je met dans description certaines données que je voudrais ajouter ailleurs.

Ce que je voudrais en faite c'est que mon dossier ai la propriété "consultation:cdr" et que depuis mon application je puisse la remplir. Mais voilà je ne sais pas comment m'y prendre.

J'ai effectué des recherches mais le problème c'est que je n'ai pas accès au code source d'Alfresco et je ne vois pas trop comment faire sans.

Pourriez-vous m'aider ? Merci.

4 REPLIES 4

ycoulon
Employee
Employee

Bonjour,

Votre application Java semble se basé sur CMIS à la lecture du code ci-dessus.

Vous allez pouvoir rajouter des propriétés à votre dossier en utilisant la map "properties". Cependant pour effectuer cela, il faut que ces propriétés existe côté Alfresco. Il vous faut donc définir un modèle de contenu spécifique.

Pour réaliser cela je vous invite à lire le post suivant : Working With Custom Content Types in Alfresco | ECMArchitect | Alfresco Developer Tutorials 

Une fois votre modèle déployé sur Alfresco vous serez en mesure d'ajouter ces nouvelles propriétés via CMIS.

Y.

luciel
Champ in-the-making
Champ in-the-making

Merci de votre réponse, cela m'est très utile.

Cependant j'ai encore quelques soucis de compréhension.

Ce tuto m'a permis de créer un modèle et de l'utiliser sur l'adresse suivante http://localhost:8081/share mais je ne vois pas comment on le déploie sur notre Alfresco ?

Ensuite, j'ai essayé de créer un fichier xml dans le dossier Dictionnaire de données/Modèles avec le contenu suivant :

<?xml version="1.0" encoding="UTF-8"?>
<model name="custom:customModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">   
    <description>Custom Metadatas</description>
    <author></author>
    <version>1.0</version>
    <imports>
        <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
        <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
    </imports>
    <namespaces>
        <namespace uri="custom.model" prefix="custom"/>
    </namespaces>
    <types>
        <type name="custom:CustomModel">
            <title>Custom Document</title>
            <parent>cm:folder</parent>
        </type>
    </types>
    <aspects>
        <aspect name="custom:CustomMetadatas">
            <title>Metadatas</title>
            <properties>
                <property name="custom:cdr">
                    <title>CDR</title>
                    <type>d:text</type>
                </property>
                <property name="custom:referent">
                    <title>Referent</title>
                    <type>d:text</type>
                </property>
                <property name="customSmiley Tonguerocedure">
                    <title>Procedure</title>
                    <type>d:text</type>
                </property>
            </properties>
        </aspect>
    </aspects>
</model>

et lors de la création d'une règle dans la fenêtre de sélection d'une propriété mes 3 propriétés définies apparaissent bien. Mais je n'arrive pas à les utiliser avec cmis.

Pourriez-vous me donner des indications ? Merci.

Bonjour,

Il vous faut d'abord ajouter l'aspect via les secondary type CMIS par exemple :

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
properties.put(PropertyIds.NAME, name);
properties.put(PropertyIds.DESCRIPTION, "cdr : " + metadatas.getCdr() + ", procedure : " + metadatas.getProcedure());
List<String> aspectList = new ArrayList<String>();
aspectList.add("P:custom:CustomMetadatas");
properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS,aspectList);
properties.put("customSmiley Tonguerocedure",metadatas.getProcedure());
....

Pour plus d'informations : 

Y.

luciel
Champ in-the-making
Champ in-the-making

Merci beaucoup de votre aide, cela fonctionne parfaitement.