Home
Télécharger - Jalios Community
Contents
1. 62 6 2 3 Member canWorkKOn srta 62 6 2 4 Member canManageCategory cccccccccncnnncnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnneneneness 62 6 2 5 Data checkCreate checkUpdate checkDelete 62 6 3 AC EP PE RE E EEE CPE PE EE EC EE EE ECO 63 6 3 1 Types A SR Deeg Ouere Gau em 63 6 3 2 D claration des ACL AAA A EAR a te 63 6 3 3 V rification des AC 64 6 4 Autres EE 64 6 5 Sp cialisation E E 64 La gestion des Worktflows sisi 66 7 1 La classe WorkflowManager iii 67 7 2 ERECTA NA ee e ee EECH 67 7 2 1 Les principaux attributs ss 67 7 2 2 Les principales m thodes 67 7 3 t classe WEState terre eee ne ere nn eme nn ten a aa n 68 7 4 Larclasse WFACUON Essen ann ad 69 7 5 La classe WFTransition ss 69 7 6 Laclasse WERO S nee een estate nee tete ne RE MAD RE NES AEENRNENENR net NRA RO RE AE dE 69 7 7 Larclasse Mk el geesde nee Re LR Re Re te Lee 69 7 8 EEE ans ans ans tn EENEG 70 7 9 Sp cialisation des alertes 70 7 10 Pr sentation des libell s des tats 71 la gestion des CS o i o a a E OOOO R 72 8 1 Les diff rents types de fichiers d pos s 72 8 1 1 Les fichiers des FileDocument ss 72 8 1 2 Les fichiers des photos des membres 72 8 1 3 Les fichiers des favicons ss 72 10 8 2 LETICIA d dE ed SEENEN EES ENEE EES 72 8 3 La gestion des fichiers des FileDocument
2. Attention durant cette phase les modifications ne sont plus contr l es C est au d veloppeur de garantir qu elles respectent bien les contraintes d int grit de l objet Par ailleurs plusieurs DataController peuvent intervenir lors d une criture Il est possible de donner une indication sur l ordre d appel mais on ne peut pas garantir l ordre d appel de deux DataController qui ne se connaissent pas Aussi les DataController doivent prendre en compte qu un autre DataController a pu tre appel avant et a pu modifier la donn e Les op rations avant et apr s l criture sont r alis es en d rivant de la classe BasicDataController et en surchargeant les m thodes beforeWrite et afterWrite public class DigestController extends BasicDataController Override public void beforeWrite Data data int op Member mbr Map context if op OP DELETE return ArticlePhoto pub ArticlePhoto data pub setDigest getDigest pub String getDigest Publication pub compute the signature Pour plus de d tails sur les DataController consultez l article D velopper avec DCM et les DataController http community jalios com howto datacontroller 5 2 StoreListener Les StoreListener coutent les critures des donn es dans JStore Contrairement au DataController ils ne peuvent pas agir sur ces critures mais juste d clencher un traitement posteriori Les StoreListener sont
3. getGenericThumbnail Retourne une vignette g n rique pour ce document getHeight Retourne la hauteur du document pour les images getindexedDate Retourne la date d indexation du fichier getLastModified Retourne la date de derni re modification du fichier getLuceneDocument Retourne l objet Lucene associ ce document 31 getMediaType Retourne image audio video flash ou other selon le type de document getMetaData String Retourne les m tadonn es associ es au fichier et extraites via un MetaDataExtractor getSize Retourne le poids du fichier getTypelnfo lang Retourne une description du type fichier localis dans la langue fournie getWidth Retourne la largeur du document pour les images isAudio Retourne true si le document est un audio isFlash Retourne true si le document est un flash isimage Retourne true si le document est une image isindexed Retourne true si le contenu du fichier a t index isMedia Retourne true si le document est un m dia image video audio flash isText Retourne true si le document est un texte isVideo Retourne true si le document est une vid o isWeblmage Retourne true si le document est une image dans un format affichable dans un navigateur GIF JPG PNG supportsThumbnail Retourne true si des vignettes peuvent
4. M thode Description isInvolved pub mbr Retourne true si le membre mbr participe a ce WKRole sur la publication boolean pub getWorkflow Retourne le Workflow associ a ce WKRole getWFRole Retourne le WFRole associ ce WKRole 7 8 La classe Publication Les classes d rivant de la classe Publication disposent de m thodes pour obtenir des informations sur le workflow Les principales m thodes M thode Description assignRole roleld mbr Affecte un membre un r le assignRole roleld mbrSet Affecte un ensemble de membres au r le indiqu getMemberSetAssignedToRole roleld Retourne l ensemble des membres associ au r le indiqu getNextWFStateSet mbr Retourne l ensemble des WFState dans lesquels le membre indiqu peut placer la publication en fonction de ses droits du workflow et de l tat courant de la publication getPstatus Retourne l tat de la publication getRoleMap Retourne la Map des r les associ e cette publication getWFNoteList Retourne la liste des WFNote associ es cette publication getWState Retourne le WFState dans lequel est la publication getWFStateLabel lang getWFStatelLabelHtml lang Retourne le libell du WFState dans lequel est la publication Retourne le libell en HTML du WFState dans lequel est la publication getWorkflow Retourne le workflow de la publication hasAlreadyVoted mbr Retou
5. ss 73 8 4 La g n ration des vignettes ccccccccccccnonnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnness 73 8 5 LSO MISSION ii a 74 8 6 A a EE 74 8 7 Controle d s d p ts oee rrr 74 La gestion des t ches olanift es ss 76 9 1 L APIJDringsssssriseesres ten cie ete ee eee ten te teen ete Rene ee Rene een ele etant te een t Te eee teste 76 9 1 1 L cl sse AlarmEntr eegene nr added dde tentes 76 9 1 2 L interface AlarmListener ss 77 9 1 3 La classe TransactionalAlarmListener AAA 77 9 1 4 taclasse Al fmManager r n e es de ee e ae dee 78 9 2 Integration dans IE MS viana aaa aaa aaa naaa aaa aaa RR 78 9 2 1 Int gration d clarative 78 9 2 2 Int gration programmatiqu z seen nt nantes tn red nd rt ed cr ed 78 9 2 3 Exemple ni reet 79 AIN ek E EEE eh Re dd 80 LOT NS 80 10 2 AUthe ntification ii A een ete 80 10 37 Ee Eet e SE e EE e d da E e e At Co 81 TO Oi AAA le aa 81 10 5 Statistiques etanalyse des Usages EETA es ennmnnnn tetes entente 81 10 6 Open A NA 81 10 7 Tests UNITS A 82 1 Le stockage des donn es dans JCMS 1 1 Un stockage hybride JCMS repose sur un stockage des donn es hybride JCMS utilise plusieurs syst mes de stockage afin d exploiter au mieux leurs propri t s et leurs sp cificit s Les principaux syst mes de stockage utilis s par JCMS sont e _JStore une base objet en m moire dans la mouvance NoSQL JCMS y stocke essentiellement les donn es de structure l
6. private static final String AMAZON ID PREFIX AMAZON private AmazonManager amazonMgr AmazonManager getInstance fOverride public Data getData String id if lid startsWith AMAZON_ID PREFIX 39 return null return amazonMgr getltemByJcmsld id 3 2 Acc s une collection de donn es JCMS fournit de nombreuses m thodes pour obtenir une collection de donn es partir d un certain crit re 3 2 1 Acc s par une classe Plusieurs m thodes sont disponibles pour retrouver toutes les instances d une classe donn e getDataSet La m thode getDataSet renvoie tous les instances de la classe fournie en param tre Le TreeSet retourn est tri selon le natural comparator Celui ci est bas sur la date de cr ation cdate puis l identifiant en cas d galit Pour les donn es persist es dans JStore l acc s est quasi instantan car JCMS maintient un index par classe Pour les donn es de JcmsDB une requ te est effectu e et les r sultats sont d vers s dans un TreeSet Exemple Set lt Group gt allGroupSet channel getDataSet Group class Attention Le Set retourn NE DOIT PAS tre modifi Si vous devez op rer dessus faite une copie Exemple Set lt Group gt allGroupSet channel getDataSet Group class Set lt Group gt copySet new TreeSet allGroupSet copySet remove channel getGroup 3_1 getPublicationSet La m thode gePublicationSet renvoie tout
7. Cette gestion d alarme est galement utilis e avec les Worklow Express mais aussi pour envoyer les notifications ou encore pour g n rer le rapport du journal des acc s L API de JCMS vous permet de programmer vos propres t ches planifi es en utilisant le package com jalios jdring 9 1 L API JDring JDring est un package qui g re des planifications d alarmes d une mani re similaire aux commandes cron et at des environnements Unix Les alarmes peuvent tre ajout es dynamiquement dans n importe quel ordre et peuvent tre r p titives ou non JDring a t con u pour g rer de grande quantit d alarmes sans que les performances de JCMS soient d grad es JDring n utilise qu une seule thread qui s endort jusqu la prochaine alarme via la m thode wait time L API de JDring comporte principalement 4 classes e AlarmEntry cette classe contient les param tres de l alarme e AlarmListener cette interface doit tre implement e par les objets qui doivent tre notifi s lors du d clenchement d une alarme e TransactionalAlarmlListener cette classe abstraite doit tre surcharg e par les objets qui doivent tre notifi s lors du d clenchement d une alarme et qui effectuent un traitement en relation avec JcmsDB e AlarmManager cette classe g re les AlarmEntry Elle permet d ajouter et de retirer des alarmes Pour g rer une nouvelle alarme il suffit de cr er une AlarmEntry que l on ajoute un AlarmManage
8. Renvoie une repr sentation textuelle de la donn e toCsv Renvoie une repr sentation CSV de la donn e exportXml Renvoie une repr sentation XML de la donn e getDataName language Renvoie le nom de la donn e p ex le titre d une publication le nom d un groupe d une cat gorie getDatalcon Renvoie l ic ne associ a la donn e getDatalmage Renvoie l image associ e a la donn e getDisplayLink Renvoie le lien HTML associ a la donn e M thodes de contr le sur la donn e M thode Description isPersisted checkIntegrity Renvoie true si la donn e est enregistr e V rifie si la donn e respecte toutes ses contraintes d int grit checkCreate Member mbr V rifie si la cr ation de la donn e est possible pour le membre mbr checkUpdate Member mbr V rifie si la mise jour de la donn e est possible pour le membre mbr checkDelete Member mbr V rifie si le membre mbr est autoris supprimer la donn e M thodes d criture sur la donn e M thode Description performCreate Member mbr Effectue la cr ation de la donn e au nom du membre mbr performUpdate Member mbr Effectue la mise a jour de la donn e au nom du membre mbr performDelete Member mbr Effectue la suppression de la donn e au nom du membre mbr getUpdatinstance Renvoie l objet utiliser pour la mise jour de cette don
9. authorizedMemberSet Ensemble des membres JStore autoris s a voir cette cat gorie authorizedGroupSet Ensemble des groupes autoris s a voir cette cat gorie 2 7 2 Les principales m thodes M thode Description isNode Renvoie true si la cat gorie contient des cat gories filles isLeaf Renvoie true si la cat gorie ne contient pas de cat gories filles getChildrenSet Renvoie la liste des cat gories filles getDescendantSet Renvoie la liste de toutes les cat gories descendantes de cette cat gorie hasAncestor Category cat Renvoie true si cette cat gorie a la cat gorie fournie parmi ses anc tres containsDescendant Category cat Renvoie true si la cat gorie est anc tre de la cat gorie fournie isSibling Category cat Renvoie true si la cat gorie et celle fournie sont s urs getContentSet getAllContentSet Renvoie l ensemble des contenus attach s directement cette cat gorie Renvoie l ensemble des cat gories attach es cette cat gorie ou l une de ses descendantes 2 8 La classe Publication La classe Publication repr sente une publication Cette classe abstraite regroupe l ensemble des attributs et des m thodes communs aux classes qui en d rivent On trouve parmi elles e es classes de contenu Article Br ve page Wiki Document e es classes de contenus utilisateurs commentaires information de profil uti
10. une cat gorie sur un r plica et ajout d un contenu r f ren ant cette cat gorie sur un autre r plica Afin de r duire les risques de conflits il est recommand de r duire les p riodes de divergence Id alement les contributeurs agissant sur des donn es li es doivent tre regroup s sur un m me r plica ou sur des r plicas configur s en propagation imm diate Les lecteurs peuvent par contre tre r partis sur l ensemble des r plicas du groupe Le regroupement des contributeurs peut tre fait explicitement p ex avec une URL d di e la contribution ou automatiquement avec le module de centralisation des critures http community jalios com plugin centralizedwrites 13 L article Mise en uvre d un site JCMS haute disponibilit avec le protocole de r plication JSync http community jalios com howto isync d taille la mise en place de JSync 1 3 JcmsDB JCMS stocke une partie de ses donn es dans une base de donn es relationnelle JcmsDB g r e dans un SGBDR JCMS est livr avec le SGBDR embarqu Derby Ce SGBDR est bien adapt pour les environnements de d veloppement et les sites faisant un usage tr s mod r de JcmsDB Au del il est recommand d utiliser l un des SGBDR externes certifi pour JCMS MySQL PostgreSQL Oracle SQLServer DB2 Ce choix peut aussi tre motiv si vous souhaitez disposer d outils d administration et d exploitation du SGBDR Attention JCMS n assure pas la
11. une sous cat gorie d une cat gorie donn e 2 15 3 L interface HistorizedDBData Par d faut les classes de donn es d rivant de Publication et persist es dans JcmsDB ne sont pas historis es Pour activer l historique des versions la classe doit impl menter l interface HistorizedDBData Lorsque c est le cas une classe d di e a cet usage est cr e pour la classe historis e Elle reprend le nom de cette classe avec le suffixe Revision P ex DBFileDocumentRevision A chaque criture sur la donn e un enregistrement est ajout dans DBFileDocumentRevision Si JemsDB est g r e avec le SGBDR Oracle il faut faire attention la longueur des noms des classes des DBData car ils servent g n rer les noms des tables Or dans Oracle le nom des tables est limit a 30 caract res Par ailleurs JCMS pr fix toutes les table avec 2 caract res j_ al D une mani re g n rale JCMS contr le la longueur du nom des tables du type g n r s mais pas celui de la table 33 des r visions Aussi lorsque vous d clarez un type stock dans JcmsDB avec l historique des versions activ choisissez un nom compatible avec cette contrainte 2 15 4 L interface TrackedDBData Par d faut les classes persist es dans JcmsDB n ont pas le suivi des lecteurs ReaderTracker Seules les classes d rivant de Content en b n ficient automatiquement Pour l activer sur les autres types de Publication il faut impl menter l interfac
12. JCMS prend en charge la g n ration des vignettes pour les images Les vignettes g n r es sont stock es dans la zone des fichiers satellites Quel que soit le format des documents les vignettes sont produites au format JPEG Le tag lt jalios thumbnail gt est fourni par la TLD de JCMS pour ins rer rapidement une vignette dans une page JSP Exemple lt jalios thumbnail data lt doc gt width 200 height 150 gt A partir de JCMS 9 il est possible de g rer des vignettes carr es m me si l image d origine est rectangulaire Le carr est pris dans la zone centrale du rectangle Exemple lt jalios thumbnail data lt doc gt width 100 height 100 square true gt Tous les types de fichiers ne disposent pas d un rendu en vignette Par d faut JCMS le propose pour les images de types JPG GIF et PNG pour les documents Microsoft Office OpenXML et les documents OpenOffice Cependant il est possible de proposer des rendus pour d autres types de documents en impl mentant l interface ThumbnailPolicyFilter Exemple public class MyThumbnailPolicyFilter extends BasicThumbnailPolicyFilter Override public boolean supportsThumbnail FileDocument doc boolean jcms frise Override public boolean createThumbnail FileDocument doc File dest ImageFormat format int maxWidth int maxHeight String background boolean done LA E 73 Override public boolean createThumbnail
13. JcmsDB mais aussi de JStore dans le cas o il s agit informations volumineuses ou fr quemment mises jour Pour plus de d tails sur les ExtraData consultez l article D velopper avec les ExtraData et les ExtraDBData http community jalios com howto extradata 2 2 5 Extralnfo Toute Data comporte une map nomm e extralnfo qui permet de stocker de l information additionnelle sur cette donn e Cette map n est pas persist e Elle ne sert donc qu stocker une information calcul e et transitoire Il y a deux limites d usage sur les Extralnfo 1 Neles utiliser que sur les objets du Store car les objets de JcmsDB sont g r s par Hibernate Les objets repr sentant les donn es ne sont donc pas gard s en m moire d une requ te l autre ils peuvent l tre avec l emploi du cache de second niveau mais il n y a aucune garantie 2 Ne pas y stocker directement d autres donn es JCMS mais seulement leur pointeur Ceci afin de ne pas emp cher le garbage collector de faire son travail de nettoyage 2 3 La classe Group La classe Group repr sente un groupe de membres Les groupes ont plusieurs caract ristiques cumulables e Groupe d espace Un groupe peut tre attach un espace de travail Workspace ou transverse tous les espaces Un membre appartient un espace de travail s il appartient au moins un groupe de cet espace e Groupe LDAP un groupe LDAP est un groupe qui est synchronis avec un
14. Util interSet set1 set2 retourne l intersection des ensemble fournis e Util subSet setl set2 retourne le contenu de l ensemble set1 auquel on a retir le contenu de set2 Exemples Set lt Category gt catSetl publ getCategorySet Set lt Category gt catSet2 pub2 getCategorySet Set lt Category gt commonCatSet Util interSet catSetl catSet2 Set lt Category gt allCatSet Util unionSet catSetl catSet2 Set lt Category gt onlyPublCat Util subSet catSetl catSet2 45 3 3 4 Acc s par une recherche multicrit res JCMS permet de rechercher des donn es en se basant sur plusieurs crit res dont notamment la recherche textuelle Ce type de recherche peut tre fait en utilisant des classes appel es QueryHandler Il y en a une par type de donn es support e QueryHandler recherche multicrit res sur les publications e MemberQueryHandler recherche multicrit res sur les Member stock s dans JStore e DBMemberQueryHandler recherche multicrit res sur les DBMember stock s dans JcmsDB e AllMemberQueryHandler recherche multicrit res sur les Member et DBMember e GroupQueryHandler recherche textuelle sur les groupes e WorkspaceQueryHandler recherche textuelle sur les espaces de travail 3 3 4 1 QueryHandler et QueryResultSet La classe QueryHandler permet de faire une recherche multicrit re portant sur des publications stock es dans JStore ou JcmsDB Les crit res son
15. tat m moire des objets et la journalisation des op rations d criture amenant cet tat m moire La structure du store permet d acc der l ensemble des versions d une donn e ainsi qu aux donn es supprim es Afin d acc l rer l acc s ces informations JStore maintient un index des op rations de cr ation Ainsi pour retrouver l historique d une donn e JStore ne relit pas tout le journal mais se positionne directement l op ration de cr ation de la donn e Une fois l historique d une donn e charg il est plac dans un cache de type LRU Least Recently Used 1 22 Chargement du store Au d marrage de l application l ensemble des objets est charg en m moire en rejouant les op rations contenues dans le fichier store xml Seuls les attributs des objets sont charg s en m moire et stock s dans store xml Cela ne concerne donc pas les fichiers d pos s sur le serveur les gabarits de pr sentation JSP les feuilles de styles JStore r tablit aussi tous les liens entre les objets Il est ainsi possible de parcourir tr s simplement le graphe des objets Par exemple pour acc der partir d une publication la liste des administrateurs de l espace de travail auquel elle appartient il suffit d crire pub getWorkspace getAdministrators JCMS maintient de nombreux index sur les objets afin d obtenir rapidement l ensemble des instances d une classe Ces index sont maintenus en m moir
16. tre g n r es pour ce document 2 13 3 Les principales m thodes statiques M thode Description getinstance Retourne un nouveau FileDocument correspondant au fichier fourni Le FileDocument n est pas enregistr dans le Store getNewDocumentDirectory contentType Retourne le r pertoire o doit tre class le fichier du type de contenu indiqu 2 13 4 Extraction des m tadonn es Si le fichier comporte des m tadonn es p ex les exif pour les photos elles peuvent tre extraites via un MetaDataExtractor Par d faut JCMS ne fournit que le MetaDataExtractor pour les images pour obtenir les dimensions et les exif Pour extraire les m tadonn es d autres types de fichier il faut d velopper une classe impl mentant l interface MetaDataExtractor et la d clarer par une propri t de la forme file document mde lt content type gt Exemple file document mde video mpeg com example MyVideoMetaDataExtractor Les m ta donn es ainsi extraites sont mises en cache et accessibles par la m thode getMetaData 2 14 La classe DBFileDocument La classe DBFileDocument d rive de FileDocument mais impl mente DBData Les instances de cette classe sont donc stock es dans JcmsDB Elle impl mente aussi les interfaces suivantes e CategorizedDBData pour avoir le support des cat gories e HistorizedDBData pour avoir la gestion de l historique de version 32 e OpenRoleDBData pour pouv
17. 3 3 1 Filtrage par Data elector accrcc cine 42 3 3 2 Triavec n ee ET EE 44 3 3 3 Filtrage par combinaison d ensembles cccccccococcccnonnconononanononnnnnnnononannnnnnnnnnnnnnnananoss 45 3 3 4 Acc s par une recherche multicrit res ss 46 3 3 5 MemberQueryHandler ee de cono e aos de e AE 46 3 3 6 DBMemberQueryHa2ddler narrer a ee ta bai 47 3 3 7 AlMemberQueryHandler iii 47 3 3 8 GroupQueryH ndl r ue SE ee ENEE EE 47 3 3 9 W orkspac QuervHandi r ss stat RAR AR AAA rate 47 3 3 10 Acc s par une requ te Hibernate 47 3 4 Acc s l historique des Versions 49 3 5 Acc s aux donn es SUpprim s NEE E 50 L enregistrement des donn es 51 4 1 le 51 4 2 Ride lun 51 4 3 Mettre ajourun donn 2 2 ls ls Las lasse 52 4 4 Supprimer une donn e inner 52 4 5 ERA nee eat e nine d nete ten ti tatata tent et eat 53 4 5 1 Verrouillage souple err a 53 4 5 2 Verrouillage dur 53 Intervenir dans le traitement d un enregistrement ss 54 5 1 DataController ss 54 5 1 1 Validation et contr l di 54 5 1 2 Contr le de l ex cution des critures ooooooocccnnonccccconnoncnnnonnncnnnnnnnnna conan cnc nrannn cnn nannnacan 55 5 2 gel BEE 56 5 3 DBLISTN sra 58 Le contr le des droits d acc s sise 60 6 1 Droits d e ConSUItatiOn E 60 6 1 1 DIS EE 60 6 1 2 A 61 6 1 3 GrOUP A A A er 61 6 2 Droits de contribution sise 61 6 2 1 MemMber COn PUBIS A ii 62 6 2 2 Member canPublishSome
18. Par d faut il s agit du workflow minimal qui comporte 4 tats e Planifi e Publi e Expir e Archiv Un workflow est d un ensemble d tats reli s entre eux par un ensemble de transition Chaque transition est tiquet e par un r le Le workflow comporte un tat initial par lequel d but le traitement Redacteur M FA A Vatideu n A Ak Redacteur Valideur Valideur Valideur Valideur Brouillon Rejete Archive Valideur Valideur JCMS propose plusieurs mod les de Workflow et permet d en d finir des nouveaux Les mod les de workflow se r partissent en deux types e Les workflow de publication destin s des process ditoriaux e Les workflow de traitement destin s des process de traitement Dans les workflow de publication les 4 tats Planifi Publi Expir et Archiv sont obligatoires Dans les workflow de traitement seul l tat Archiv est obligatoire Les workflows sont sauvegard dans un fichier XML situ dans le r pertoire wEB INF data workflows Un module peut livrer ses propres workflow en les d clarant dans le fichier plugin xml avec la balise lt workflows gt lt plugin gt 66 lt workflows gt lt workflow id myWorkflow gt lt work low gt lt plugin gt Les Workflows sont des types de donn es de JCMS qui ne sont pas dans l arborescence Data Dans l API JCMS les workflows sont manipul s avec les classes s
19. Parents du groupe name Nom du groupe IdapDN Identifiant DN LDAP order Num ro d ordre du groupe pour le tri cookieMaxAge Dur e maximum du cookie d authentification pour les membres de ce groupe 2 3 2 Les principales m thodes M thode Description getName language Renvoie le nom du groupe getChildrenSet Renvoie les groupes fils du groupe getDescendantSet Renvoie les groupes descendants du groupe isAncestor Group D termine si le groupe est un anc tre d un groupe donn isDescendant Group D termine si le groupe est un descendant d un groupe donn isSubGroup Renvoie true si ce groupe a au moins un parent isLdapGroup Renvoie true si c est un groupe LDAP getMembersSet Renvoie l ensemble de Membre JStore appartenant ce groupe getDBMemberCount Renvoie le nombre de DBMember appartenant ce groupe et ses descendants getPublicationSet Renvoie l ensemble des publications attach es aux membres appartenant ce groupe getVisibility Renvoie le niveau de visibilit du groupe canBeReadBy Member mbr D termine si le membre mbr peut voir ce groupe 23 2 4 La classe Member La classe Member repr sente une personne connue de JCMS Les instances sont stock es dans JStore La classe d riv e DBMember repr sente un membre stock dans JemsDB Les membres ont plusieurs caract ristiques exclusives e Compte utili
20. acc s canWorkOn Publication pub Renvoie true si le membre peut modifier ou supprimer la publication en param tre Voir la section sur la gestion des droits d acc s getAlertList Renvoie la liste des alertes qu a re ues le membre getFullName Renvoie le nom complet du membre pr nom nom getFriendlyName Renvoie le nom utiliser pour s adresser a ce membre g n ralement son pr nom getGroups Renvoie l ensemble des groupes auxquels appartient le membre getLocale Renvoie la Locale du membre getLastSyncDate Renvoie la date de la derni re synchronisation LDAP getWorkspaceSet Renvoie l ensemble des espaces de travail auxquels a acc s ce membre hasPhoto Renvoie true si le membre a une photo isAccount Renvoie true si ce membre repr sente un compte utilisateur isAdmin Renvoie true si ce membre est administrateur du site isAdmin Workspace ws Renvoie true si ce membre est administrateur d un espace de travail donn isContact Renvoie true si ce membre repr sente une fiche contact isDisabled Renvoie true si ce membre a t d sactiv isLdapAccount Renvoie true si ce membre est synchronis avec LDAP isValidAccount Renvoie true si ce membre est un compte valide qui peut s authentifier sur le site isWorkAdmin Renvoie true si ce membre est administrateur d au moins un espace de travail isWorker Renvoie true si ce membre est c
21. accessibles par la classe ComparatorManager Pour obtenir un comparateur il suffit d indiquer la classe concern e et le crit re de tri g n ralement un nom Il est aussi possible de d inverser le sens naturel de la comparaison Pour plus de d tails sur le ComparatorManager consultez l article Tri de donn es via le ComparatorManager http community jalios com howto comparator Le sens naturel de comparaison est propre chaque type de comparateur Dans JCMS tous les comparateurs qui op rent sur des dates sont dans le sens ante chronologique du plus r cent au plus ancien Des m thodes d pr ci es existent encore pour obtenir les comparateurs aupr s des classes concern es eg Publication getPdateComparator mais d sormais il est d conseill de les utiliser Exemples Comparator cl ComparatorManager getComparator Comparator cl ComparatorManager getComparator Comparator cl ComparatorManager getComparator Comparator cl ComparatorManager getComparator Data class cdate Member class name Publication class pdate Workspace class name Ecriture d un comparateur L criture d un comparateur peut se faire en d rivant de la classe Comparator Cependant il est recommand de d river de la classe BasicComparator Celle ci fournit un mode de comparaison par d faut bas sur la date de cr ation cdate puis l identifiant en cas d galit Exemple ce comparateur trie les articles selon la lo
22. critures cr ation modification suppression et les envoie son leader Celui ci les propage aux autres r plicas du groupe assurant ainsi la convergence globale du groupe JSync est un protocole de r plication optimiste de type peer to peer JSync rel che la coh rence du syst me afin de garantir sa disponibilit et supporter des partitionnements le A et le P du th or me CAP JStore repose sur le principe de coh rence terme eventual consistency Si on arr te les critures dans le cluster et que l on propage les critures l ensemble des r plicas alors le cluster est coh rent Un r plica peut se d connecter diverger puis se reconnecter pour diffuser ses nouveaut s JCMS propose deux modes de propagation des changements e propagation automatique d s que les nouvelles critures se sont stabilis es e propagation la demande de l administrateur ou via l API JSync Durant les phases de divergences des conflits sur les donn es peuvent appara tre Par exemple une m me donn e peut tre modifi e sur un r plica et d truite sur un autre Lors de la phase de diffusion des nouveaut s JSync r sout automatiquement les conflits d criture portant sur une m me donn e Les suppressions l emportent sur les mises jour Les mises jour concurrentes sont r ordonnanc es de fa on coh rente dans l ensemble du cluster Les conflits inter objets ne sont pas trait s par exemple suppression d
23. defaultAdmin channel getDefaultAdmin Workspace defaultWS channel getDefaultWorkspace Category rootCat channel getRootCategory 3 1 4 Acc s une donn e externe JCMS peut avoir interagir avec des donn es externes C est par exemple le cas avec les modules Exchange Lotus Notes Zimbra CMIS Google Docs Lors d une recherche ces modules int grent aux r sultats de JCMS les r sultats issus du syst me distant avec lequel ils op rent JCMS peut prendre en charge des donn es externes comme si il s agissait de donn es internes Pour cela il faut les repr senter par des objets d rivant de la classe Publication et leur donner un identifiant Il ne s agit ni d un identifiant JStore ni d un identifiant JcmsDB mais d un identifiant externe La structure des identifiants externes est libre N anmoins il est recommand de les pr fixer par le service distant qu il repr sente suivi de l identifiant sp cifique de cette plateforme Exemple custom 1234567 Lorsque JCMS essaie de r soudre un identifiant externe il choue et invoque alors la m thode getData de la classe ChannelPolicyFilter Il suffit dans cette m thode d instancier un objet Publication p ex une WebPage et de l alimenter avec les donn es du syst me distant JCMS peut alors le traiter comme si il s agissait d une donn e persist e dans JStore ou JcmsDB Exemple public class AmazonChannelPolicyFilter extends BasicChannelPolicyFilter
24. handleCommitUpdate et handleDelete L argument firstTime indique si l op ration est jou e pour la premi re fois qu elle a eu lieu c est dire qu elle n est pas jou e lors du chargement du store ni lors de la diffusion dans un cluster JSync Sur un cluster JSync il est parfois n cessaire de ne d clencher un traitement qu une seule fois pour tout le cluster p ex l envoi d un mail ou un change avec un syst me tiers Une solution consiste ne d clencher le traitement que sur le leader Pour cela il suffit d appeler la m thode channel isMainLeader qui retourne true uniquement pour le leader du cluster Dans l exemple suivant on affiche un message dans la console du leader lorsqu un nouveau membre avec les droits administrateur est cr ou supprim public class MemberListener extends BasicStoreListener Override public void handleCreate Storable storable boolean firstTime if lisLeader return Member mbr Member storable if mbr isAdmin return System out println A new admin has been created mbr fOverride public void handleDelete Storable storable boolean firstTime if lisLeader return Member mbr Member storable if mbr isAdmin return System out println Admin mbr has been deleted private boolean isleader return Channel getChannel isMainLeader 57 5 3 DBListener Les DBListener sont le pendant de
25. il s agit d un champ Wiki isFieldWysiwyg Retourne true s il s agit d un champ wysiwyg isLink Retourne true s il s agit d un champ de type lien sur une donn e 2 19 3 La classe WSTypeEntry La classe WSTypeEntry repr sente le param trage d un type dans un espace de travail Elle est obtenue par l appel la m thode workspace getWSTypeEntry class Les principales m thodes M thode Description getTemplates Retourne les gabarits d clar s pour ce type getWorkflow boolean Retourne le workflow utilis pour ce type 37 3 L acces aux donn es Une fois qu une donn e a t persist e dans JCMS dans JStore ou dans JcmsDB il existe de nombreux moyens pour la retrouver 3 1 Acc s une donn e 3 1 1 Acc s par Identifiant La m thode getData de la classe Channel permet d acc der une donn e partir de sa classe et de son identifiant L identifiant peut tre un identifiant JCMS ou un identifiant virtuel Exemples Group grp channel getData Group class j 1 Member mbr channel getData Member class j 2 Category cat channel getData Category class j 3 DBFileDocument doc channel getData DBFileDocument class 1 DBFileDocument Category cat channel getData Category class channel root category La classe indiqu e en param tre sert au typage du type de retour Il est donc possible de mettre une super classe de l
26. le monde 2 Le groupe n est visible que des membres qui en font partie 3 Le groupe n est visible que des administrateurs Cependant gr ce la sp cialisation des droits il est possible d tendre ces r gles La m thode canBeReadBy de la classe Group et la m thode canRead de la classe Member servent tester ce droit Group grp Channel getGroup grpld Member mbr channel getMember mbrlId if grp null amp amp grp canBeReadBy mbr System out println mbr can view group group 6 2 Droits de contribution Ce droit contr le qui peut cr er modifier ou supprimer des publications Ce droit est d fini par type de donn e Il est affect pour un groupe ou pour un membre Ce droit est applicable sur les types Publication et Category Pour les publications plusieurs m thodes permettent de contr ler les droits de contribution 61 6 2 1 Member canPublish La m thode canPublish class workspace indique si un membre peut publier une publication d une classe donn e dans un espace de travail donn Member mbr channel getMember mbrlId Workspace ws channel getWorkspace wsId if mbr canPublish Article class ws System out println mbr can publish new article in workspace ws 6 2 2 Member canPublishSome La m thode canPublishSome class workspace indique si un membre peut publier une publication d une classe donn e ou d une de ses sous classes dans un esp
27. nee 26 2 6 1 Les principaux eg EC 27 2 6 2 Les principales m thodes ss 27 2 7 La classe Cat gories E en ne ee dened ane ne med ane ten eme net enn ne en net ets t ete 27 2 7 1 Les prificipaux attribute o en n es 27 2 7 2 Les principales m thodes ss 28 2 8 Lasclasse PUBLICATION a AR LEENE aT Eae aE E 28 2 8 1 L s brincipaux attributs e ieee a ee ENEE ENEE EEN EE 29 2 8 2 Les principales M thodeS iii aaa 29 2 9 La classe Content sise 30 2 10 La classe UserContent seen 30 SEL e EE nine at nn tm ann le 30 2 11 1 Les principaux attributs sise 30 2 12 La classe PortalElement occconcccncccnnccnnnocnnnoccnnncnnnaconnncconanonnncnonanannannnnancnnarnnnanannancnnanannanas 30 2 12 1 Les principaux attribUtS esirin tl tl ll lla NENNEN 30 2 13 La classe FileDocument seen 30 213 1 Lesiprincipauxattributs 22 mn ind ERNZEN EE EEN 31 2 13 2 Les principales m thodes ss 31 2 13 3 Les principales m thodes statiques 32 2 13 4 Extraction des m tadonn es ss 32 2 14 La classe DBFileDocument sise 32 2 14 1 Les principales m thodes statiques 33 2 15 Lesinterfaces de typage iii 33 sat interface DBDALA ss nes ese tente te te tentes de entente tard 33 2 15 2 L interface CategorizedDBData ss 33 2 15 3 L interface HiStoriz dDBDat 24e AA AAA dim 33 2 15 4 L interface TrackedDBData ss 34 2 15 5 L interf
28. propri t Dans ce cas l ajout d alarmes peut se faire programmatiquement par exemple en utilisant un ChannelListener Un ChannelListener effectue des actions au d marrage de JCMS Il peut donc enclencher une alarme avec une planification donn e Pour tre pris en charge par le gestionnaire de module le ChannelListener doit aussi impl menter l interface PluginComponent Exemple de code public class MyChannelListener extends ChannelListener implements PluginComponent public boolean init Plugin plugin return true 78 public void initAfterStoreLoad try String schedule Channel getChannel getProperty myplugin alarm schedule AlarmListener alarmListener new MyAlarmListener AlarmEntry alarmEntry new AlarmEntry schedule alarmListener AlarmManager alarmMgr Channel getChannel getCommonAlarmManager alarmMgr addAlarm alarmEntry catch com jalios jdring PastDateException ex ex printStackTrace public void handleFinalize public void initBeforeStoreLoad La d claration du ChannelListener dans le fichier plugin xml se fait par la balise lt channellistener gt lt plugincomponents gt lt channellistener class com package MyChannellListener gt lt plugincomponents gt 9 2 3 Exemple TBW https community jalios com howto alarm 79 10Autres API 10 1 Alertes JCMS et ses modules proposent de nombreuses fonctions de notification
29. pubCriteria buildCriteria true List lt Publication gt pubList pubCriteria buildCriteria false list PageResult Lorsque le nombre de r sultats est important il est recommand de les paginer afin de ne pas d grader les performances en chargeant trop d objets de la base Pour cela il faut utiliser la m thode queryPublication qui prend en param tre un PublicationCriteria et retourne un PageResult Un PageResult contient la tranche de r sultats demand e et des informations li es la pagination 48 Exemple PublicationCriteria pubCriteria new PublicationCriteria DBFileDocument class pubCriteria setFirstResult 20 pubCriteria setMaxResults 10 PageResult lt Publication gt pr HibernateUtil queryPublication pubCriteria PageResult Status status pr getStatus if PageResult Status OK status int totalSize pr getTotalSize List lt Publication gt resultList pr getResultList System out println resultList else System out println Cannot retreive publications status getMessage nul1l 3 4 Acc s l historique des versions JCMS propose une API permettant d obtenir l historique des versions d une donn e Il est ainsi possible de retrouver tous les tats d une donn e y compris pour les donn es supprim es L acc s a l historique est disponible e pour toutes les donn es stock es dans JStore e pour les publications stock es de JcmsDB impl mentant l interface Historized
30. s d un membre sur une publication 34 2 16 2 La classe PublicationFollower La classe PublicationFollower contient les informations pour le suivi des changements d une publication Une instance contient l identifiant d un membre qui suit la publication 2 16 3 La classe WFNote La classe WFNote contient les informations associ es au changement d tat d une publication Elle comporte notamment l tat de d part l tat d arriv e l auteur du changement d tat et un ventuel commentaire 2 16 4 La classe Recommendation La classe Recommendation contient les informations d une recommandation donn e recommand e auteur destinataires texte 2 16 5 La classe ExtraDBData La classe ExtraDBData permet d ajouter un attribut une donn e Elle est compos e d un identifiant de la donn e d une cl et d une valeur C est la seule donn e de JCMS qui ne d rive pas de la classe Data pour r duire la volum trie de stockage 2 16 6 La classe Alert La classe Alert repr sente une alerte persistante qui porte sur une donn e Les alertes sont personnalis es Ainsi si un utilisateur ou une fonction de JCMS d clenche l envoi d alerte 10 personnes 10 objets Alert seront enregistr s Pour viter de garder trop d alertes obsol tes JCMS g re la suppression automatique des alertes au bout d un certain temps Pour plus de d tails consultez l article API de gestion des alertes http community jalios co
31. Apr s avoir d crit le type champs propri t JCMS g n re toutes les ressources n cessaires son exploitation Ces ressources suivent le design pattern MVC Mod le Vue Contr leur Cela inclut notamment la classe Java qui repr sente le type le mod le une classe Java pour l dition de l objet le contr leur et des ressources pour la pr sentation dont une JSP correspondant la Vue Lors de la d claration vous pouvez pr ciser de nombreuses informations sur le type e Le mode de stockage JStore JcmsDB e La super classe par d faut Content e Desinterfaces impl menter e Des options propres JcmsDB g n ration ou non du HBM historisation utilisation des cat gories De m me pour chaque champ il est possible de pr ciser e Le type de champ texte date nombre lien ce qui va d terminer le type Java du champ son mode d dition et de repr sentation e La cardinalit du champ monovalu multivalu e Des options propres au type du champ 2 18 2 Types sp cifiques Enfin il est bien entendu possible de cr er des nouveaux types de donn es en codant une nouvelle classe Java Celle ci doit d river de Data ou de l une de ses sous classes Elle doit impl menter interface DBData pour tre stock e dans JcmsDB et d clarer un fichier HBM pour le mapping Hibernate Utiliser cette approche pour des types de donn es techniques ou pour des enrichissements sur des types de do
32. DBData cf section 2 15 3 Attention L acc s l historique des versions des donn es de JStore n cessite de relire le fichier store xml Une optimisation est faite pour ne le relire qu partir de l op ration de cr ation Cependant l acc s l historique d une donn e tr s ancienne sur un store de taille importante peut tre long Pour pallier cela JCMS met dans un cache LRU les derniers historiques demand s Par ailleurs le nettoyage du store affecte aussi l historique des versions puisque certains enregistrements sont supprim s cf section 1 2 5 Pour les donn es stock es dans JcmsDB l historique des versions est g r dans une table d di e Cette table est index e sur les donn es historis es Aussi l acc s l historique d une donn e est du m me ordre de grandeur que l acc s aux donn es L acc s l historique d une donn e se fait par la m thode getVersionList de la classe Channel Elle re oit en argument la donn es ou son identifiant et retourne une liste de donn es repr sentant chaque enregistrement de cette donn e La liste est tri e du premier au dernier enregistrement Publication pub channel getData Publication class j 300 List lt Publication gt versionList List lt Publication gt channel getVersionList pub System out println pub has been saved versionList size times String firstTitle Util getFirst versionList getTitle System out pri
33. FileDocument doc File dest ImageFormat format int maxWidth int maxHeight boolean done 8 5 Les permissions Le d p t des documents est contr l par les permissions Les permissions permettent de limiter les fichiers d pos s selon leurs types et leur poids Les permissions se d clarent par des propri t s dans le fichier custom prop Ces propri t s sont de la forme upload permission size lt mime type gt taille maximum autoris e O mime type repr sente le type de document concern Le mime type default peut tre utilis pour d clarer une permission par d faut pour tous les types de documents Exemple PDF limit 100 MB upload permission size application pdf 100048576 Images tout type confondu limit es 1 MB upload permission size image 1048576 Sauf les images JPEG limit es 100 MB upload permission size image jpeg 100048576 Aucun fichier de plus 1 GB upload permission size default 1073741824 8 6 Les quotas En plus des permissions qui contr lent le poids de chaque document d pos il est possible de limiter le poids total des fichiers d un site JCMS ou d un espace Pour cela JCMS propose un syst me de quota Lorsque la consommation disque globale ou celle d un espace d passe le seuil les d p ts sont refus s et l administrateur re oit un mail d alerte C est l administrateur concern d effectuer les nettoyages n cessaires ou de demander une a
34. Identifiant du compte utilisateur email L e mail phone Le num ro de t l phone mobile Le num ro de t l phone portable language La langue du membre code 150 639 street La rue de l adresse postalCode Le code postal de l adresse poBox La boite postale de l adresse region L tat ou la province de l adresse locality La ville de l adresse country Pays d appartenance du membre organisation L organisation ou l entreprise du membre department Le d partement jobTitle Le titre de son poste password Le mot de passe crypt photo Le chemin du fichier contenant la photo usage Indique s il s agit d un compte utilisateur ou d une fiche contact declaredGroups La liste des groupes auxquels est directement rattach le membre 24 2 42 Les principales m thodes M thode Description belongsToGroup Group grp Renvoie true si le membre appartient un groupe donn belongsToWorkspace Workspace Renvoie true si le membre appartient un espace de travail ws donn canPublish Class c Renvoie true si le membre peut publier des instances de la classe donn e Voir la section sur la gestion des droits d acc s canRead Publication pub Renvoie true si le membre peut consulter la publication en param tre Voir la section sur la gestion des droits d acc s canUseCategory Category cat Renvoie true si le membre peut utiliser la cat gorie en param tre Voir la section sur la gestion des droits d
35. Jalios JCMS 9 Documentation D veloppeur API de gestion des donn es Introduction L API de gestion des donn es est au c ur du fonctionnement de JCMS JCMS repose sur un syst me hybride de persistance des donn es dans lequel plusieurs syst mes de stockage sont utilis s L API de gestion des donn es fournit les interfaces pour acc der aux donn es quel que soit leur mode de stockage Ce document d crit les principes de stockage des donn es dans JCMS le mod le de donn es et l acc s aux donn es en lecture comme en criture Les droits d acc s le contr le des critures et la gestion des fichiers sont aussi abord s Contenu 1 Le stockage des donn es dans JCMS coccccccccnnnnininininnnnnnnnnannnnnrnrrrrrrrrrrr 9 1 1 Un stockagehybrid 528 e e ero e O 9 1 2 ISO Ein 9 1 2 1 Fonctionnement g n ral 9 1 2 2 Chargement dU StOre ege o 10 1 2 3 Viel 11 1 2 4 Temps de chargement ire 11 1 2 5 Nettoyage et compactage du store se 11 1 2 6 Fusion de store avec le StoreMerge ooocccccncccccnnoonncnnnnnnnnnnnnnnnnnnnnnnnnnnnnannnnnnnnnnnonanannnnss 12 1 2 7 R plication avec JSync 12 1 3 lu TTT 14 1 3 1 A eE E EEEE EEEE E EEEE EEEE EEE 14 1 3 2 A ra tite 14 1 3 3 su RI KE e 14 1 3 4 Limites de donn es stock es dans JcmsDB conan ncaninns 15 1 4 R partition des donn es entre JStore et JcmsDB ccccccnncnnnnnnnnnnnnnnnnnnnnnn
36. MS assure leur unicit dans le temps et dans l espace des zones de stockage 1 5 2 R f rences entre objets Dans le fichier store xml toutes les r f rences sur des objets stock s dans JStore ou JcmsDB sont repr sent es par les identifiants Dans les tables de JcmsDB sauf cas particulier les colonnes contenant des identifiants sur des donn es JStore ou JcmsDB sont mat rialis es par leur identifiant JCMS Certains types de donn es stock s uniquement dans JcmsDB peuvent utiliser des identifiants bas s sur les num ros d enregistrement on parle alors de cl trang re 1 5 3 Identifiants virtuels L utilisation d identifiant de donn es en dur dans les d veloppements sp cifiques ou m me dans les types de publications cat gorie par d faut et groupes par d faut entra ne des probl mes de r utilisation d une webapp JCMS une autre Pour faire face ce probl me JCMS supporte les identifiants virtuels qui fonctionnent sur le principe des variables L identifiant virtuel est une cha ne de caract res commen ant par le symbole Lorsqu un tel identifiant est fourni aux API de JCMS celui ci est r solu en recherchant une propri t portant ce nom Exemple d utilisation Dans le fichier WEB INF data custom prop on d clare l identifiant virtuel id FicheDocumentaire Nomenclature c_1234 Ensuite on peut utiliser cet identifiant virtuel pour obtenir l objet associ Category cat channel getCate
37. ScheduledTask implements AlarmListener public void handleAlarm AlarmEntry entry System out println Wake up 9 1 3 La classe TransactionalAlarmListener Lorsque le traitement effectu au d clenchement de l alarme n cessite des interactions avec la base de donn es JcmsDB il doit tre encapsul dans une transaction Cela concerne les traitements effectuant des recherches ou des critures dans JcmsDB mais aussi les critures dans JStore qui sont bien souvent accompagn es de requ tes JcmsDB La classe abstraite TransactionalAlarmListener offre cette encapsulation Il suffit simplement de d river de cette classe et d impl menter la m thode handleTransactionalAlarm Exemple public class MyDBScheduledTask extends TransactionalAlarmListener public void handleTransactionalAlarm AlarmEntry entry int dataCount channel getDataCount ArchivedPublication class System out println dataCount archive s stored in JcmsDB 77 9 1 4 La classe AlarmManager L enregistrement des alarmes se fait au pr s d un AlarmManager via la m thode addAlarm Pour obtenir un AlarmManager il est recommand de passer par la m thode channel getCommonAlarmManager Cette m thode g re la majorit des AlarmManager utilis s dans JCMS Elle garantit en particulier l arr t correct de ces AlarmManager et de leur thread lorsque le site red marre Il est aussi possible d utiliser son propre AlarmManager L utilis
38. Selector lastMonthSelector Publication getPdateSelector lastMonth null DataSelector visibleSelector Publication getVisibleStateSelector DataSelector noRightSelector new ReverseSelector Publication getReadRightSelector Selector fullSelector new AndSelector lastMonthSelector visibleSelector noRightSelector Set lt Publication gt resultSet JcmsUtil select set selector null 43 3 3 2 Tri avec un comparateur Il est souvent n cessaire de trier les donn es selon un crit re particulier C est par exemple le cas avec la m thode JcmsUtil select qui re oit un comparateur en dernier param tre pour ordonner l ensemble des r sultats retourn s C est aussi le cas avec les TreeSet qui peuvent recevoir un comparateur pour trier les donn es qu ils re oivent d faut les donn es seront tri es selon leur comparateur naturel Les comparateurs utilis s dans JCMS doivent d river de la classe standard Comparator Attention Pour les donn es stock es dans JcmsDB il est fortement recommand de r aliser le tri des r sultats sur la base de donn es D autant plus si l affichage des r sultats est pagin Par exemple il n est pas efficace de charger en m moire tous les r sultats d une recherche de les trier en m moire et de n afficher que les 10 premiers Comparateurs existants JCMS fournit en standard de nombreux comparateurs pour chaque type de donn es qu il g re Tous ces comparateurs sont
39. a checkCreate checkUpdate checkDelete Les m thodes checkCreate checkUpdate et checkDelete de la classe Data indiquent si un membre peut r aliser l criture sur une donn e Ces m thodes testent notamment les droits de contribution Mais elles vont au del des m thodes pr c dentes car elles v rifient si toutes les conditions sont r unies actuellement pour que l criture soit valid e p ex elles v rifient si les critures sont activ es Voir la section 3 5 pour plus de d tail sur ces m thodes 62 6 3 ACL Les ACL Access Control List ou liste de contr le d acc s permettent d attribuer des droits d administration aux utilisateurs par fonctionnalit pour l administration centrale ou pour l administration d un ou plusieurs espaces de travail Chaque ACL permet de sp cifier des fonctionnalit s autoris es tre utilis es autrement appel es ressources Une ACL est par la suite r f renc e par un ou plusieurs groupes Tous les membres de ce groupe et de ses sous groupes b n ficieront des droits d acc s d finis dans l ACL Plusieurs ACL peuvent tre cr es sur le site 6 3 1 Types d ACL On distingue 2 types d ACL e les ACL globales qui permettent d autoriser l acc s des fonctionnalit s d administration centrale elles ne peuvent tre rattach es qu des groupes globaux uniquement par un administrateur central e les ACL d espace de travail qui permettent d autoriser l acc
40. a donn e Exemple String id 3 300 Article article channel getData Article class id Publication pub channel getData Publication class id Data data channel getData Data class id La classe Channel fournit aussi des m thodes d acc s d di es certains types de donn es Exemples Group grp Cchannel getGroup 3 1 Member mbr channel getMember 3 2 Category cat channel getCategory j_ 3 Workspace ws channel getWorkspace 4 Publication pub channel getPublication j_300 Pour les donn es stock es dans JcmsDB la m thode getDBData permet d y acc der par leur classe et leur rowld Exemple DBMember mbr channel getDBData DBMember class 1L 38 3 1 2 Acc s par une autre donn e Lorsou une donn e r f rence une autre donn e elle poss de g n ralement une m thode permettant d acc der cette donn e Par exemple une publication r f rence l espace de travail auquel elle appartient l auteur de la publication les cat gories qui y sont attach es Il est donc possible d acc der ces donn es depuis une publication Exemples Publication pub channel getPublication j_300 Workspace ws pub getWorkspace Member author pub getAuthor 3 1 3 Acc s par m thode d di e JCMS fournit des m thodes pour acc der certaines donn es bien connues du site Exemples Group defaultGroup channel getDefaultGroup Member
41. ace EditableData see 34 2 15 6 Eintertage Sttrongtockable cio dt Te ee 34 2 16 Les classes de donn es satellites 34 2 16 1 Ea cl sse Reader Tracker A te etre tee te dt en feat teen 34 2 16 2 La classe PublicationFollower ss 35 2 16 3 La classe WENote AEN 35 2 16 4 La classe Recommendation se 35 2 16 5 La classe ExtraDBData is 35 2 16 6 r La class GE 35 2 17 Les publications import es sise 35 2 18 D veloppement de nouveaux types de donn es 36 2 18 1 gt TP de publicati Mere ee deeg ANEREN Ee 36 2 18 2 Types Sp cifiqUES ccccccccconoonnncnnnnnnnnnnnnannnnnnnnnnnonnnannnnnnnnnnonnnnnnrnnnnnnnnnrnnnnnnnnnnnnnrnnnnananoss 36 2 19 L API de gestions de types EEN 36 2 19 1 gt A RE TYpeEntrV OOOO OPC OOO o o 36 2 19 2 E classe o TS lo EN AAA PPP seine ENEE eege entoure de 37 2 19 3 La classe W fvpetntr 37 L acc s aux donn es sise 38 3 1 ee RER 38 3 1 1 Acc s par Identifiant ooonnnnnnnnnnnnnn n nnnnnnnnnnnnnnrnrrrrrrrrrrrrrrrrrrrrr 38 6 3 1 2 ACCES par uhe autre ONO inicia da de da da de da da de dr 39 3 1 3 Acc s par m thode d d merrier ii n einen en een en en 39 3 1 4 Acc s une donn e externe iii 39 3 2 Acc s une collection de donn es sise 40 3 2 1 Acc s par Une E A0 3 2 2 Acc s parindex IStTOr 22 di er mir re mir re ten enr st 41 3 3 ACC S par Tequ tl coococccccnnnnnnnnnnninnnnnnrnrrrrrrrrrr nnns nnan 41
42. ace de travail donn Member mbr channel getMember mbrlId Workspace ws channel getWorkspace wsId if mbr canPublishSome FileDocument class ws System out println mbr can publish FileDocument in workspace ws 6 2 3 Member canWorkOn La m thode canWorkOn de la classe Member indique si un membre peut travailler sur une donn e dans son tat actuel Member mbr channel getMember mbrlId Publication pub channel getPublication publd if mbr canWorkOn pub System out println mbr can edit publication pub La m thode peut recevoir en param tre un Rightinfo qui fournit en cas de refus une explication Member mbr channel getMember mbrlId Publication pub channel getPublication publd RightInfo rightInfo new RightIinfo if mbr canWorkOn pub rightInfo String explanation rightInfo getExplanationMessage userLang userLocale pub mbr System out println mbr cannot edit publication pub because explanation 6 2 4 Member canManageCategory La m thode canManageCategory de la classe Member indique si un membre peut diter supprimer d placer et cr er des sous cat gories dans une cat gorie donn e Member mbr channel getMember mbrlId Category cat channel getCategory catld if mbr canManageCategory cat System out println mbr can edit delete move and add descendants in category cat 6 2 5 Dat
43. age appliquer Le filtrage consiste retenir une sous partie d une collection de donn es G n ralement le filtrage s accompagne d un tri qui ordonne les r sultats trouv s 41 3 3 1 Filtrage par DataSelector Lorsque les donn es recherch es sont persist es dans JStore il est possible d appliquer un filtrage avec la m thode JcmsUtil select collection selector comparator Celle ci re oit en param tre une collection de donn es filtrer un DataSelector qui effectue le filtrage et un Comparator qui trie des r sultats La m thode retourne les r sultats dans un TreeSet Exemple r cup rer l ensemble des membres d sactiv s tri s par nom Set lt Member gt set channel getDataSet Member class DataSelector selector new Member DisabledSelector Comparator comparator ComparatorManager getComparator Member class name Set lt Member gt resultSet JcmsUtil select set selector comparator Exemple r cup rer l ensemble des articles publi s depuis 31 jours tri s par date de publication Set lt Article gt set channel getDataSet Article class Date lastMonth new Date System currentTimeMillis MILLIS IN ONE MONTH DataSelector selector Publication getPdateSelector lastMonth null Comparator comparator ComparatorManager getComparator Publication class pdate Set lt Member gt resultSet JcmsUtil select set selector comparator Choix de la collection de donn es P
44. alElement est la classe m re de toutes les portlets 2 12 1 Les principaux attributs Attribut Description abilities Aptitudes de la portlet cacheTypelnt Type de cache de la portlet behaviorCopy Mode de copie de la portlet cssClasses Classes CSS associ es la portlet portletimage Image associ e la portlet 2 13 La classe FileDocument La classe FileDocument d rive de Publication Elle repr sente un document c est dire un fichier qui a t d pos sur le site accompagn d un ensemble de m tadonn es Les principales caract ristiques d un document 30 Il r f rence un fichier sur disque Il a une date de dernier d p t Le contenu du fichier peut tre index Lorsqu il est r f renc par une autre publication son tat de workflow et ses droits de consultation sont assujettis cette publication Un PDF peut tre associ au document Ce PDF peut tre soit d pos manuellement soit g n r par le module Convertisseur PDF A partir de JCMS 9 les types g n r s peuvent d river de FileDocument A partir de JCMS 9 un FileDocument peut tre associ a n importe quel workflow S il est associ au Workflow des pi ces jointes alors le document est consid r comme une pi ce jointe Il est alors asservi par les publications qui le r f rencent Si toutes les publications qui le r f rencent sont dans un tat non visible du workflow alors le FileDo
45. annel getGroup j 1 Set lt Member gt mbrSet grp getMemberSet Member mbr channel getMember 3 2 Set lt Publication gt pubSet mbr getPublicationSet Workspace ws channel getWorkspace 3_4 Set lt Publication gt pubSe Set lt Article gt articleSe t ws getPubSet t ws getPublicationSet Article class Category cat channel getCategory j 3 Set lt Publication gt pubSet cat getPublicationSet Set lt Publication gt pubSet cat getAllPublicationSet Attention Le Set retourn NE DOIT PAS tre modifi Si vous devez op rer dessus faite une copie Group gl channel getGroup glld Group g2 channel getGroup g21d Set lt Member gt mbrSet new TreeSet gl getMembersSet mbrSet addAll g2 getMemberSet Pour les types g n r s JCMS maintient un index pour chaque champ de type lien Gr ce a cet index il est possible de retrouver toutes les instances de publication qui r f rencent une donn e Exemple Une Faq est compos e de FaqEntry qui repr sente une question et une r ponse Chaque FaqEntry r f rence une Faq Faq faq channel getData Faq class c_1234 Set lt FaqEntry gt entrySet faq getLinkIndexedDataSet FagEntry class 3 3 Acc s par requ te JCMS propose plusieurs solutions pour retrouver une collection de donn es correspondant un ou plusieurs crit res Celles ci varient selon la nature des donn es recherch es et le type de filtr
46. ant la m thode performDelete sur la donn e Member opAuthor channel getMember Group group channel getGroup groupld Check if the group can be deleted ControllerStatus status group checkDelete opAuthor if status isOK Delete the group group performDelete opAuthor else String msg status getMessage opAuthor getLanguage System out println Cannot delete group group msg 52 4 5 Verrouiller une donn e L API de JCMS permet de verrouiller une donn e Le verrouillage sert pr venir voire emp cher un autre utilisateur de modifier ou supprimer une donn e JCMS propose deux types de verrouillage e Le verrouillage souple verrouillage implicite et stock en m moire pour une dur e limit e e Le verrouillage dur verrouillage explicite et persist dans JcmsDB sans limite de temps 4 5 1 Verrouillage souple Le verrouillage souple est implicite d s qu un utilisateur dite une donn e avec les interfaces Web de JCMS Si un autre utilisateur tente d diter cette donn e avant que l dition soit termin e un message le pr vient qu un autre utilisateur dite actuellement cette donn e L API de JCMS fournit les m thodes pour conna tre les informations sur les verrous souples Publication pub channel getPublication publd if pub isLocked Member lockMbr pub getLockMember Date lockDate pub getlLockDate System out println pub has
47. appel s non seulement lorsque l criture a lieu mais aussi e au d marrage de JCMS lors du chargement du Store e dans un cluster JSync lorsqu une nouvelle criture arrive sur un r plica Les StoreListener sont donc bien adapt s pour g rer des index sur les donn es du Store ou pour d clencher une op ration sur un r plica particulier p ex le leader Attention JCMS utilise des StoreListener interne pour g re les indexes sur donn es L ordre d appel des StoreListener n est pas d terministe Votre StoreListener peut tre appel avant ou apr s ceux 56 de JCMS Aussi votre StoreListener ne doit pas tester l existence de la donn es qui vient d tre cr par les API de JCMS car les indexes n ont peut tre pas encore t mis jour La d claration d un nouveau StoreListener se fait via un fichier plugin xml L attribut types indique pour quels types de donn es le StoreListener doit tre appel L attribut beforeStoreLoad indique si le StoreListener doit tre appel lors du chargement du Store L attribut repeat indique s il doit tre appel lorsqu une criture est rejou e dans un cluster JSync lt plugincomponents gt lt storelistener class com example MyStoreListener types Member Article PortletSearch beforeStoreLoad false repeat true gt lt plugincomponents gt Pour impl menter un StoreListener il faut d river de la classe BasicStorelistener et surcharger les m thodes handleCreate
48. ata int op Member mbr boolean checkIntegrity Map context Control only creation and update if op OP_DELETE return ControllerStatus OK Get the request to extract the uncrypted password Channel channel Channel getChannel HttpServletRequest request HttpServletRequest channel getCurrentServletRequest if request null return ControllerStatus OK String password request getParameter passwordl if Util isEmpty password return ControllerStatus OK Check the password if checkPassword password return ControllerStatus OK return new ControllerStatus The password must contains between 8 and 16 characters and at least 1 digit private boolean checkPassword String password At least 8 characters max 16 if password length lt 8 password length gt 16 return false At least 1 digit for int i 0 i lt password length i if Character isDigit password charAt i return true 55 return false Une fois la phase de contr le pass e les DataController interviennent juste avant et juste apr s l criture Ils peuvent ainsi modifier l objet juste avant qu il ne soit enregistr ou d clencher un traitement juste apr s l criture Par exemple il est possible de signer une publication et d ajouter la signature dans un champ d di de faire une cat gorisation automatique de la publication selon son contenu
49. ation d un AlarmManager d di permet de faire des op rations suppl mentaires comme par exemple la suppression de toutes les alarmes ce qu il ne faut surtout pas faire sur le gestionnaire commun En contrepartie une nouveau thread est cr Pour obtenir un AlarmManager il faut utiliser la m thode channel getAlarmManager String key L attribut key repr sente le nom de l AlarmManager 9 2 Int gration dans JCMS 9 2 1 Int gration d clarative La d claration d un AlarmListener peut se faire directement dans le fichier plugin xml du module Il suffit d indiquer la classe de l AlarmListener la planification de l alarme avec une syntaxe cron et ventuellement le nom du gestionnaire d alarme Si le gestionnaire n est pas pr cis alors un AlarmManager commun tous les Plugin est utilis lt plugin gt lt plugincomponents gt lt alarmlistener class com package MyAlarmListener schedule 30 14 sm manager MyAlarmManager gt lt plugincomponents gt lt plugin gt Alternativement on peut pr ciser une fr quence en minutes au lieu d utiliser une syntaxe cron lt plugin gt lt plugincomponents gt lt alarmlistener class com package MyAlarmListener frequency 30 manager MyAlarmManager gt lt plugincomponents gt lt plugin gt 9 2 2 Int gration programmatique Parfois la planification ou la fr quence de l alarme doit tre choisi dynamiquement p ex par la lecture d une
50. ationRequestWorkflow pstatus 21 background color brand success 71 8 La gestion des fichiers d pos s 8 1 Les diff rents types de fichiers d pos s 8 1 1 Les fichiers des FileDocument Les fichiers associ s aux FileDocument sont d pos s dans l arborescence uploads docs Ils sont class s dans des sous r pertoires correspondant leur type mime puis dans un r pertoire repr sentant l ann e et le mois du d p t Le nom du fichier re u est nettoy les lettres sont pass es en minuscule et d saccentu es les espaces sont remplac s par des _ et les autres caract res non alphanum riques sont ignor s Exemple Si un contributeur d pose le fichier Rapport d tonnement de Jean Marc pdf en juillet 2013 il sera enregistr dans upload docs application pdf 2013 07 rapport detonnement de jeanmarc pdf Si le nombre de fichiers au sein d un r pertoire de d p t d passe 4096 propri t channel max files per dir alors les nouveaux fichiers sont d pos s dans un sous r pertoire 8 1 2 Les fichiers des photos des membres Les photos des membres sont stock es de la m me mani re que les documents mais dans le r pertoire upload photos Les fichiers satellites sont g r s de la m me mani re 8 1 3 Les fichiers des favicons Une favicon est une petite ic ne g n ralement de 16px qui repr sente un site Elles sont notamment utilis es lors de l affichage des objets WebPage Ces
51. been locked by lockMbr since lockDate Attention le verrouillage souple tant g r uniquement en m moire dans un cluster JSync il n est partag qu avec les contributeurs du m me r plica 4 5 2 Verrouillage dur Le verrouillage dur est explicite et persistant Il n op re que sur les publications Lorsqu une publication a t verrouill e ainsi seul le membre qui a pos le verrou peut la mettre jour ou la supprimer L interface de JCMS permet cependant aux autres contributeurs de demander le rel chement et l administrateur de forcer le rel chement Publication pub channel getPublication publd Member mbr channel getMember mbrld pub putStrongLock mbr Member lockMbr pub getStrongLockMember Date lockDate pub getStrongLockDate System out println pub has been locked by lockMbr since lockDate pub releaseStrongLock mbr 53 5 Intervenir dans le traitement d un enregistrement 5 1 DataController Les DataController g rent l int grit des donn es et interviennent dans le traitement des critures de toutes les donn es JCMS Toutes les classes de donn es de JCMS int grent nativement un contr le d int grit p ex pour v rifier les champs obligatoires de la donn e Attention dans un cluster JSync les DataController ne sont appel s que sur le r plica sur lequel l criture lieu Pour d clencher un traitement sur l ensemble des r
52. ble de r sultats obtenus par la m thode standard de recherche L API permet aussi d int grer les QueryFilter aux interfaces de recherche sans avoir modifier les JSP L article suivant pr sente l API des QueryFilter https community jalios com howto queryfilter 10 4 Log4J JCMS utilise la librairie log4j pour sa gestion d v nements L article suivant d crit le param trage et l utilisation de cette API dans JCMS https community jalios com howto log4 j 10 5 Statistiques et analyse des usages JCMS int gre un syst me det collecte et d analyse des usages Celui ci produit des m triques sur les diff rents pans fonctionnels de JCMS e Consultation visite t l chargement contenu les plus consult s e Recherche taux de recherche mots les plus recherch s e Contribution volution du nombre de contenu de document types les plus utilis s e Utilisateurs volution du nombre d utilisateurs r partition selon le type membre contact invit s e Exploitation volution de l espace disque des espaces de travail e Technique taux de requ te temps moyen de r ponse navigateurs et syst me d exploitation utilis s L article suivant d crit cette API https community jalios com howto analytics 10 6 Open API Les syst mes d informations d entreprises reposent sur des parcs aux technologies h t rog nes J2EE NET PHP Ruby on rails Cela rend le besoin d inter
53. bleau collections map doivent tre mis jour il faut pr alablement en faire une copie Member opAuthor channel getMember Group group channel getGroup groupla Group aNewParent channel getGroup Get a copy of the group to update it Group updated Group group getUpdatelnstance Update the name updated setName The Jedi Council Add a new parent Make a copy of parentSet HashSet lt Group gt newParentSet new HashSet lt Group gt updated getParentSet newParentSet add aNewParent updated setParentSet newParentSet Check if the group can be updated ControllerStatus status updated checkUpdate opAuthor if status isOK Update the group updated performUpdate opAuthor else String msg status getMessage opAuthor getLanguage System out println Cannot update group group msg Attention Dans le cas de JcmsDB une fois la donn e modifi e elle sera mise jour m me si la m thode performUpdate n est pas appel e Il faut appeler explicitement la m thode HibernateUtil evict data pour annuler les modifications sur cette donn e Cet appel est automatiquement r alis par le FormHandler lorsque la m thode checkUpdate rejette la mise jour Pour les appels en dehors du FormHandler c est au d veloppeur de d clencher l invocation de la m thode evict 4 4 Supprimer une donn e La suppression d une donn e se fait en appel
54. buts Attribut Description administrators Les administrateurs de l espace catSet L ensemble des cat gories racines de cet espace defaultGroup Le groupe par d faut de l espace language La langue principale de l espace parent l espace parent de l espace tagRoot La racine des tags de l espace title Le titre de l espace typeMap Param trage des types utilis s dans l espace Quota Quota de documents autoris s dans l espace isClosed Indique si l espace est ferm isModel Indique si l espace sert de mod le 2 6 2 Les principales m thodes M thode Description getHomeUrl Renvoie l URL de la page d accueil de cet espace getMemberCount Renvoie le nombre de membres qui appartiennent cet espace getMemberSet includeDBMember Renvoie l ensemble des membres qui appartiennent cet espace Si includeDBMember est true les DBMember appartenant cet espace sont aussi retourn s getPublicationSet Class Renvoie l ensemble des publications de cet espace qui sont des instances de la classe fournie 2 7 La classe Category La classe Category repr sente une cat gorie Les cat gories servent au classement des publications Une publication peut tre attach e a une ou plusieurs cat gories Les cat gories sont tr s utilis es dans le fonctionnement du portail de JCMS C est g n ralement une cat gorie qui est point e lors d
55. ctu e sur une donn e par un membre qui n en est pas l auteur Ce param tre sert donc tracer les auteurs des critures pour les donn es historis es i e toutes les donn es de JStore et les donn es de JcmsDB qui d rivent de la classe HistorizedDBData Member opAuthor channel getMember Member group new Group group setName Jedi Council Chek if the group can be created by opAuthor ControllerStatus status group checkCreate opAuthor if status isOK Create the group group performCreate opAuthor else String msg status getMessage opAuthor getLanguage 51 System out println Cannot create group group msg 4 3 Mettre jour une donn e La mise a jour d une donn e se fait en modifiant un objet repr sentant la donn e puis en appelant la m thode performUpdate Comme pour performCreate elle re oit en param tre l auteur de l op ration L objet sur lequel est d clench e la mise jour diff re selon qu il s agit de JStore ou de JcmsDB Dans le cas de JStore il faut faire la mise jour sur une copie de la donn e Dans le cas de JcmsDB la mise jour doit s op rer directement sur la donn e Pour att nuer cette diff rence la m thode getUpdatelnstance renvoie l instance sur laquelle il faut effectuer la mise jour Attention dans cas de JStore il s agit d une copie de surface shallow copy Aussi si des attributs de type ta
56. cument est plac dans l tat Cach du Workflow des pi ces jointes D s que l une des publications r f rentes devient visible le FileDocument est plac dans l tat Publi De m me partir de JCMS 9 SP1 les documents qui suivent le Workflow des pi ces jointes ont leurs droits d acc s asservis aux publications qui les r f rencent 2 13 1 Les principaux attributs Attribut description descriptionML Description La description multilingue du document filename Le chemin du fichier relatif la webapp contentType Le type mime du fichier originalFilename Le nom du fichier tel qu il a t recu lors du d p t uploadDate Date de d p t du fichier pdfUploadDate Date de d p t du PDF associ ce fichier 2 13 2 Les principales m thodes M thode Description getAssociatedFileSet Retourne l ensemble des fichiers associ s a ce document getAssociatedPDF Retourne le PDF associ ce document getDimensions Retourne les dimensions de ce document pour les images et les vid os getDuration Retourne la dur e de ce document pour les audio getFile Retourne le File repr sentant le fichier du document getFileReferrerSet Retourne toutes les donn es JCMS qui r f rencent ce fichier getGenericContentType Retourne la premi re partie du content type p ex video si le content type est video mpeg
57. date de mise jour majeure sdate date de tri authorizedMemberSet authorizedGroupSet Droits de consultation updateMembersSet updateGroupSet Droits de mise jour mainLanguage Langue principale de la publication maininstance Instance d origine des copies de travail 2 8 2 Les principales m thodes M thode Description canBeReadBy Member Renvoie true si le membre peut consulter la publication hasBeenReadBy Member Renvoie true le membre a consult la publication getWeakReferrerSet Renvoie l ensemble des publications qui r f rence cette publication via une r f rence molle URL lien wiki getWorkflow Renvoie le workflow de cette publication isInVisibleState Renvoie true si la publication est dans un tat visible isTracked Retourne true si les lecteurs qui consultent la publication sont suivis trackReader Member Indique que le membre a consult la publication getAbstract Renvoie le champ r sum de la publication getTreeChildren Renvoie les publications filles de cette publication getTreeParent Renvoie la publication parente de cette publication isTreeLeaf Renvoie true si cette publication n a pas de publications filles isTreeNode Renvoie true si cette publication a des publications filles getTreeRoot Renvoie la racine de publication de cette publication getDatalmage Renvoie la premi re image trouv e dans les cha
58. donn es transitoires p ex des donn es de test et de simplifier le suffixe a fusionner Le compactage agit sur des s ries d op rations de mise a jour update sur un m me objet et sur toutes les op rations portant sur des objets d truits En supprimant ces op rations le compactage d truit une partie des versions des objets Aussi il est possible d appliquer des r gles pour choisir les op rations qui peuvent tre compact es Par 11 exemple ne pas compacter les op rations portant sur les m tadonn es d une publication ou celles portant sur des publications appartenant certains espaces de travail Le compactage est une op ration d exploitation sensible Elle n cessite un arr t des critures dans le cluster et un red marrage de chaque instance 1 2 6 Fusion de store avec le StoreMerge Il est parfois n cessaire de fusionner les op rations de deux Stores C est par exemple le cas lors des mises en production ll faut fusionner les op rations sur les donn es r alis es durant la p riode de d veloppement et celles qui ont eu lieu en production durant cette p riode Le StoreMerge est un outil permettant de fusionner deux stores Il identifie la partie commune et fusionne les deux suffixes divergents Durant cette fusion les conflits sont d tect s p ex mise jour concurrente de la m me donn e Des r gles de r solution peuvent tre fournies au StoreMerge pour r soudre les conflits L article Stor
59. e 1 4 R partition des donn es entre JStore et JcmsDB La r partition des donn es entre JStore et JcmsDB se fait techniquement classe par classe Toutes les instances d une m me classe sont stock es dans l un ou l autre des syst mes de stockage Dans JCMS les donn es sont r parties selon les capacit s de chacun des syst mes de stockage 15 JStore e Donn es de structures acc d es tr s fr quemment groupes cat gorie espaces de travail membres portlet e Publication multilingues article FAQ glossaire document JcmsDB e Donn es volumineuses alertes suivi des lecteurs suivi des mises jour suivi d activit membres documents t ches notes de worfklow archives contenu conversationnel e Donn es mises jour tr s fr quemment suivi des connexions suivi des lecteurs bureau personnalis JCMS livre en standard deux types de donn es fonctionnellement proches mais avec un mode de stockage diff rents e Les membres classe Member JStore et classe DBMember JcmsDB e Les documents classes FileDocument JStore et la classe DBFileDocument JcmsDB Dans ces deux cas il est pr f rable de privil gier le stockage dans JStore sauf si la volum trie impose de prendre JcmsDB 1 5 Identifiants des donn es JCMS 1 5 1 Structure des identifiants JCMS utilise un syst me d identifiant unique pour identifier toute donn e qu elle soit stock e dans JStore avec ou sans
60. e TrackedDBData 2 15 5 L interface EditableData L interface EditableData indique que la classe dispose de gabarits d dition Seules les classes qui impl mentent cette interface peuvent tre dit es avec le tag lt jalios edit gt 2 15 6 L interface StrongLockable L interface StrongLockable indique que la classe supporte les verrous durs StrongLock En standard seuls les contenus impl mentent cette interface 2 16 Les classes de donn es satellites Certaines classes de donn es sont rattach es une donn e Elles ne sont pas agr g es dans la donn e car elles sont g n ralement stock es dans JcmsDB pour des raisons de volum trie ou de mises jour Elles peuvent porter sur des donn es stock es dans JStore ou JcmsDB C est par exemple le cas dans l exemple ci dessous o de nombreuses classes gravitent autour d un Article Chacune de ces classes pointe la publication au travers de son identifiant Reader Tracker Publication Follower LT A NE PON Recommendation ExtraDBData En plus des classes de JCMS des modules peuvent ajouter leurs propres classes satellites C est par exemple le cas du module Commentaire un commentaire est attach un contenu ou du module Gestion de t ches une t che peut tre attach e une publication 2 16 1 La classe ReaderTracker La classe ReaderTracker contient les informations de suivi de lecture sur une publication Une instance contient les informations des acc
61. e et sont donc tr s performant JCMS maintient ainsi l ensemble des membres d un espace de travail l ensemble des membres d un groupe l ensemble des publications d un membre l ensemble des publications d une cat gorie 10 Deux m triques sont donc consid rer avec JStore le volume m moire et le temps de chargement 1 2 3 Volum trie Le volume m moire d pend du nombre d objets vivants charger et de la taille moyenne de ces objets La taille d un objet est essentiellement li e au volume de texte stock dans l objet typiquement un objet JCMS sans aucun champ texte p se moins de 1 Ko JStore repose sur les API Java dans lesquelles les cha nes de caract res sont stock es en Unicode sur 2 octets Le volume m moire occup est donc un peu plus du double du volume de texte Par exemple une page A4 de texte repr sentant 3 Ko de texte brut sur disque occupera 7 Ko en m moire dans JStore index compris Il faut ajouter cela le poids des m tadonn es associ aux contenus de l ordre de 1 Ko par contenu ainsi que le poids des autres donn es pr sentent Un site JCMS g rant 100 000 contenus de ce type occupera de l ordre de 1 2 Go en m moire En r gle g n rale on peut consid rer les m triques suivantes e Les petits objets membres groupes cat gories portlets occupent en moyenne 3 Ko en m moire 300 000 objets de cette sorte occupent environ 1 Go de m moire e Les gros objets contenu
62. eMerge Guide de l utilisateur http community jalios com howto storemerge d taille le fonctionnement et l utilisation du StoreMerge 1 2 7 R plication avec JSync Afin de garantir la haute disponibilit d un site JCMS il est possible de r partir la charge sur plusieurs webapps via un r partiteur de charge On parle alors d un cluster JCMS Chaque webapp ayant sa propre gestion m moire il faut garantir que les donn es cr es dans le store d une webapp seront bien diffus es aux autres webapps du cluster JSync est le protocole de r plication de JStore permettant de construire un cluster JCMS Dans ce cluster chaque n ud est une instance de JCMS appel e un r plica Les r plicas sont organis s en groupe avec un leader Les r plicas se connectent leur leader C est ce ralliement qui fait qu un r plica devient le leader du groupe Un leader peut lui m me tre connect avec un le leader d un autre groupe Chaque instance JCMS contient l ensemble des donn es du store mais l ensemble du cluster doit se connecter la m me base de donn es JcmsDB Pour assurer la haute disponibilit cette base peut elle m me tre mont e en cluster Pour les fichiers d pos s il est possible soit de les r pliquer sur chaque n ud du cluster soit de les centraliser p ex sur un SAN 12 R plica 3 et DB D R plica 2 JSync R plica 1 JDBC File System Chaque n ud accepte les nouvelles
63. embre appartient l espace Un ou plusieurs membres sont d clar s administrateurs de l espace Ce statut leur donne acc s toutes les donn es sur leur espace Au sein d un espace on d finit les types de publication utilis s pour la contribution ainsi que leur param trage workflow droits par d faut cat gorie par d faut Il est possible de clore la contribution dans un espace Dans les sites multilingues une langue par d faut peut tre d finie sur l espace Si c est le cas les nouvelles publications seront par d faut cr es dans cette langue Un quota disque peut tre d fini pour chaque espace Au del de ce quota le d p t de document sera bloqu Un espace peut servir de mod le pour cr er de nouveaux espaces Les espaces peuvent tre compos s hi rarchiquement Un espace peut comporter un ou plusieurs sous espaces qui eux m me peuvent comporter des sous espaces Un sous espace ne peut tre associ qu un seul espace parent Cette organisation est notamment utilis e par le module Espaces Collaboratifs qui permet au sein d une communaut d ouvrir des sous communaut s ou des espaces projets Les sous espaces ont une grande autonomie vis vis de leurs espaces parents en ce qui concerne les administrateurs les participants les politiques de droits Enfin la recherche de publications faite au sein d un espace peut tre tendue ses sous espaces 26 2 6 1 Les principaux attri
64. ents Cette repr sentation sous forme arborescente offre les caract ristiques suivantes e le chemin de la ressource est en correspondance avec la navigation permettant d acc der la fonctionnalit dans l interface graphique exemple l acc s au Journal des v nements est situ dans la zone Supervision elle m me se trouvant dans l espace d administration e e droit d acc s une ressource fille donne acc s tous ses parents exemple l acc s au Journal des v nements donne acc s la zone d administration e e droit d acc s une ressource parente donne le droit toutes les ressources filles exemple l acc s la zone Supervision donne acc s au Journal des v nements e le chemin d une ressource est sans aucun lien avec le chemin physique du jsp servlet dans l arborescence de la webapp JCMS 6 3 3 V rification des ACL La v rification des droits d acc s une fonctionnalit d administration s effectue via la m thode checkAccess recevant en param tre le chemin de la ressource if checkAccess resource path sendForbidden request response return Par exemple l acc s fonctionnalit Journal des v nements est contr l de la fa on suivante if checkAccess admin monitoring logs sendForbidden request response return Cette m thode contr le automatiquement que les droits d acc s du membre connect lui permettent d acc der la resso
65. es attributs propres l criture chaque op ration comporte 3 attributs syst matiquement pr sents e stamp Une estampille logique permettant d identifier et d ordonner cette op ration de fa on unique dans le cluster e _ia l identifiant de l objet sur lequel porte l op ration e op type d op ration create update delete e mdate la date laquelle a eu lieu l op ration Exemple simplifi lt member stamp c 50001 id c 50001 op create cdate 1377609854772 firstName John login 3d mdate 1377609854772 name Doe opAuthor 2 password 2a 10 gt lt member stamp c 50002 id c 50001 op update email john doeltexample com mdate 1377609870256 gt lt group stamp c_50003 id c 50003 op create cdate 1377609887673 mdate 1377609887673 name Customers gt lt member stamp c 50004 id c 50001 op update declaredGroups c 50003 mdate 1377609905788 gt lt member stamp c 50005 id c 50001 op delete mdate 1377609912660 gt Dans l exemple ci dessus e L op ration c_ 50001 repr sente la cr ation du membre John Doe e L op ration c_ 50002 repr sente la mise jour de son email e L op ration c_ 50003 repr sente la cr ation du groupe Customers e L op ration c_ 50004 repr sente le rattachement de John Doe au groupe Customers e L op ration c_ 50005 repr sente la suppression du membre John Doe JStore maintient la coh rence entre l
66. es comptes utilisateurs et les contenus ditoriaux JStore est coupl avec JSync qui assure la haute disponibilit des donn es e _JcmsDB une base de donn es relationnelle classique qui fonctionne sur la plupart des SGBDR du march JCMS y stocke les contenus utilisateurs les donn es forte volum trie ou fr quemment mises jour e Lucene JCMS utilise le moteur de recherche Lucene pour indexer les donn es textuelles de JStore et de JcmsDB e _ Syst me de fichier JCMS stocke sur le syst me de fichier les documents d pos s les fichiers g n r s vignettes PDF SWF les propri t s du site les types de publication et les types de workflow les logs 1 2 JStore 1 2 1 Fonctionnement g n ral JStore est une base de donn es objet en m moire et dont la persistance est assur e par la journalisation des op rations de modification Lorsqu une donn e repr sent e par un objet Java est cr e modifi e ou supprim e l op ration d crivant cette criture est ajout e au journal A chaque op ration seuls les attributs concern s sont enregistr s Par exemple lors de la mise jour du titre d un article l op ration ne porte que sur cet attribut Les op rations sont enregistr es dans le fichier store xml Chaque op ration est repr sent e par une balise XML Le nom de la balise repr sente la classe d objet concern e p ex member pour les membres category pour les cat gories En plus d
67. es les instances d une classe de publication et effectue un contr le de droits Elle re oit en param tre la classe recherch e et un membre Seules les instances que le membre a le droit de consulter sont retourn es Le TreeSet retourn est tri selon le natural comparator Du fait du contr le des droits cette m thode est bien moins rapide que getDataSet Le Set retourn peut tre modifi Exemple Member m1 channel getMember id1 Member m2 channel getMember id2 Set lt Publication gt pubSetl channel getPublicationSet FileDocument class ml Set lt Publication gt pubSet2 channel getPublicationSet FileDocument class m2 pubSetl removeAll pubSet2 Keep only publication ml can access but not m2 40 3 2 2 Acc s par index JStore JCMS maintient de nombreux index sur les donn es JStore L acc s ces donn es est donc tr s rapide Les index sont calcul s partir des r f rences des donn es Exemples e Une publication r f rence un membre l auteur JCMS maintient donc un index de toutes les publications d un membre e Une publication r f rence un espace de travail JCMS maintient donc un index de toutes les publications d un espace de travail e Une publication r f rence un ensemble de cat gories JCMS maintient donc un index de toutes les publications associ es une cat gorie L index est accessible directement sur l instance concern e Exemple Group grp ch
68. et d alerte notification sur publication validation dans les workflow planification d un v nement rappel sur une t che d passement quotas On d nombre ainsi une cinquantaine d alertes diff rentes Toutes les alertes mises par la plateforme sont g r es de fa on homog ne et g n rique L article suivant pr sente l API de gestion des alertes https community jalios com howto alert 10 2 Authentification JCMS fournit en standard deux m canismes d authentification 1 Authentification partir de la base des membres JCMS 2 Authentification partir d un annuaire LDAP LDAPS Cependant certaines architectures n cessitent des m canismes d authentification particuliers comme par exemple Base des utilisateurs g r e dans une base de donn es Base des utilisateurs g r e dans plusieurs annuaires LDAP non synchronis s Authentification unique Single Sign On Authentification base de certificats Authentification forte carte puce dispositif biom trique PON L API de JCMS permet de d velopper et d int grer tr s facilement de nouveaux m canismes d authentification adapt s aux besoins de l architecture cible L article suivant pr sente l API d authentification https community jalios com howto authenticationhandler 80 10 3 QueryFilter L API QueryFilter permet de compl ter ces m canismes standards en agissant sur les param tres d une recherche et en modifiant l ensem
69. fichiers sont tous stock s dans les r pertoires upload favicons 8 2 Les fichiers satellites De nombreux fichiers accompagnent les fichiers d pos s dans JCMS e Des vignettes g n r es dans diff rentes r solutions e Les fichiers PDF g n r s pour les fichiers bureautiques avec le module Convertisseur PDF e l extraction du texte des documents bureautiques avec le module Indexation des documents e Les fichiers de la visionneuse des documents avec le module Visionneuse de documents 72 Les fichiers satellites associ s un fichier d pos sont regroup s dans un sous r pertoire situ dans le m me r pertoire que le fichier et portant le nom du fichier avec le suffixe associatea Lorsqu une nouvelle version d un document est d pos e l ensemble des fichiers satellites est effac et reconstruit Lorsqu un document est supprim l ensemble des fichiers satellites est supprim 8 3 La gestion des fichiers des FileDocument La classe FilelndexManager g re la liaison entre les fichiers physique et les FileDocument Sa m thode getindexedDataSet permet de retrouver rapidement quelle FileDocument est attach un fichier physique du r pertoire upload docs Les m thodes channel getOrphanFiles recherchent l ensemble des fichiers pr sents dans le r pertoire upload docs et qui ne sont pas rattach s un FileDocument 8 4 La g n ration des vignettes Afin d all ger le poids global des pages HTML
70. fit d crire une classe impl mentant l interface DataSelector et son unique m thode isSelected Cette m thode re oit la donn e propos e et retourne true si il faut la retenir et false autrement Les DataSelector tant g n ralement des classes tr s simples il est souvent pratique de les d clarer par une classe anonyme Exemple retourner toutes les publications de l espace WS1 dont les auteurs ne sont pas des comptes actifs Set lt Publication gt pubSet channel getWorspace ws1Id getPubSet DataSelector selector new DataSelector public boolean isSelected Data data Member author data getAuthor return author null lauthor isValidAccount Set lt Publication gt resultSet JcmsUtil select pubSet selector null Combinaison des DataSelector Pour faire une recherche multicrit res il suffit de combiner plusieurs DataSelector Pour cela JCMS propose les DataSelector suivants e _AndDataSelector v rifie que tous les DataSelector fournis acceptent la donn e e OrDataSelector v rifie qu au moins un des DataSelector fournis accepte la donn e e ReverseDataSelector retourne le contraire du DataSelector fourni Exemple retourner tous les articles publi s depuis un mois qui sont visibles et qui n ont pas de droits de consultation Set lt Article gt set channel getDataSet Article class Date lastMonth new Date System currentTimeMillis MILLIS IN ONE MONTH Data
71. getDuration Retourne la dur e du Workflow Express getTargetPstatus Retourne l tat cible pour le Workflow Express getTransitionSet Retourne l ensemble des transitions sortant de cet tat getRoleSet Retourne l ensemble des r les associ s aux transitions de cet tat hasReminder Retourne true si une relance est associ e a cet tat isExpress Retourne true si un Workflow Express est associ e a cet tat isSpecialState Retourne true si il s agit de l un des 4 tats sp ciaux Planifi Publi Expir Archiv getActionOutSet Retourne l ensemble des actions sortantes getActioninSet Retourne l ensemble des actions entrantes 68 7 4 La classe WFAction La classe WFAction est la super classe des diff rentes actions qui peuvent tre d clench e a l entr e ou a la sortie d un tat 7 5 La classe WFTransition La classe WFTransition repr sente une transition entre deux tats d un Workflow Les principales m thodes M thode Description getSource Retourne l tat de d part getTarget Retourne l tat d arriv getRoleSet Retourne l ensemble des r les de cette transition 7 6 La classe WFRole La classe WFRole repr sente un r le dans le workflow Les r les sont des notions abstraites qui sont concr tis s au sein des espaces de travail Par exemple le workflow Basique comporte le r
72. gory id FicheDocumentaire Nomenclature 1 5 4 Identifiants externes JCMS peut g rer des donn es repr sentant des objets de syst mes externes Pour cela on d finit une structure d identifiants externe et on met en place un syst me de r solution pour ces identifiants Pour plus de d tails consultez la section 3 1 4 17 1 6 Les autres syst mes de stockage En compl ment de JStore et JcmsDB JCMS utilise le syst me de fichier pour stocker pour certains types de donn es 1 6 1 Fichiers d pos s Tous les fichiers d pos s dans JCMS sont stock s sur le syst me de fichier dans le r pertoire upload Ce r pertoire est organis en sous r pertoires La gestion de cette organisation est enti rement prise en charge par JCMS cf section 7 1 6 2 Propri t s JCMS utilise plusieurs fichiers de propri t s Ces fichiers sont principalement utilis s pour Les libell s des interfaces localis s dans les diff rentes langues support es par JCMS Ces fichiers de propri t s sont de la forme lt code de langue gt prop p ex en prop fr prop es prop Le param trage de certaines fonctionnalit s cozur ou module Les principaux fichiers de param trage sont e WEB INF data custom prop Contient les propri t s ditables depuis les diff rentes interfaces de param trage e WEB INF jaios jcms prop Contient les valeurs par d faut des propri t s de param trage de JCMS e WEB INF plugins NOM DU MODULE propert
73. groupe de l annuaire LDAP Pour plus de d tails consultez l article Configuration et fonctionnement du LDAP dans JCMS http community jalios com ldap 22 Groupe hi rarchique Un groupe peut aussi avoir un ou plusieurs groupes parents Dans ce cas les membres attach s ce groupe seront syst matiquement attach s aux groupes parents et de proche en proche l ensemble des groupes anc tres Les membres b n ficient ainsi de toutes les caract ristiques attach es ces groupes notamment les droits Avec les membres les groupes sont au c ur du syst me de contr le des droits de JCMS Ils d finissent des droits de contributions sur les diff rents types de publication Ils d finissent les droits d usage et de gestion des cat gories Ils peuvent tre associ s une ACL Access Control List donnant leurs membres les droits correspondants l ACL Ils sont utilis s dans plusieurs fonctions de JCMS et des modules pour d terminer des droits p ex droits de consulter modifier une publication ou une cat gorie r le dans les workflows gestion des invit s dans les espaces collaboratifs e Enfin les groupes ont eux m mes un certain niveau de visibilit visible de tous uniquement des membres qui les composent ou uniquement de leurs administrateurs 2 3 1 Les principaux attributs Attribut Description workspace Espace de travail auquel est rattach le groupe parentSet
74. hode canRead de la classe Member servent a tester ce droit Publication pub channel getPublication publd Member mbr channel getMember mbrId if pub null amp amp pub canBeReadBy mbr 60 System out println mbr can read publication pub Ce code est quivalent Publication pub channel getPublication publd Member mbr channel getMember mbrlId if mbr null amp amp mbr canRead pub System out println mbr can read publication pub La classe Channel fournit aussi la m thode getPublicationSet qui permet de retourner un ensemble de publications d un certain type qui sont accessibles pour un membre donn Member mbr channel getMember mbrlId TreeSet lt Publication gt pubSet channel getPublicationSet Article class mbr 6 1 2 Cat gorie Comme pour les publications des droits de consultation peuvent tre appliqu s aux cat gories La m thode canBeReadBy de la classe Category et la m thode canRead de la classe Member servent tester ce droit Category cat channel getCategory catld Member mbr channel getMember mbrlId if cat null amp amp cat canBeReadBy mbr System out println mbr can read category cat 6 1 3 Groupe Comme pour les publications des droits de consultation peuvent tre appliqu s aux groupes Par d faut JCMS propose 3 niveaux de visibilit de groupes 1 Le groupe est visible de tout
75. ies plugin prop Contient les valeurs par d faut des propri t s de param trage du module e WEB INF data webapp prop Ce fichier neiste plus depuis JCMS 8 Dans les anciennes versions de JCMS il contenait des propri t s qui n taient pas ditables Depuis JCMS 8 il est recommand de mettre ces propri t s dans le module principal du site 1 6 3 Type La structure des types de publication est enregistr e dans des fichiers localis s dans le r pertoire WEB INF data types Ce r pertoire contient un sous r pertoire par type de publication ex Portlet Navigation Chaque sous r pertoire contient un fichier XML repr sentant la structure du type ex PortletNavigation xml et un fichier XML contenant la liste des gabarits associ s ce type ex PortletNavigation template xml 1 6 4 Workflow La structure de workflow est enregistr e dans des fichiers XML localis s dans le r pertoire wEB INF data workflows 1 6 5 Indexation Lucene Certaines donn es b n ficient d une indexation plein texte C est notamment le cas des publications des cat gories des membres des fichiers d pos s L indexation est prise en charge par le moteur de recherche Lucene dont les index sont stock s dans le r pertoire weB INF data lucene 18 1 6 6 Annuaire LDAP JCMS peut tre connect avec un annuaire LDAP Cet annuaire est utilis pour valider l authentification des membres cr des comptes JCMS et mettre jo
76. le Valideur Celui ci est utilis pour passer la publication de l tat Soumis l tat Planifi ou Publi Le choix des membres ou des groupes qui doivent tre associ s ce r le est d fini pour chaque espace de travail utilisant ce Workflow Cette association est mat rialis e par la classe WKRole Les principales m thodes M thode Description getld Retourne l identifiant du r le A partir de JCMS 9 cette m thode retourne la concat nation de l identifiant du workflow et de l attribut roleld p ex basic writers getName lang Retourne le nom du r le dans la langue indiqu e getDescription lang Retourne la description du r le dans la langue indiqu e 7 7 La classe WKRole La classe WKRole repr sente la d finition d un r le dans un espace de travail Un r le comporte e _Laliste de membres qui ont le r le e Un mode de comportement sur les membres au moins un membre ou tous les membres doivent avoir valid s e Laliste des groupes pour lesquels les membres ont le r le e Un map de pond ration pour chaque groupe p ex 51 des membres du groupe e Un mode de comportement sur les groupes au moins un groupe ou tous les groupes pond r s doivent avoir valid s e Est ce qu il s agit d un r le ouvert un r le ouvert permet au membre qui dite la publication de choisir les membres jouant le r le sur cette publication 69 Les principales m thodes
77. lisateur e es classes des formulaires demande d inscription demande d ouverture d espace collaboratif e es classes des portlets Certaines classes d riv es de la classe Publication sont stock es dans JStore et d autres dans JemsDB Les principales caract ristiques d une publication e Elleauntitre e Elle a des cat gories e Elle est rattach e un espace de travail 28 Elle a des droits de consultation et de mise jour Elle a une date de mise jour majeure une date de publication une date d expiration et une date d archivage Elle est rattach e un workflow Elle est dans un certain tat du workflow repr sent par l attribut pstatus On peut conna tre les membres qui ont consult la publication On peut conna tre les membres qui suivent les modifications de la publication Elle peut disposer de diff rents gabarits d affichage Elle regroupe des sous classes de Comparator et de DataSelector Le contenu de la publication est index dans Lucene Toute publication impl mente la classe TreeNode qui repr sente une arborescence Certains types de publications exploitent cette arborescence 2 8 1 Les principaux attributs Attribut Description title titleML Titre categories Cat gories workspace Espace de travail pstatus Etat de workflow pdate date de publication edate date d expiration adate date d archivage udate
78. m rique du workflow ou ANY e transition type la cha ne de caract res in out form submission ou ANY e actor la cha ne de caract res alertAuthor alertWorkers alertAdmins ou ANY e reminder la cha ne de caract res reminder noReminder ou ANY e propertyName la cha ne de caract res title short description ou description Par exemple pour produire une alerte sp cifique l auteur lors de la sortie de l tat 21 dans le workflow vacationRequestWorkflow il faut d clarer les propri t s suivantes wf alert ANY VacationRequest vacationRequestWorkflow 21 out alertAuthor ANY title Acceptation de data wf alert ANY VacationRequest vacationRequestWorkflow 21 out alertAuthor ANY short description Votre demande de cong a t accept e data url wf alert ANY VacationRequest vacationRequestWorkflow 21 out alertAuthor ANY description lt p gt lt a href data url gt Votre demande de cong lt a gt a t accept e lt p gt 7 10 Pr sentation des libell s des tats A partir de JCMS 9 SP1 les labels des tats de workflow comportent un s lecteur CSS qui permet de les identifier sans ambiguit Cela permet par exemple d affecter une couleur sp cifique a un tat Le format du selecteur CSS est w state lt wfId gt pstatus lt pstatus gt Par exemple pour coloriser en vert success l tat 21 du workflow vacationRequestWorkflow on peut crire en LESS Wfstate vac
79. m howto alert 2 17 Les publications import es JCMS permet d importer et d exporter des publications d autres sites Les publications import es poss dent un attribut importMap qui contient des informations li es l import Cette map contient entre autre e l identifiant de la donn e d origine e La date du dernier import e Lelotd import de la donn e e La date de modification de la donn e d origine e La signature de la donn e d origine e La source d import e L URL de la donn e d origine e l identifiant de l auteur d origine e La version de la donn e e Est ce qu un conflit de mise jour a t d tect lors du dernier import Ces informations sont accessibles via la m thode getimportMap ou en utilisant les m thodes d di es isimported getimportid getimportMdate Pour le d tail de la mise en uvre de l import export avec JCMS consultez l article Mise en uvre de Import Export http community jalios com howto importexport 35 2 18 D veloppement de nouveaux types de donn es JCMS fournit en standard de nombreux types de donn es Cependant dans certains cas il y a besoin de g rer de nouveaux types de donn es Pour cela plusieurs approches sont possibles 2 18 1 Type de publication JCMS int gre un g n rateur de type de publication Utilisez cette approche si vous devez cr er des types de donn es qui d rivent de l une des sous classes de Publication
80. migration de donn es d un SGBDR un autre Aussi le choix du SGBDR doit tre m rement r fl chi d s la phase d architecture du projet Si vous retenez Derby il n y a aucun param trage faire JCMS se charge de la sauvegarde quotidienne de la base Dans le cas d un SGBDR externe la cr ation de la base et les proc dures d exploitation notamment la sauvegarde r guli re sont la charge de l administrateur du SGBDR 1 3 1 Hibernate JCMS utilise le framework de mapping objet relationnel ORM Hibernate pour g rer les donn es dans JcmsDB Gr ce son syst me de dialectes Hibernate offre la fois une grande ind pendance du code vis vis de la base sous jacente et de bonnes performances Hibernate supporte la grande majorit des SGBDR N anmoins en pratique il reste certaines sp cificit s propres chaque SGBDR qu il faut prendre en compte p ex mots cl s r serv s longueurs des noms des tables unicit des index gestion des CLOB Aussi afin de garantir un bon fonctionnement JCMS a t certifi sur certains d entre eux Reportez vous au manuel d installation et d exploitation de votre version de JCMS pour avoir la liste pr cise de SGBDR support Au premier d marrage JCMS utilise Hibernate pour g n rer dans JcmsDB l ensemble des tables et des index n cessaires Cette structure peut voluer selon les cr ations et modifications des types de publications et les ajouts de modules 1 3 2 T
81. mps wiki et wysiwyg de la publication Cette impl mentation par d faut peut etre surcharg e 29 par certaines sous classes 2 9 La classe Content La classe Content regroupe les publications repr sentant un contenu ditorial Il s agit d une classe de typage Elle n ajoute aucun nouveau attribut ni aucune m thode Pour b n ficier au maximum des possibilit s de JCMS droits multilinguisme les contenus sont g n ralement stock s dans JStore 2 10 La classe UserContent La classe UserContent regroupe les publications repr sentant un contenu produit par un utilisateur sans droit particulier Il s agit d une classe de typage Elle n ajoute aucun nouvel attribut ni aucune m thode En standard les contenus utilisateurs ne n cessitent pas de droit de contribution et n ont pas de droits de consultation Du fait de leur volum trie potentielle les contenus utilisateurs sont plut t stock s dans JcmsDB mais ce n est pas une obligation 2 11 La classe Form La classe Form repr sente la soumission d un formulaire Les soumissions pouvant tre anonymes l auteur de l objet soumission n est pas la personne qui a effectu la soumission mais le responsable des soumissions 2 11 1 Les principaux attributs Attribut Description submitMember Le membre qui a soumis le formulaire submitRemoteAddr L adresse IP du soumissionnaire 2 12 La classe PortalElement La classe Port
82. n e 2 2 3 Tag associ s Tag Description lt jalios checkIntegrity gt Affiche un ic ne lorsque les contraintes d int grit ne sont pas respect es sur la donn e fournie lt jalios dataicon gt Affiche l ic ne associ la donn e fournie lt jalios edit gt Affiche une ic ne d dition pour la donn e fournie lt jalios link gt Affiche un lien vers la donn e fournie lt jalios lock gt Affiche une ic ne lorsque la donn e est verrouill e 21 2 2 4 ExtraData et ExtraDBData Les ExtraData et ExtraDBData permettent d ajouter des champs aux types de donn es existants sous forme d une association cl valeur Retenez cette solution pour des enrichissements simples des types natifs de JCMS Member Category Group Les valeurs sont de type String C est donc au d veloppeur de prendre en charge la repr sentation d autres types Les ExtraData sont repr sent es par une Map stock e dans les attributs de l objet Elles ne sont utilisables que sur les types persist s dans JStore Chaque modification de cette Map d clenche une op ration de type Update dans JStore R servez en donc l usage pour les cas ou les donn es peu volumineuses et avec peu de mises a jour Les ExtraDBData sont stock es dans JcmsDB Il s agit d une table associant une valeur une donn e stock e dans JStore ou JcmsDB Les ExtraDBData sont donc destin es enrichir des donn es de
83. ngueur de leur introduction public class MyArticlelntroComparator extends BasicComparator lt Article gt public int compare Article pl Article p2 object nullity check if pl null return p2 null 0 1 44 if p2 null return 1 Retrieve Article introduction String t1 pl getlntro language String t2 p2 getlntro language if tl null return t2 null 0 1 if t2 null return 1 int lengthl tl length int length2 t2 length if lengthl lt length2 return 1 if lengthl gt length2 return 1 return super compare pl p2 Combinaison de comparateurs JCMS propose deux classes pour agir sur les comparateurs La classe ReverseCompartor renverse le sens naturel de comparaison du comparateur recu en argument du constructeur La classe MultiComparator recoit plusieurs comparateurs dans son constructeur En cas d galit sur le premier elle passe sur le second puis au troisi me etc 3 3 3 Filtrage par combinaison d ensembles Dans certains cas il peut tre pratique de combiner des ensembles de r sultats fournis par les m thodes vues pr c demment pour obtenir un ensemble pr cis de donn es Ceci est plut t destin aux donn es stock es dans JStore Pour cela JCMS fournit plusieurs m thodes ensemblistes Ces m thodes sont s res et optimis es e Util unionSet setl set2 retourne l union des ensembles fournis e
84. nn es existants 2 19 L API de gestions de types Les types g n r s sont stock s au format XML JCMS fournit une API pour simplifier l acces ces informations ainsi qu au param trage des types dans les espaces de travail 2 19 1 La classe TypeEntry La classe TypeEntry repr sente un type g n r Elle est obtenue par l appel la m thode channel getTypeEntry Class Les principales m thodes 36 M thode Description getLabel lang Retourne le libell du type dans la langue lang getDescription lang Retourne la description du type dans la langue lang getTemplateEntrySet Retourne l ensemble des gabarits disponible pour ce type isAbstract Retourne true s il s agit d un type abstrait 2 19 2 La classe TypeFieldEntry La classe TypeFieldEntry repr sent un champ d un type g n r Elle est obtenue par l appel la m thode channel getTypeFieldEntry class fieldName checkAll L attribut checkAll d termine si il faut aussi rechercher ce champ dans les champs h rit s Les principales m thodes M thode Description getEditor Retourne le mode d dition du champ getLabel lang Retourne le libell du champ dans la langue lang getName Retourne le nom du champ getType Retourne le type i e la classe du champ isAbstract Retourne true s il s agit du champ servant de r sum isFieldWiki Retourne true s
85. nonnnnnnnonnnnnnnnnnnnnos 15 1 5 Identifiants des donn es JCMS sisi 16 1 5 1 Structure d s identifiants merecieron eanit entente gen nl tete teste 16 1 5 2 R f rences entre Objets ss in eme ee es AA SAIRIA nn rene rien rien NTAN 17 1 5 3 ld ntitiants Vitel EE 17 1 5 4 le onge CS 17 1 6 Les autres syst mes destockage ss 18 1 6 1 Fichi rSd pos s ugeet nina id dd da diet Mere 18 1 6 2 tee ee e e ee 18 1 6 3 Plica nat 18 1 6 4 deg le EE 18 1 6 5 Indexation LUCENE icvotonici aotearoa ties 18 1 6 6 Lille 19 1 7 Encodage des CAICOS miii EE 19 1 8 L s Todes de lang es 1 1 1 5 8 8858 tn ane nent TERETE ETERNE EER e eeth 19 Le modele de donn es de JCMS rise en anne nm ann nn ennemie nn 20 2 1 Diagramme des d sses iii 20 2 2 ES Ed EOM E i E EE PE LUE OR OT TRE 20 2 2 1 Les principaux attri a 20 2 2 2 Les principales m thodes ss 21 2 2 3 TIAS tt 21 2 2 4 ExtraData et ExtraDBData EEEEEEnEE En EEa 22 2 2 5 EXA O cara St EE Err 22 2 3 EA ELA ge EE 22 2 3 1 Les principal att HES a de 23 2 3 2 Les principales M TROdeS e iiiiiaaaianaia ana an ana aaa DAA Da aaa aaa 23 2 4 La classe Member ss 24 2 4 1 EE serre tesereernneeetasen ententes late teen tnn anne EENS NENEEEEE E 24 2 4 2 Les principales m thodes iii nine tete tee tito 25 2 4 3 REIS Ee EE 25 2 5 ERES PL 26 2 6 ta classe Works pa CE iia ne mn eee cree nn Pre eme en de de nent ne dr rene ete
86. ns le cluster Dans l exemple suivant on affiche un message dans la console du leader lorsqu un nouveau compte DBMembre est cr ou supprim public class DBMemberListener extends BasicDBListener Override public void onPostInsert DBData data PostInsertEvent event boolean firstTime if lisLeader return DBMember mbr DBMember data if mbr isAccount return System out println A new DBMember account has been created mbr Override public void onPostDelete DBData data PostDeleteEvent event boolean firstTime if lisLeader return Member mbr Member data if mbr isAccount return System out println DBMember account mbr has been deleted 58 private boolean isLeader return Channel getChannel sMainLeader Lorsqu il est n cessaire d couter la fois des critures sur JStore et sur JcmsDB il est possible d utiliser la classe BasicDBListenerStoreListener qui impl mente par d faut les m thodes des deux interfaces 59 6 Le contr le des droits d acc s JCMS offre en standard une large palette de droits sur l ensemble des fonctionnalit s droits de consultation de contribution de d p t de fichier d administration Dans JCMS les droits sont affect s soit individuellement des membres soit des groupes JCMS permet de faire des groupes de groupes Un membre qui appartient un sous groupe appartient automa
87. ntln pub original title was firstTitle Pour les donn es du store cette m thode peut aussi tre appel e sur une donn e supprim e String deletedPubld c_12345 List lt Publication gt versionList List lt Publication gt channel getVersionList deletedPubld Publication deletedPub Util getLast versionList Date ddate deletedPub getDdate System out println deletedPub has been saved versionList size times System out println deletedPub has been deleted on ddate 49 3 5 Acc s aux donn es supprim s JCMS permet de retrouver l ensemble des donn es du store qui ont t supprim es Ceci est bien entendu conditionn s aux nettoyages du store qui auront pu tre effectu s notamment lorsque la r gle qui supprime les op rations portant sur les donn es supprim es est appliqu e Attention l acc s aux contenus supprim est peut tre tr s long et consommateur en m moire En effet JCMS doit pour cela relire la totalit du store et construire pour chaque donn es supprim es sont historique de valeur L acc s aux donn es supprim es se fait par la m thode getDeletedSet de la classe Channel Set lt Article gt deletedArticleSet Set lt Article gt channel getDeletedSet Article class System out println Util getSize deletedArticleSet articles have been deleted 50 4 L enregistrement des donn es 4 1 Principes On distingue trois types d criture su
88. oir d finir des r les ouverts e TrackedDBData pour permettre le suivi des lecteurs Le nombre total de DBFileDocument qui peuvent tre cr s est contr l par JCMS et ne peut d passer la limite d finie dans le addPack du site par d faut limit 100 DBFileDocument 2 14 1 Les principales m thodes statiques M thode Description getinstance Retourne un nouveau DBFileDocument correspondant au fichier fournie Le DBFileDocument n est pas enregistr e dans le JcmsDB 2 15 Les interfaces de typage JCMS propose plusieurs interfaces de typage qui conf rent aux classes qui les impl mentent un comportement particulier 2 15 1 L interface DBData Toute classe de donn e qui doit persister ses donn es dans JcmsDB doit impl menter l interface DBData Cette interface permet d acc der l attribut rowld 2 15 2 L interface CategorizedDBData Par d faut les classes de donn es d rivant de Publication et persist es dans JcmsDB n ont pas le support des cat gories Pour l activer il faut impl menter l interface CategorizedDBData Lorsque c est le cas deux tables de collections sont cr es pour g rer les cat gories de la publication e catldset cette collection contient les cat gories de la publication e allcatldser cette collection contient les cat gories de la publication ainsi que toutes les cat gories anc tres de ses cat gories Elle permet de rechercher les publications attach es
89. ontributeur dans au moins un espace de travail 2 4 3 Tag associ s Tag Description lt jalios login gt Affiche l interface pour se connecter et se d connecter lt jalios memberphoto gt Affiche la photo du membre 25 2 5 La classe DBMember La classe DBMember d rive de la class Member Elle est utilis e pour g rer des personnes dont les informations sont stock es dans JcmsDB Elle permet ainsi de g rer des volum tries d utilisateurs beaucoup plus importantes que dans le store plusieurs centaines de milliers Du fait de l h ritage les DBMember ont les m mes attributs et m thodes que les Member Cependant ils ont certaines restrictions en plus des limitations sur les DBData e Pas de synchronisation LDAP e Pas la possibilit d tre administrateur central ou administrateur d un espace de travail e Pas de d l gation d authentification e Pas de gestion de droits avec l audiencement ou le module CategoryRight e Pas d affectation aux r les ouverts des Workflows e Performances moins lev es avec les Member dues aux requ tes SQL n cessaires leur traitement e A partir de JCMS 9 les DBMember ne sont plus limit s une quinzaine de groupes 2 6 La classe Workspace La classe Workspace repr sente un espace de travail Un espace de travail est compos d un ou plusieurs groupes de membres C est par l appartenance un de ces groupes que l on d termine si un m
90. op rabilit de plus en plus indispensable Jusqu pr sent il a t possible de r pondre ces besoins avec JCMS en effectuant des d veloppements sp cifiques c t JCMS JSP ou servlets appel s de mani re distante en HTTP ou l inverse JCMS propose Open API une API de Services Web native de mani re e offrir une interface ind pendante du langage avec lequel l API est invoqu e 81 e _industrialiser les d veloppements faire reposer les d veloppements sur un socle solide et maintenu e pouvoir r aliser des composants r utilisables par exemple des modules d int grations entre plusieurs applications JCMS L article suivant d crit Open API https community jalios com howto jcmsopenapi 10 7 Tests Unitaires Afin de vous assurer du bon fonctionnement de vos d veloppements Java il est recommand de d velopper des tests unitaires En r alisant ces tests vous validez que votre code r pond aux sp cifications fonctionnelles et vous limitez l apparition de dysfonctionnements lors de vos futures modifications tests de non r gression L article suivant pr sente l utilisation de l outil de tests unitaires JUnit au sein de JCMS https community jalios com howto junit 82
91. oupe o externalGroup MemberQueryHandler mqh new MemberQueryHandler mqh setText smith mqh setUsage Member USAGE ACCOUNT 46 mqh setGid externalGroup getld Set lt Member gt resultSet mqh getResultSet 3 3 6 DBMemberQueryHandler La classe DBMemberQueryHandler permet de faire une recherche multicrit re portant sur des DBMember Exemple Recherche tous les membres qui s appellent smith qui sont des comptes utilisateurs et qui appartiennent au groupe externalGroup DBMemberQueryHandler mqh new DBMemberQueryHandler dbmqh setText smith dbmqh setUsage Member USAGE ACCOUNT dbmqh setGid externalGroup getld int count dbmqh getCount List lt String gt idResultList dbmqh getIdResultList 3 3 7 AllMemberQueryHandler La classe AllMemberQueryHandler permet de faire une recherche multicrit re portant la fois sur Member et sur des DBMember Exemple Recherche tous les membres qui s appellent smith qui sont des comptes utilisateurs et qui appartiennent au groupe externalGroup AllMemberQueryHandler amqh new AllMemberQueryHandler amqh setText smith amqh setUsage Member USAGE ACCOUNT amqh setGid externalGroup getld List lt String gt idResultList amqh getIdResultList 3 3 8 GroupQueryHandler La classe GroupQueryHandler permet de faire une recherche textuelle portant sur des groupes Exemple Recherche tous les groupes q
92. our la collection de donn es vous pouvez utiliser n importe quelle collection Set ou List Le temps du filtrage tant proportionnel au nombre d l ments de la collection travaillez toujours sur la collection la plus pr cise possible Par exemple utilisez les index JStore disponibles Choix d un DataSelector existant JCMS fournit de nombreux DataSelector pr ts l emploi Us sont g n ralement sous forme d inner classes dans les donn es sur lesquelles ils portent Dans certains cas une m thode statique est propos e pour obtenir le DataSelector p ex Publication getReadRightSelector Quelques exemples e Category NodeSelector e Category LeafSelector e Data AuthorSelector e Data DateSelector e Group WorkspaceSelector e Group ParentSelector e Member AccountSelector e Member ContactSelector e Member DisabledSelector e Member EnabledSelector e Publication CanWorkOnsSelector e Publication WorkspaceSelector e Publication PdateSelector e Publication PstatusSelector e Publication ReadRightSelector 42 e Publication TrackedSelector e Publication VisibleStateSelector e Workspace CollaborativeSpaceSelector e Workspace OpenWorkspaceSelector e Workspace MembersSizeSelector Ecriture d un DataSelector Pour faire des filtrages sur d autres crit res que ceux propos s en standard ou pour des crit res plus complexes il est n cessaire d crire son propre DataSelector Pour cela il suf
93. plicas il faut utiliser un StoreListener ou un DBListener La d claration d un nouveau DataController se fait via un fichier plugin xml L attribut types indique sur quels types de donn es le DataController doit tre appel lt plugincomponents gt lt datacontroller class com example MyDataController types Member Article PortletSearch gt lt plugincomponents gt 5 1 1 Validation et contr le d int grit L API de JCMS permet de d velopper de nouveaux DataController pour tous les types de donn es JCMS Il est ainsi possible d ajouter de nouvelles r gles d int grit sur une donn e Par exemple sur un contenu Meeting comportant un champ startDate et un champ endDate v rifier que la startDate est bien ant rieure la endDate Autre exemple sur un membre v rifier que le mot de passe comporte au moins 8 caract res dont un chiffre Le contr le d int grit est r alis en d rivant de la classe BasicDataController et en surchargeant la m thode checkIntegrity public class MeetingDataController extends BasicDataController Override public ControllerStatus checkIntegrity Data data Meeting meeting Meeting data long startTime meeting getStartDate getTime long endTime meeting getEndDate getTime if startTime lt endTime ControllerStatus status new ControllerStatus status setMessage Start date must be before end date return status return Controlle
94. r L AlarmEntry doit contenir un AlarmListener qui sera invoqu lorsque la date de l alarme sera atteinte 9 1 1 La classe AlarmEntry La construction d une AlarmEntry peut se faire via plusieurs constructeurs 76 e public AlarmEntry Date date AlarmListener listener Construit une alarme pour une date donn e e public AlarmEntry int delay boolean isRepetitive AlarmListener listener Construit une alarme ventuellement r p titive pour une dur e donn e e public AlarmEntry int minute int hour int dayOfMonth int month int dayOfWeek int year AlarmListener listener Construit une alarme pour une planification pr cise et ventuellement r p titive e public AlarmEntry String schedule AlarmListener listener Construit une alarme pour une planification exprim e selon le format simplifi de la commande cron minute heure jour du mois mois jour de la semaine ann e Les ast risques sp cifient que l alarme doit tre d clench e de facon r p titive sur cette p riode Les jours de la semaine commencent par le dimanche et leurs valeurs vont de 1 7 Exemples 30 10 tous les jours 10h30 30 10 1 tous les ler du mois 10h30 30 10 2 tous les lundi 10h30 9 1 2 L interface AlarmListener Un AlarmListener doit impl menter la m thode handleAlarm qui est invoqu e lorsque l alarme se d clenche Elle re oit en param tre l AlarmEntry correspondant Exemple public class My
95. r plication ou dans JcmsDB La structure des identifiants des donn es stock es dans JStore est la suivante urid _ logicalTime Avec e uria Unique Replica Identifier une chaine de caract re alphanum rique commen ant par une lettre repr sentant le r plica JSync sur lequel la donn e a t cr e Au del de l utilisation JSync ce syst me est aussi utilis pour distinguer les diff rentes instances de la webapp sur lesquelles peuvent tre produites des donn es stock es dans JStore environnement de d veloppement de recette de pr production e logicalTime Un compteur qui s incr mente chaque insertion de nouvelle donn e et lors des synchronisations JSync Exemples 3 1 0d 12345 prod 123456 nodel 1234567 La structure des identifiants des donn es stock es dans JcmsDB est la suivante rowId _ classShortName Avec 16 e _rowla le num ro d enregistrement de la donn e dans la table de la base de donn es La gestion de num ro est prise en charge par le SGBDR Toute table de donn es JCMS poss de cette colonne e classShortName le nom court de la classe de la donn e Exemples 1 DBFileDocument 123 DBMember En testant le premier caract re de l identifiant JCMS peut imm diatement d terminer s il s agit d une donn e stock e dans JStore caract re alphab tique ou d une donn e stock e dans JcmsDB chiffre Gr ce cette structure d identifiant JC
96. r les donn es e Cr ation create ajout d une nouvelle donn e e Mise a jour update modification d une donn e existante e Suppression delete suppression d une donn e existante L API de JCMS est la m me pour l enregistrement des donn es de JStore et celles de JcmsDB N anmoins des diff rences existent notamment pour les mises jour et pour les notifications Avant de faire une criture il est de la responsabilit du d veloppeur de v rifier si l criture est possible Une criture peut tre rejet e pour diff rentes raisons le membre qui d clenche l criture n a pas les droits la donn e est incompl te les critures sont arr t es La classe Data dispose des m thodes checkCreate checkUpdate et checkDelete pour v rifier chaque type d criture La m thode re oit en param tre le membre qui effectue l criture Le r sultat de l appel est un objet de la classe ControllerStatus L invocation de la m thode isOK retourne true si l criture est possible sinon le ControllerStatus fournit des informations sur les raisons du rejet 4 2 Cr er une donn e Une fois la v rification effectu e la cr ation d une nouvelle donn e se fait en appelant la m thode performCreate sur l objet La m thode performCreate re oit en param tre le membre qui effectue l op ration Ce param tre n est pas l auteur de la donn e mais l auteur de l criture Une criture peut tre effe
97. rStatus OK 54 Le contr le d int grit est appel durant la phase de contr le de l criture lors de l appel des m thode checkCreate checkUpdate mais aussi dans de nombreux points de l interface de JCMS p ex dans la liste des contenus Il est donc imp ratif que le contr le d int grit soit performant Si ce n est pas possible il faut d porter le traitement dans le contr le de l criture Par ailleurs un DataController ne peut qu ajouter de nouvelles contraintes d int grit il ne peut pas en supprimer 5 1 2 Contr le de l ex cution des critures Les DataController permettent aussi d agir en amont et en aval d une criture Ils interviennent dans la phase de contr le d une criture en plus du contr le d int grit Le contr le d int grit rejette une criture pour des raisons propres a la donn e Le contr le d une criture la rejette pour des raisons externes la donn e Par exemple le membre qui effectue l criture l tat de JCMS au moment de l criture la date de l criture Comme le contr le de l criture n a lieu que lorsqu une criture est d clench e il est moins critique sur les performances que le contr le d int grit Le contr le de l criture est r alis en d rivant de la classe BasicDataController et en surchargeant la m thode checkWrite public class PasswordController extends BasicDataController Override public ControllerStatus checkWrite Data d
98. ransaction JcmsDB fonctionne en mode transactionnel Tous les acc s aux donn es de JcmsDB aussi bien en lecture qu en criture doivent tre encapsul s dans une transaction Pour tous les acc s Web JCMS prend en charge l ouverture et la fermeture de la transaction chaque requ te via la ServletFilter HibernateSessionFilter Pour les acc s lors du d clenchement d une alarme JCMS fournit la classe TransactionalAlarmListener qui encapsule l appel au code qui prend en charge l alarme Pour tous les autres cas d usage le d veloppeur doit g rer lui m me la transaction C est notamment le cas dans les tests unitaires ou lors de l acc s JcmsDB depuis un thread sp cifique p ex dans un cas de producteur consommateur 1 3 3 JcmsDB et JSync Le protocole de r plication JSync n op re que sur les donn es g r es dans JStore Il ne traite donc pas les donn es stock es dans JcmsDB 14 Lorsqu une criture a lieu dans JcmsDB des traitements cons cutifs cette criture sont d clench s p ex indexation de la donn e invalidation de cache Ces traitements sont pris en charge par des classes Java impl mentant l interface DBListener Dans le cas d un cluster il est n cessaire de re d clencher l appel ces DBListener sur chaque r plica Pour cela JCMS dispose d un syst me de type producteur consommateur capable de diffuser les v nements de base de donn es Lorsqu un DBListener est d clench
99. rne les 3 premi res recommandations portant sur la publication j_300 et dont j 2 est l auteur tri es par date de modification d croissante List lt Recommendation gt list HibernateUtil query Recommendation class new String datald authorld new String j 300 3 2 mdate desc 0 3 false Les m thodes queryCount offrent les m mes possibilit s de filtrage mais retournent simplement le nombre de r sultats Elles sont donc beaucoup plus performantes Exemple Retourne le nombre de recommandations du membre j_2 int count HibernateUtil queryCount Recommendation class authorld J 2 Retourne le nombre de recommandation portant sur la publication j 300 et dont le membre j 2 est l auteur int count HibernateUtil queryCount Recommendation class new String datald authorld new String j 300 3 2 PublicationCriteria Pour les requ tes portant sur les publications il est possible de d finir un ensemble de crit res avec la classe PublicationCriteria Les crit res peuvent tre d clar s unitairement avec les setters existants ou via un QueryHandler Exemple QueryHandler qh new QueryHandler qh setWorkspace workspace ah setMids author getld ah setSort titre qh setReverse true ah setCids category getld PublicationCriteria pubCriteria new PublicationCriteria DBFileDocument class qh int pubCount HibernateUtil queryCount
100. rne true si le membre a d ja vot choisi une transition dans le cas d un workflow a approbation multiple isInRole roleld mbr Retourne true si le membre indiqu peut utiliser le r le indiqu isInVisibleState Retourne true si la publication est dans un tat visible du workflow isRoleAssigned Retourne true si le r le indiqu est affect unassignMember mbr Retire le membre de tous les r les associ s cette publication unassignRole roleld Retire tous les membres du r le indiqu 7 9 Sp cialisation des alertes A partir de JCMS 9 SP1 les alertes de workflows peuvent avoir des messages personnalis s La personnalisation passe par la cr ation de propri t s de langues au format indiqu ci apr s L alerte est alors envoy e en testant s quentiellement les diff rentes propri t s pour voir si elles sont d finies Chaque propri t peut tre utilis e avec les param tres par d faut des messages de workflow comme ws state reminder ou formName 70 Le format des propri t s attendues est wf alert lt Workspaceld gt lt Type gt lt WorkflowId gt lt workflow state gt lt transition type gt lt actor gt lt reminder gt lt propertyName gt Les valeurs possibles pour les champs sont e Workspaceld un identifiant de workspace ou ANY e Type le type de publication ou ANY e Workflowld l id du workflow e Workflow state l tat nu
101. s des fonctionnalit s d administration d espace de travail elles ne peuvent tre rattach es qu des groupes d espace de travail par un administrateur central ou un administrateur d espace de travail 6 3 2 D claration des ACL Le syst me des ACL est extensible Il est possible d ajouter de nouvelles ressources dont l acc s sera contr l par les ACL La d finition des ressources qui peuvent tre utilis es dans une ACL s effectue Via les propri t s de JCMS Chaque ressource est repr sent e sous la forme d un chemin similaire une URI ou un chemin de fichier Unix Lorsque la ressource concerne une fonctionnalit d administration centrale elle est pr fix e par admin lorsqu il s agit d une fonctionnalit d administration d espace de travail elle est pr fix e par admin ws La d claration d une ressource se fait via une propri t de configuration vide et les propri t s de traduction correspondantes Toutes ces propri t s respectant la m me nomenclature acl resource chemin de la ressource Par exemple la fonctionnalit permettant la consultation du Journal des v nements de JCMS est d clar e comme ceci e Dans jcms prop e acl resource admin e acl resource admin monitoring acl resource admin monitoring logs e Dans fr prop e acl resource admin Espace d administration 63 e acl resource admin monitoring Supervision e acl resource admin monitoring logs Journal des v nem
102. s StoreListener pour JcmsDB Ils coutent les critures qui ont lieu sur les donn es stock es en base Dans un cluster JSync les DBListener sont d clench s sur les diff rents r plicas mais avec un retard par rapport au r plica par lequel a eu lieu l criture Contrairement aux DataController et l instar des StoreListener les DBListener permettent de rejouer un traitement cons cutif une criture sur l ensemble du cluster Les DBListener sont donc bien adapt s pour g rer des index sur les donn es de JcmsDB ou pour d clencher une op ration sur un r plica particulier p ex le leader Attention cependant ne pas garder de r f rence sur la donn e mais uniquement sur son identifiant afin de ne pas emp cher le GC de lib rer les donn es de JcmsDB charg e en m moire temporairement La d claration d un nouveau DBListener se fait via un fichier plugin xml L attribut types indique pour quels types de donn es le DBListener doit tre appel lt plugincomponents gt lt dblistener class com example MyDBListener types DBFileDocument gt lt plugincomponents gt Pour impl menter un DBListener il faut d river de la classe BasicDBListener et surcharger les m thodes onPostInsert onPreUpdate onPostUpdate et onPostDelete Ces m thodes recoivent la donn e l argument event contenant les informations sur l criture et l argument firstTime qui indique si l criture est jou e pour la premiere fois da
103. s avec des champs textes occupent en moyenne 10 Ko en m moire 100 000 objets de cette sorte occupent environ 1 Go de m moire 1 2 4 Temps de chargement Le temps de chargement d pend du nombre d op rations pr sentes dans le journal store xml Ce sont essentiellement les op rations de cr ation qui sont co teuses Le temps de chargement est proportionnel au nombre et la taille des objets Par exemple un journal de 100 000 objets repr sentant chacun une page A4 de texte brut 3 Ko sur disque se charge en 21 secondes sur un PC Portable Dell Latitude E6520 avec un processeur i7 2720QM 2 2 GHz avec 16 Go de RAM dont 2 Go allou la JVM et un disque Samsung SSD 840 Pro 1 2 5 Nettoyage et compactage du store Chaque criture entrainant un ajout dans le fichier store xml celui ci grossit proportionnellement au taux d criture Un store volumineux diminue les performances du temps de chargement au d marrage de JCMS de l acc s aux versions et de certaines synchronisations JSync Le nettoyage ou compactage du store consiste diminuer le poids du fichier store xml en regroupant ou en supprimant certaines op rations Le compactage est recommand principalement dans deux cas Les temps de chargement du store ou d acc s aux versions sont prohibitifs Lorsqu un store de d veloppement doit tre fusionn avec un store de production il est recommand de compacter le suffixe de d veloppement Ceci permet d liminer des
104. sateur la classe Member sert essentiellement g rer des utilisateurs authentifi s On parle alors de compte utilisateur Lorsque le compte est actif il est possible de l utiliser pour s authentifier sur le site Un membre actif peut tre synchronis avec un utilisateur LDAP L association est bas e sur le login du membre Pour plus de d tails consultez l article Configuration et fonctionnement du LDAP dans JCMS http community jalios com ldap e Compte utilisateur d sactiv compte utilisateur avec lequel il n est plus possible de s authentifier sur le site e Contact la classe Member sert aussi repr senter une personne externe qui n a pas d existence active sur le site On parle alors de contact Un contact n a pas d identifiant de compte login ni de mot de passe Il ne peut pas s authentifier sur le site Cette notion de contact est essentiellement utilis e par le module ESN e Invit s le module Espace Collaboratif ajoute un nouveau type de compte utilisateur les invit s Les invit s sont des membres part enti re mais ils ne peuvent naviguer que dans les espaces collaboratifs auxquels ils appartiennent Pour plus de d tails consult la page de ce module http community jalios com plugin collaborativespace 2 4 1 Les principaux attributs Attribut Description name Le nom de famille firstName Le pr nom login
105. si le membre mbr peut travailler dans l tat state pour la publication pub canWorkinState pub mbr state 7 3 La classe WFState La classe WFState repr sente un tat d un Workflow Un tat est identifi par son pstatus Il s agit d une valeur num rique avec les propri t s suivantes e Le pstatus O identifie l tat Publi Cet tat est visible e Les pstatus pairs repr sentent les tats invisibles e Les pstatus impairs repr sentent les tats visibles Lorsqu une publication est dans un tat invisible elle est visible en back office mais elle n est plus visible en front office Il est possible de d finir une r gle de relance sur un tat Dans ce cas lors la dur e de la relance est atteinte les membres pouvant agir sur les publications dans cet tat sont relanc Il est aussi possible de d finir une r gle de transition automatique au bout d un certain temps C est la fonction appel Workflow Express Des actions peuvent tre associ es lorsqu une publication rentre ou sort d un tat Par ces actions il est possible d envoyer une alerte e A auteur de la publication e Au membre pouvant agir sur la publication e _Al administrateur de l espace de travail dans lequel est la publication Les principales m thodes M thode Description getPsatus Retourne la valeur associ e cet tat getReminder Retourne la dur e de relance 0 pas de relance
106. sur un r plica celui ci le s rialise et l enregistre dans la table DBEventLog Tous les r plicas surveillent cette table Lorsqu un nouvel v nement arrive il d clenche l appel aux DBListener 1 3 4 Limites de donn es stock es dans JcmsDB Les donn es stock es dans JcmsDB ont certaines limites par rapport aux donn es stock es dans JStore e Pas d acc s aux donn es supprim es e Pas d extralnfo e Acc s l historique de donn es uniquement pour les classes impl mentant HistorizedDBData Certaines limites sont sp cifiques aux classes d rivant de la classe Publication e Pas de copie de travail e Pas de champ multilingue e Pas de droits de modification e Pas de gestion des liens inverses e Pas d import incr mental e Pas de choix du gabarit d affichage e Les champs textes textarea sont par d faut limit s 64 Ko e Pas d URLintuitive e Pas de QueryFilter Certaines Portlet ont des limites sur le traitement des donn es de JcmsDB e Portlet Requ te It ration et portlets d riv es o Certains affinements ne sont pas possible si la requ te porte sur JcmsDB o Pas de Premi res publication o Pas de possibilit de sauter les n premi res publications Enfin certains modules de JCMS ajoutent des fonctionnalit s qui ne sont pas op rationnelles sur les donn es stock es dans JcmsDB C est notamment le cas du module Category Right V rifiez la compatibilit dans la documentation du modul
107. t renseign s par des setters sur l objet QueryHandler Le QueryHandler permet aussi de pr ciser les informations de tri et de pagination La liste des r sultats est obtenue en appelant la m thode getResultSet Celle ci retourne les r sultats dans un objet QueryResultSet La classe QueryResultSet repr sente un ensemble de r sultats d une requ te sur Publication Elle contient non seulement les publications trouv es mais aussi leur pertinence dans le cadre d une recherche textuelle des informations sur la pagination des r sultats Exemple rechercher les articles ou les br ves comportant le texte foo cr s depuis 1 mois dans l espace de travail donn Workspace ws channel getWorkspace wsId QueryHandler qh new QueryHandler qh setMember mbr qh setText foo ah setTypes new String Article SmallNews qh setBeginDate new Date System currentTimeMillis MILLIS IN ONE MONTH qh setDateType cdate qh setSort cdate ah setStart 0 ah setPageSize 10 ah setSearchInDB false qh setWorkspace ws QueryResultSet qrs qh getResultSet SortedSet lt Publication gt sortedResultSet qrs getAsSortedSet 3 3 5 MemberQueryHandler La classe MemberQueryHandler permet de faire une recherche multicritere portant sur des Member pas des DBMember Exemple Recherche tous les membres qui s appellent smith qui sont des comptes utilisateurs et qui appartiennent au gr
108. tiquement tous les groupes parents de ce groupe et aux parents des parents Ainsi en affectant un droit un groupe c est non seulement les membres de ce groupe qui en b n ficient mais aussi tous les membres des sous groupes de ce groupe Pour certains besoins il peut tre n cessaire de sp cialiser la gestion de droit La sp cialisation peut se faire soit en compl ment soit en remplacement de l impl mentation standard Ce principe est tr s puissant puisqu il permet de faire des droits dynamiques voire contextuels la requ te En contrepartie ceci impose de toujours faire les contr les de droits au moment o les donn es sont acc d es 6 1 Droits de consultation 6 1 1 Publication Ce droit contr le qui peut consulter un contenu ou visualiser une portlet Ce droit est d fini contenu par contenu en indiquant les groupes et les membres autoris s Si aucun droit n est d fini la publication est visible de tous Il est possible d affecter des droits de consultation par d faut par type de publication ou par espace de travail Le droit de consultation est conditionn e l tat du workflow dans lequel se trouve la publication une publication hors de l tat publi n est visible que dans le back office de son espace de travail e au r dacteur quelques soient les droits de consultation un membre a toujours acc s aux contenus dont il est le r dacteur La m thode canBeReadBy de la classe Publication et la m t
109. tive des codes de langue support s par JCMS se trouve dans jcms prop il s agit des propri t s pr fix es par lang Attention la casse Les valeurs des codes de langues sont sensibles la casse et cela doit tre respect pr cis ment 19 2 Le mod le de donn es de JCMS 2 1 Diagramme des classes Le diagramme ci dessous repr sente les principales classes de donn es de JCMS et leur relation d h ritage Ce diagramme n est pas exhaustif II s enrichit selon les types de publication que vous avez cr s selon les modules que vous avez install s et selon vos propres d veloppements EN SE classe stock e dans JcmsDB 2 2 La classe Data La classe Data est la classe m re de toutes les donn es de JCMS En tant que super classe elle fournit les attributs communs toutes les donn es JCMS mais aussi les m thodes Chaque sous classe compl te ces attributs et ces m thodes selon leur r le La classe Data comportent de nombreuses m thodes abstraites qui sont surcharg es par ses sous classes 2 2 1 Les principaux attributs Attribut Description 20 id Identifiant unique de cette donn e cdate Date de cr ation mdate Date de modification author Membre auteur de cette donn e rowld Num ro d enregistrement pour les donn es de JcmsDB 2 2 2 Les principales m thodes M thodes de repr sentation de la donn e M thode Description toFullString
110. ugmentation du quota L ensemble de l API de contr le des quotas est pris en charge par la classe QuotaManager 8 7 Contr le des d p ts L API de JCMS permet d intervenir avant et apr s le d p t d un fichier Ce contr le se fait en crivant une classe qui d rive de BasicRightPolicyFilter et surcharge les m thodes suivantes public boolean checkBeforeUpload String fieldName String contentType String fileName public boolean checkAfterUpload DocUploadInfo info 74 La m thode checkBeforeUpload est invoqu e au d but du transfert et permet de l interrompre celui en se basant sur le nom du fichier fileName ou le type de fichier contentType La m thode checkAfterUpload est invoqu e une fois que le fichier a t d pos L attribut info permet d obtenir des informations sur le fichier Si cette m thode renvoie true le fichier est d plac de la zone temporaire de d p t son emplacement d finitif Sinon le fichier est supprim et l utilisateur est pr venu du rejet Pour plus de d tails consultez l article Personnalisation de la gestion des droits http community jalios com howto rightpolicy 75 9 La gestion des t ches planifi es JCMS utilise en interne des t ches planifi es pour d clencher des actions une date donn e Par exemple lorsqu un contenu re oit une date de publication et passe dans l tat planifi une alarme est enclench e pour g rer son passage l tat publi
111. ui contiennent le texte admin GroupQueryHandler gqh new GroupQueryHandler gqh setGroupText admin Set lt Group gt resultSet gqh getResultSet 3 3 9 WorkspaceQueryHandler La classe WorkspaceQueryHandler permet de faire une recherche textuelle portant sur des espaces de travail Exemple Recherche tous les espaces qui contiennent le texte communaut WorkspaceQueryHandler wqh new WorkspaceQueryHandler wqh setText communaut Set lt Group gt resultSet wqh getResultSet 3 3 10 Acc s par une requ te Hibernate HibernateUtil La classe HibernateUtil fournit un ensemble de m thodes statiques pour faire des requ tes portant sp cifiquement sur les donn es stock es dans JcmsDB 47 Les m thodes query effectue une recherche sur la classe indiqu e en premier param tre en appliquant les crit res de filtrage et tri fournis dans les arguments suivants Lorsque le nombre maximum de r sultats n est pas renseign seuls les 1000 premiers r sultats sont retourn s Les requ tes polymorphiques sont autoris es Exemple Retourne toutes les donn es de JcmsDB dont j 2 est l auteur List lt Data gt list HibernateUtil query Data class authorld j 2 Retourne toutes les recommandations dont j 2 est l auteur tri par date de cr ation croissante List lt Recommendation gt list HibernateUtil query Recommendation class authorld j 2 cdate ase Retou
112. uivantes e Workflow e WFState e WFAction e WFTransation e WFRole e WKRole 7 1 La classe WorkflowManager La classe WorkflowManager fournit des m thodes pour acc der aux workflows Les principales m thodes M thode Description getDefaultWorkflow Retourne le workflow par d faut avec uniquement les 4 tats par d faut getWorkflow wfld Retourne le workflow d identifiant wfld getWorkflowSet Retourne l ensemble des workflows 7 2 La classe Workflow La classe Workflow repr sente un Workflow Elle permet d acc der ses attributs ses tats ses transitions et ses r les 7 2 1 Les principaux attributs Attribut Description Id Identifiant du Workflow labelMap Map des libell s localis s Type Type de workflow initState Etat initial 7 2 2 Les principales m thodes M thode Description getLabel userLang Retourne le libell du workflow dans la langue indiqu e getStateSet Retourne l ensemble des tats du workflow getTransitionSet Retourne l ensemble des transitions du workflow getRoleSet Retourne l ensemble des r les du workflow canChangeState mbr Retourne true si le membre mbr peut passer la publication pub de l tat pub source target source a l tat target getNextStateSet pub Retourne tous les tats atteignables par le membre mbr pour la mbr publication pub 67 Retourne true
113. une demande d affichage d un portail A partir de cette cat gorie JCMS d termine le portail pr senter Les cat gories sont compos es hi rarchiquement Cette hi rarchie est utilis e dans les recherches on peut rechercher les publications attach es la cat gorie ou l une de ses descendantes Plusieurs droits op rent sur les cat gories e Droits d utilisation seuls les membres autoris s peuvent classer des publications dans cette cat gorie et sa descendance e Droits de consultation seuls les membres autoris s peuvent voir cette cat gorie et sa descendance e Droits de gestion seuls les membres autoris s peuvent voir g rer cette cat gorie et sa descendance ajouter modifier d placer et supprimer des cat gories 2 7 1 Les principaux attributs Attribut Description name Le nom de la cat gorie 27 description La description de la cat gorie parent La cat gorie parent laquelle est rattach e la cat gorie icon L ic ne de la cat gorie image L image de la cat gorie order Le num ro d ordre de la cat gorie par rapport ses cat gories s urs synonyms Les synonymes de la cat gorie isExclusive Indique que cette branche de cat gorie contient des cat gories qui doivent tre s lectionn es de fa on exclusive pour une publication isSelectable Indique que des publications peuvent tre rattach es directement cette cat gorie
114. ur les informations JCMS peut aussi cr er des groupes et associ s les membres ces groupes en fonction des rattachements du compte dans l annuaire LDAP JCMS ne fait donc que des lectures de l annuaire LDAP Ces lectures sont faites en d but de session utilisateur et lorsqu un administrateur lance une demande de synchronisation LDAP 1 7 Encodage des caract res JCMS utilise l encodage UTF 8 pour toutes les donn es consomm es ou produites Toutes les donn es g r es par JCMS store base de donn es types de publication workflow fichiers de propri t s sont enregistr es en UTF 8 Tous les affichages produits par JCMS page web mail envoy sont encod s en UTF 8 sauf exception ci dessous La base de donn es utilis e par JCMS doit tre configur e pour utiliser UTF 8 Exception e Export CSV l encodage de l export CSV est par d faut en ISO 8859 1 pour tre compatible avec Microsoft Excel Cet encodage peut tre modifi via la propri t csv charset 1 8 Les codes de langues L code de langue utilis dans JCMS est au format ISO 639 custom Jalios BCP 47 c est dire que c est ISO 639 dans tous les cas mais pour certaines langues une sous pr cision de la norme BCP 47 permet d y inclure le script Exemples e Anglais en ISO 639 e Espagnol es ISO 639 e Portugais pt ISO 639 e Chinois simplifi zh ISO 639 e Chinois traditionnel zh Hant BCP 47 La liste exhaus
115. urce demand e via une ACL d un groupe auquel il appartient ou via des droits d administration habituels administrateur d espace o administrateur central 6 4 Autres droits JCMS dispose de nombreux autres droits sur diverses fonctionnalit s droits d archiver droit de fusionner une copie de travail droit de d poser une photo droit d utiliser une branche de cat gorie Consultez la JavaDoc de la classe Member pour avoir plus d information sur ces diff rentes m thodes 6 5 Sp cialisation des droits La sp cialisation des droits permet d enrichir le comportement natif de JCMS La sp cialisation peut se faire soit en compl ment soit en remplacement de l impl mentation standard Il est possible d adapter ou de modifier une partie du syst me de droits de JCMS en ajoutant un module comportant des composants RightPolicyFilter Chacune des m thodes de cette interface permet de surcharger le comportement d une famille de droit de JCMS 64 L ajout d un RightPolicyFilter se fait dans le fichier plugin xml du module via la balise lt policyfilter gt Exemple de d claration lt plugincomponents gt lt policyfilter class org demo jcmsplugin demo MyRightPolicyFilter gt lt plugincomponents gt Pour plus de d tails consultez l article Personnalisation de la gestion des droits http community jalios com howto rightpolicy 65 7 La gestion des Workflows Toute publication JCMS est soumise un workflow
Download Pdf Manuals
Related Search
Related Contents
Newfoundland and Labrador Pharmacy Network コンテナコンポ Relinking Expertise USER MANUAL BENDIX 02-W-1 User's Manual NP-HD10 DD 120 - Hilti scelta, uso e manutenzione dei sistemi collettivi di protezione Copyright © All rights reserved.
Failed to retrieve file