Workflow de création de Site

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-01-2012 02:16 PM
Bonjour
J'ai le besoin de créer un workflow en plusieurs étapes pour finalement aboutir à la création d'un site Share.
L'environnement est le suivant :
- workflow en activiti
- alfresco 4.0.0 EE.
Mon problème (sinon je ne serai pas là :wink: ) est que dans la dernière tâche de type service, je tente de créer un site Share avec l'API Java :
SiteService siteService = registry.getSiteService();
SiteInfo siteInfo = siteService.createSite("site-preset", projectTitle, projectTitle, projectTitle, SiteVisibility.PRIVATE, siteType);
Malheureusement depuis le moteur Alfresco il n'est pas possible de créer un site Share : bug https://issues.alfresco.com/jira/browse/ALF-4771… qui, je pense, ne pourra jamais être corrigé (gros problème d'architecture entre le share et alfresco qui montre la limite du modèle actuel…. enfin c'est juste mon avis).
Auriez vous une idée de workaround pour pouvoir créer un site Share depuis Alfresco ?
Toutes les idées sont les bienvenues !
Merci
Richard
J'ai le besoin de créer un workflow en plusieurs étapes pour finalement aboutir à la création d'un site Share.
L'environnement est le suivant :
- workflow en activiti
- alfresco 4.0.0 EE.
Mon problème (sinon je ne serai pas là :wink: ) est que dans la dernière tâche de type service, je tente de créer un site Share avec l'API Java :
SiteService siteService = registry.getSiteService();
SiteInfo siteInfo = siteService.createSite("site-preset", projectTitle, projectTitle, projectTitle, SiteVisibility.PRIVATE, siteType);
Malheureusement depuis le moteur Alfresco il n'est pas possible de créer un site Share : bug https://issues.alfresco.com/jira/browse/ALF-4771… qui, je pense, ne pourra jamais être corrigé (gros problème d'architecture entre le share et alfresco qui montre la limite du modèle actuel…. enfin c'est juste mon avis).
Auriez vous une idée de workaround pour pouvoir créer un site Share depuis Alfresco ?
Toutes les idées sont les bienvenues !
Merci
Richard
Labels:
- Labels:
-
Archive
2 REPLIES 2
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2012 04:25 AM
Bonjour,
Le problème provient du fait que certains fichiers de configuration du site ne sont pas créés par l'appel siteService.createSite, mais sont habituellement générés par Share puis stockés dans le référentiel.
Pour que votre site fonctionne sous Share, il vous faut également créer ces fichiers. Vous pouvez étudier la logique de création de Share pour la cloner dans Alfresco et l'exécuter après votre création de site.
A titre d'exemple, voici un script JavaScript qui m'a permis de créer un site de test :
Attention, c'est du code de test uniquement, il ne faut surtout pas le prendre tel quel pour votre projet.
Cordialement,
Charles Le Seac'h
Le problème provient du fait que certains fichiers de configuration du site ne sont pas créés par l'appel siteService.createSite, mais sont habituellement générés par Share puis stockés dans le référentiel.
Pour que votre site fonctionne sous Share, il vous faut également créer ces fichiers. Vous pouvez étudier la logique de création de Share pour la cloner dans Alfresco et l'exécuter après votre création de site.
A titre d'exemple, voici un script JavaScript qui m'a permis de créer un site de test :
// CREATE SITEvar name="MonSite";var leSite = siteService.createSite("site-dashboard", name, name, name, "PUBLIC");var siteNode = leSite.node;var configNode = siteNode.createFolder("surf-config");var componentsNode = configNode.createFolder("components");// TITLEvar docName = "page.title.site~" + name + "~dashboard.xml";var contentPreset = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<component>\n"+"<guid>page.title.site~" + name + "~dashboard</guid>\n"+" <scope>page</scope>\n"+" <region-id>title</region-id>\n"+" <source-id>site/" + name + "/dashboard</source-id>\n"+" <url>/components/title/collaboration-title</url>\n"+"</component>";var doc = componentsNode.createFile(docName);doc.content = contentPreset;// NAVIGATIONvar docName = "page.navigation.site~" + name + "~dashboard.xml";var contentPreset="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<component>\n"+" <guid>page.navigation.site~" + name + "~dashboard</guid>\n"+" <scope>page</scope>\n"+" <region-id>navigation</region-id>\n"+" <source-id>site/" + name + "/dashboard</source-id>\n"+" <url>/components/navigation/collaboration-navigation</url>\n"+"</component>";var doc = componentsNode.createFile(docName);doc.content = contentPreset;// DASHLETvar docName = "page.full-width-dashlet.site~" + name + "~dashboard.xml";var contentPreset="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<component>\n"+" <guid>page.full-width-dashlet.site~" + name + "~dashboard</guid>\n"+" <scope>page</scope>\n"+" <region-id>full-width-dashlet</region-id>\n"+" <source-id>site/" + name + "/dashboard</source-id>\n"+" <url>/components/dashlets/dynamic-welcome</url>\n"+" <properties>\n"+" <dashboardType>site</dashboardType>\n"+" </properties>\n"+"</component>";var doc = componentsNode.createFile(docName);doc.content = contentPreset;// COMPONENTvar docName = "page.component-1-1.site~" + name + "~dashboard.xml";var contentPreset="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<component>\n"+" <guid>page.component-1-1.site~" + name + "~dashboard</guid>\n"+" <scope>page</scope>\n"+" <region-id>component-1-1</region-id>\n"+" <source-id>site/" + name + "/dashboard</source-id>\n"+" <url>/components/dashlets/colleagues</url>\n"+" <properties>\n"+" <height>504</height>\n"+" </properties>\n"+"</component>";var doc = componentsNode.createFile(docName);doc.content = contentPreset;var docName = "page.component-2-1.site~" + name + "~dashboard.xml";var contentPreset="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<component>\n"+" <guid>page.component-2-1.site~" + name + "~dashboard</guid>\n"+" <scope>page</scope>\n"+" <region-id>component-2-1</region-id>\n"+" <source-id>site/" + name + "/dashboard</source-id>\n"+" <url>/components/dashlets/docsummary</url>\n"+"</component>";var doc = componentsNode.createFile(docName);doc.content = contentPreset;var docName = "page.component-2-2.site~" + name + "~dashboard.xml";var contentPreset="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<component>\n"+" <guid>page.component-2-2.site~" + name + "~dashboard</guid>\n"+" <scope>page</scope>\n"+" <region-id>component-2-2</region-id>\n"+" <source-id>site/" + name + "/dashboard</source-id>\n"+" <url>/components/dashlets/activityfeed</url>\n"+"</component>";var doc = componentsNode.createFile(docName);doc.content = contentPreset;var pagesFolderNode = configNode.createFolder("pages").createFolder("site").createFolder(name);var docName = "dashboard.xml";var contentPreset="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<page>\n"+" <title>Collaboration Site Dashboard</title>\n"+" <title-id>page.siteDashboard.title</title-id>\n"+" <description>Collaboration site's dashboard page</description>\n"+" <description-id>page.siteDashboard.description</description-id>\n"+" <authentication>user</authentication>\n"+" <template-instance>dashboard-2-columns-wide-right</template-instance>\n"+" <properties>\n"+" <sitePages>[{\"pageId\":\"documentlibrary\"}]</sitePages>\n"+" </properties>\n"+"</page>";var doc = pagesFolderNode.createFile(docName);doc.content = contentPreset;
Attention, c'est du code de test uniquement, il ne faut surtout pas le prendre tel quel pour votre projet.
Cordialement,
Charles Le Seac'h

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2012 08:11 AM
Bonjour
Merci pour votre réponse.
C'est l'idée que j'avais commencé à creuser…
Sinon j'avais penser faire un javascript côté share que j'appelle en http depuis Alfresco, oui c'est franchement pas propre mais en attendant….
Malheureusement quand j'effectue la requête http je ne suis pas authentifié côté Share et donc le script ne fonctionne pas… il fonctionne depuis un browser.
Richard
Merci pour votre réponse.
C'est l'idée que j'avais commencé à creuser…
Sinon j'avais penser faire un javascript côté share que j'appelle en http depuis Alfresco, oui c'est franchement pas propre mais en attendant….
Malheureusement quand j'effectue la requête http je ne suis pas authentifié côté Share et donc le script ne fonctionne pas… il fonctionne depuis un browser.
Richard
