06-13-2017 03:49 AM
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.
06-13-2017 03:54 AM
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.
06-13-2017 09:08 AM
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="customrocedure">
<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.
06-13-2017 11:05 AM
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("customrocedure",metadatas.getProcedure());
....
Pour plus d'informations :
Y.
06-14-2017 03:04 AM
Merci beaucoup de votre aide, cela fonctionne parfaitement.
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.