Publier du contenu de type 'article' avec les web services

cancel
Showing results for 
Search instead for 
Did you mean: 
billbaroud
Member II

Publier du contenu de type 'article' avec les web services

Bonjour,

je voudrais publier du contenu (par exemple des pages html) de type 'article' avec les web services afin de pouvoir les publier dans la section 'blog' de l'application Web Quick start.

Pour le moment, je parviens à publier du contenu (sans type particulier) et à modifier manuellement son type dans Alfresco Share (voir image ci-dessous)

[img]http://img857.imageshack.us/img857/3042/changetype.png[/img]

Uploaded with ImageShack.us

Ce qui je souhaiterais faire, c'est publier du contenu qui est directement de type 'article', ce qui m'éviterait d'avoir à utiliser Alfresco Share pour regler le type pour chacune de mes publications. Y a t-il un moyen?

J'ai réellement cherché et lu la documentation, les pages WIKI, etc… je n'y arrive vraiment pas.

Merci infiniment!

(ci-dessous mon code, il s'agit en fait des exemples de web services de Alfresco SDK)



// Create a parent reference, this contains information about the association we are createing to the new content and the
        // parent of the new content (the space retrived from the search)
        ParentReference parentReference = new ParentReference(STORE, null, parent, ASSOC_CONTAINS,
                "{" + Constants.NAMESPACE_CONTENT_MODEL + "}" + name);
       
        // Define the content format for the content we are adding
        ContentFormat contentFormat = new ContentFormat("text/html", "UTF-8");
       
        NamedValue[] properties = new NamedValue[]{Utils.createNamedValue(Constants.PROP_NAME, name)};
        CMLCreate create = new CMLCreate("1", parentReference, null, null, null, Constants.TYPE_CONTENT, properties);
        CML cml = new CML();
        cml.setCreate(new CMLCreate[]{create});
        UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);    
       
        Reference newContentNode = result[0].getDestination();
        Content content = contentService.write(newContentNode, Constants.PROP_CONTENT, contentString.getBytes(), contentFormat);
       
6 Replies
cleseach
Active Member II

Re: Publier du contenu de type 'article' avec les web services

Bonjour,

Il faut chercher à remplacer Constants.TYPE_CONTENT par le nom du type article.

Cordialement,
Charles Le Seac'h
billbaroud
Member II

Re: Publier du contenu de type 'article' avec les web services

Bonjour et merci pour la réponse,

j'ai essayé cela, hélas il n'y aucune constante correspondant au type article… et cela n'est documenté nul part.

De plus, si je ne dis pas de bêtise, un 'article' est un sous type de Constants.TYPE_CONTENT, autrement, je ne pense pas que cette ligne soit fausse, mais qu'il faut simplement ajouter quelque chose (une propriété ?) pour "préciser" que ce n'est pas n'importe quel 'content', c'est un 'article'.

Merci pour votre participation !
cleseach
Active Member II

Re: Publier du contenu de type 'article' avec les web services

Bonjour,

un 'article' est un sous type de Constants.TYPE_CONTENT
Oui, un article (ws:article, pour être précis), est un sous type de cm:content.

Vous ne trouvez pas de constante correspondant à ce type et c'est bien normal ! Vous n'avez dans les constantes que les éléments natifs du modèle Alfresco. Si vous voulez utiliser des éléments non natifs (ce qui est le cas de Web Quick Start puisqu'il faut ajouter un modèle optionnel), vous devez définir par vous-même les constantes adéquates.

Cordialement,
Charles Le Seac'h
billbaroud
Member II

Re: Publier du contenu de type 'article' avec les web services

Bonjour et merci encore pour la réponse !

Si je comprends bien, il me suffit de remplacer Constants.TYPE_CONTENT par la String correspondant au type article.

Problème: j'ai essayé de nombreuses possibilités et recoit toujours le message d'erreur '…has not been defined in the data dictionary'. J'ai trouvé une page expliquant comment ajouter un modèle au data dictionary, mais j'imagine bien que si je fais cela n'importe comment, avec le mauvais nom, cela ne donnera rien…

merci encore !
cleseach
Active Member II

Re: Publier du contenu de type 'article' avec les web services

Bonjour,

il me suffit de remplacer Constants.TYPE_CONTENT par la String correspondant au type article
C'est exactement ça !
Regarde comment est construit Constants.TYPE_CONTENT et inspire-t'en pour créer ta constante. Le plus "compliqué", c'est d'utiliser le bon namespace. Tu trouveras celui-ci dans le fichier webSiteModel.xml (pour info, il s'agit de http://www.alfresco.org/model/website/1.0).

Le modèle de données pour Web Quick Start est défini par le module lors de son installation. Tu n'as rien de plus à faire.

Cordialement,
Charles Le Seac'h
billbaroud
Member II

Re: Publier du contenu de type 'article' avec les web services

Victoire, tout fonctionne  Smiley Very Happy

Un grand merci !

Pour les intéressés, le namespace donné dans le post précédent est bien le bon