bonjourj'utilise l'implémentation community 5.0 sous Ubuntu 14.04, et je commence à utiliser l'API CMIS Je cherche à associer un document à une catégorie ; en m'appuyant sur des recherches faites sur le net, et notamment le site http://ecmarchitect.com, j'ai écrit la méthode suivante (qui fonctionne correctement) : protected void addCategory(
Session session,
Document testDoc,
String categoryName
)
{
ItemIterable<QueryResult> rs = session.query(
"select * from cm:category where cmis:name = '" + categoryName + "'",false);
if (rs.getTotalNumItems() == 0) {
System.out.println("Couldn't find category with name: " + categoryName);
return;
}
int i=0;
String catId=null;;
for (QueryResult resultRow : rs)
{
if (i==0)
{
catId = resultRow.getPropertyValueById("cmis:objectId");
}
}
testDoc.refresh();
List<String> aspects = testDoc.getPropertyValue("cmis:secondaryObjectTypeIds");
//je contrôle l'existence de l'aspect 'categorisable' par une méthode adhoc
if (! CmisClientAspectUtil.readAspectsForExistingDocument(session,
testDoc, "P:cm:generalclassifiable"))
{
//et j'attribue l'aspect le cas échéant
CmisClientAspectUtil.addAspectToExistingDocument(
testDoc,"P:cm:generalclassifiable",debug);
}
if (!testDoc.isLatestVersion())
{
testDoc = testDoc.getObjectOfLatestVersion(false);
}
List<String> catIds = testDoc.getPropertyValue("cm:categories");
if (!catIds.contains(catId)) {
catIds.add(catId);
for (int k=0; k<catIds.size(); k++)
{
catIds.set(k,"workspace://SpacesStore/"+catIds.get(k));
}
HashMap<String, List<String>> props = new HashMap<String, List<String>>();
props.put("cm:categories",catIds);
testDoc.updateProperties(props, false);
}
}
mes interrogations :1) est ce la bonne méthode ? c'est à dire correspond elle aux bonnes pratiques ?2) la méthode s'exécute avec un elaps de 200 millisecondes : c'est acceptable pour un traitement unitaire, mais cela l'est moins pour un traitement par lot ; y aurait t il alors une méthode à recommander ?merci de vos conseilsFrédéric