Pour des raisons de maintenance du site, un arrêt du site aura lieu lundi 16 décembre 2019 à partir de 18H00, pour une durée estimée de 30 minutes.

Veuillez nous excuser pour les désagréments que cette opération pourrait causer.

Question sur la sauvegarde du bureau virtuel en base

Ritchie Nithoo · le 25/08/14 à 16:03

Bonjour , 

Nous utilisons la dernière version du module bureau virtuel ainsi que JCMS 8.2. 

Voila ce que nous désirons faire : A cause d'un paramétrage raté , nous avons du modifié le modèle de bureau virtuel. Ce paramétrage touche notamment les noms données aux portlets. Nous devons donc,  enlever ces noms dans les bureau  virtuel , sans pour autant les réinitialiser et ainsi perdre les customisations faites par les utilisateurs. 

Ma question est donc la suivante : Dans le champs J_VALUE pour les extra data des bureau virtuel , le xml correspondant contient un attribut "majorVersion" dans la balise <desktop>. A quoi correspond cet attribut?

Par ailleurs , à titre d'informations , ma solution est de "réinitialiser" par une requête sql les bureaux virtuel donc les changements ne sont pas importants.

En vous remerciant par avance de votre aide, 

Ritchie Nithoo

12 pts
Olivier Jaquemet - le 25/08/14 à 16:11
Meilleure réponse

Bonjour,

La valeur majorVersion correspond au nombre de mise à jour majeure du bureau virtuel.
Sont considérés comme majeures les opérations suivantes : 

  • ajout ou suppression d'onglet
  • ajout ou suppression de service (ou de flux RSS)

Ces actions incrémentent également la valeur version

Toutes autres actions effectuées par l'utilisateur sur son bureau virtuel incrémente uniquement la valeur version, pas majorVersion.

 

Si vous avez besoin d'effectuez des modification sur le contenu, je vous suggère de passer par les API java (dont la javadoc est inclu dans le module) et d'éviter la modification via requete SQL. Vous respectez ainsi forcément le modèle de données qui sera garantie par les APIs.

#2
  1. Itération sur tous les membres,
    • Pour les membres JStore, channel.getDataSet(Member.class)
    • Pour les membres JcmsDB cf javadoc HibernateUtil.getRowIdBatchSet()
  2. accès au bureau virtuel de chaque membre :
    Desktop desktop = Desktop.getDesktop(mbr)
  3. mise à jour des valeurs selon vos critères
  4. Enregistrement
    desktop.save(mbr);

Tout ça à réaliser de façon optimisée en terme de gestion des sessions/transaction hibernate à partir de plus de 500 membres à traiter (exemple de gestion dans la javadoc HibernateUtil.getRowIdBatchSet())

Olivier Jaquemet · le 25/08/14 à 16:21
#3

Merci pour votre aide. Je récapitule : Créer un programme java qui me permet d'itérer sur tous les bureaux virtuel et d'effectuer les modifications voulues. Je vais creuser cette solution. merci de votre aide.

Ritchie Nithoo · le 25/08/14 à 16:24
#4

Précision, il ne s'agit pas de n'importe quel programme java, vous devez faire cette action dans la webapp JCMS en cours de fonctionnement, toutes les API que j'évoquais ne sont disponibles que de cette façon.

Olivier Jaquemet · le 25/08/14 à 16:31
9 pts
Ritchie Nithoo · le 25/08/14 à 16:37

Ok , créer un main java dans mon plugin par exemple , et l'exécuter lorsque le programme JCMS est en cours de fonctionnement? 

#1

non. Un main java c'est pour les programmes à part entière, pas ceux qui s'executent dans un serveur JavaEE. Créer plutot une méthode utilitaire dans le code java de votre plugin, que vous pouvez par exemple invoquer depuis un JSP dédié.

Olivier Jaquemet · le 25/08/14 à 16:43
#2

Ok je comprend mieux. J'étais perdu quand à la manière de procéder pour intégrer le code de modification des bureaux virtuel.
Merci.

Ritchie Nithoo · le 25/08/14 à 16:46
0 pt