...
- La première consiste à modifier le fichier « layoutContext.xml » (situé dans « UPORTAL_ROOT/uportal-war/src/main/resources/properties/contexts ») comme suit :
commenter le bean lié à la classe « RDBMConfigurationLoader » :
Bloc de code language html/xml <!-- Mise en commentaire du bean lié à la gestion des fragments en base <bean id="dlmConfigurationLoader" class="org.jasig.portal.layout.dlm.RDBMConfigurationLoader"> <property name="fragmentDao" ref="fragmentDefinitionDao" /> </bean> -->
Il faut alors décommenter dans ce même fichier le bean lié à la classe « LegacyConfigurationLoader » permettant de gérer les définitions de fragments via le fichier « dlm.xml » :
Bloc de code language html/xml linenumbers true <bean id="dlmConfigurationLoader" class="org.jasig.portal.layout.dlm.LegacyConfigurationLoader"> <property name="configurationFile" value="classpath:/properties/dlm.xml" /> </bean>
- Désormais le portail utilisera la gestion des « fragment-definition » via le fichier « dlm.xml » qu’il est nécessaire de récupérer depuis la version 3.2.
Afin d’utiliser dans la version 4.x du portail les « fragment-definition » définis dans la version 3.2, il est alors nécessaire de copier le fichier « dlm.xml » situé dans le répertoire « UPORTAL_ROOT/uportal-impl/src/main/resources/properties » du portail 3.2 vers le répertoire « UPORTAL_ROOT/uportal-war/src/main/resources/properties » du portail 4.x.
...
Bloc de code | ||
---|---|---|
| ||
ant clean deploy-war -Dmaven.test.skip=true |
Import des « fragment-definition » via base de données
La deuxième méthode d’import des « fragment-definition » permet quant à elle de conserver la gestion des fragments en base de données telle qu’elle a été mise en place à partir de la version 4.0.4 d’uPortal.
Il est nécessaire pour cela d’importer chaque « fragment-definition » associé en base afin que l’ensemble de celles-ci soient disponibles depuis l’application en version 4.x. En voici la procédure à suivre :
- Edition du fichier « dlm.xml » de la version 3.2 situé dans le répertoire « UPORTAL_ROOT/uportal-impl/src/main/resources/properties ».
- Copie de chaque bloc (élément) <dlm:fragment> dans un nouveau fichier ayant pour extension « .fragment-definition.xml » et ayant pour nom le nom correspondant au fragment défini.
- Ajout d’un bloc englobant <fragment-definition></fragment-definition> autour de l’élément XML : <dlm:fragment>.
- Sauvegarde du nouveau fichier obtenu : « xxx.fragment-definition.xml ».
Import de ces nouveaux fichiers « .fragment-definition.xml » via la commande Ant :
Bloc de code language bash ant data-import -Ddir="path/to/fragment-def.dir"
, avec « path/to/fragment-def.dir » correspondant au répertoire contenant l’ensemble des nouveaux fichiers « .fragment-definition.xml »
Afin d’automatiser ces différentes tâches un script Shell Unix : « Migration-fragment-definition.sh » a été développé. Celui-ci utilise AWK afin de « découper » chaque fragment contenu dans le fichier dlm.xml vers un nouveau fichier ayant pour convention de nommage : « fragmentDLMXXX.fragment-definition.xml » où XXX correspondant au numéro du fragment traité.
Pour lancer ce script, il suffit alors de jouer la commande suivante dans la console :
Bloc de code | ||
---|---|---|
| ||
Migration-fragment-definition.sh « ./PATH/TO/3.2/DLM/FILE/dlm.xml » |
, avec « ./PATH/TO/3.2/DLM/FILE/dlm.xml » correspondant au chemin versle fichier dlm.xml de la version 3.2.
Autant de fichiers « .fragment-definition.xml » que de fragments définis dans le fichier « dlm.xml » seront alors créés dans le répertoire où est situé le script. Il ne suffit donc plus qu’à importer chacun de ces fichiers via la commande d’import Ant suivante :
Bloc de code | ||
---|---|---|
| ||
ant data-import -Dfile="path/to/fragmentDLMXXX.fragment-definition.xml" |
Voici un exemple décrivant les tâches effectuée par ce script pour le premier fragment défini dans le fichier « dlm.xml » de la version 3.2 :
La première étape consiste en la lecture du fichier « dlm.xml » :
Bloc de code language html/xml linenumbers true <?xml version="1.0"?> <managedLayoutFragments xmlns:dlm="http://org.jasig.portal.layout.dlm.config"> <dlm:property name='defaultLayoutOwner' value='fragmentTemplate'/> <!-- Controls clearing of dlm fragment cache. This allows changes made to layout owners to be reflected once the cache has been updated. Specified in minutes. --> <dlm:property name='org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore.fragment_cache_refresh' value="5"/> <dlm:fragment name='Admin' ownerID='admin-lo' precedence='3'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.PersonEvaluatorFactory'> <paren mode="AND"> <attribute name="username" mode='equals' value='admin'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='Guests' ownerID='guest-lo' precedence='3'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GuestUserEvaluatorFactory'/> </dlm:fragment> <dlm:fragment name='All' ownerID='all-lo' precedence='2'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='memberOf' name='Tout le monde'/> <paren mode="NOT"> <attribute mode='memberOf' name='Proprietaires de fragment'/> </paren> <paren mode="NOT"> <attribute mode='memberOf' name='Administrateurs Portail'/> </paren> <paren mode="NOT"> <attribute mode='memberOf' name='Anonymes'/> </paren> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='AdministrateurCentral' ownerID='administrateurCentral-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Administrateurs Centraux'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='AgentTechnique' ownerID='agentTechnique-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Agents techniques'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='AssistantEducation' ownerID='assistantEducation-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Assistants education'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='ChefTravaux' ownerID='chefTravaux-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Chefs de travaux'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='ConseillerEducation' ownerID='conseillerEducation-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Conseillers education'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='ConseillerOrientation' ownerID='conseillerOrientation-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Conseillers orientation'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='Directeur' ownerID='directeur-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Directeurs'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='Documentaliste' ownerID='documentaliste-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Documentalistes'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='Eleve' ownerID='eleve-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Eleves'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='Enseignant' ownerID='enseignant-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Enseignants'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='Inspecteur' ownerID='inspecteur-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Inspecteurs'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='PersonnelAdministratif' ownerID='personnelAdministratif-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Personnels administratif'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='PersonnelEtablissementAutre' ownerID='personnelEtablissementAutre-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Personnels etablissement autre'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='PersonnelLaboratoire' ownerID='personnelLaboratoire-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Personnels laboratoire'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='PersonnelMedical' ownerID='personnelMedical-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Personnels medicaux'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='PersonnelServAcademique' ownerID='personnelServAcad-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Personnels service academique'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='PersonnelTOS' ownerID='personnelTOS-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Personnels TOS'/> </paren> </dlm:audience> </dlm:fragment> <dlm:fragment name='PersonnelRelation' ownerID='personneRelation-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Parents'/> </paren> </dlm:audience> </dlm:fragment> <!-- definition du fragment pour le personnel de collectivité territoriale --> <dlm:fragment name='PersonnelCollectivite' ownerID='personnelCollectivite-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> <paren mode="AND"> <attribute mode='deepMemberOf' name='Personnels collectivite'/> </paren> </dlm:audience> </dlm:fragment> </managedLayoutFragments>
Le premier bloc <dlm :fragment » suivant est alors extrait de celui-ci :
Bloc de code language html/xml <dlm:fragment name='Admin' ownerID='admin-lo' precedence='3'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.PersonEvaluatorFactory'> <paren mode="AND"> <attribute name="username" mode='equals' value='admin'/> </paren> </dlm:audience> </dlm:fragment>
Il est alors copié dans un nouveau fichier XML nommé « fragmentDLM1.fragment-definition.xml » (avec ajout de l’entête XML :<?xml version="1.0" encoding="UTF-8"?>)
L’élément <fragment-definition> est alors ajouté autour du bloc <dlm :fragment> :
Bloc de code language html/xml linenumbers true <?xml version="1.0" encoding="UTF-8"?> <fragment-definition xmlns:dlm="http://org.jasig.portal.layout.dlm.config" script="classpath://org/jasig/portal/io/import-fragment-definition_v3-1.crn"> <dlm:fragment name='Admin' ownerID='admin-lo' precedence='3'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.PersonEvaluatorFactory'> <paren mode="AND"> <attribute name="username" mode='equals' value='admin'/> </paren> </dlm:audience> </dlm:fragment> </fragment-definition>
Le nouveau fichier « fragmentDLM1.fragment-definition.xml » est alors sauvegardé et on peut être importé dans la base de données 4.x via la commande Ant :
Bloc de code language bash ant data-import -Dfile="PATH/TO/ fragmentDLM1.fragment-definition.xml"
, avec –Dfile ayant pour valeur le chemin vers le fichier « fragmentDLM1.fragment-definition.xml »
- Si l’import est effectué avec succès le message « build successful » devrait alors être affiché dans la console, le fragment défini précédemment est désormais présent dans le portail uPortal v4.x.
Migration des « theme », « structure », « profile » et « layout »
Tous ces éléments ne correspondant pas à des « données brutes » mais plutôt à la présentation, aucune procédure n’a été définie. De ce fait, aucun de ces éléments ne sera migré vers la version 4.x d’uPortal.
Migration des données spécifiques aux développements
Dans le cas où le portail ESUP 3.2 comprendrait des données en base liées à des développements spécifiques réalisés par ESUP, il sera nécessaire de définir des procédures de migration propre à chacun de ces développements. En effet, la procédure décrite dans la page courante permet de traiter l’ensemble des données génériques gérées par uPortal et non les données qui peuvent être issues de développements spécifiques.