Groupe 1A (socle)

Date de création : 17 mars 2004
Dernière modification : 22 novembre 2004
Diffusion : Esup-Portail

Framework MAG

Présentation

La définition des actions

<!--
<action *name="nom logique de l'action"
type="type de l'action : normal ou servant - normal par defaut"
*classname="classe de type SubChannel a  instancier pour realiser l'action"
rendertype="type de rendu : xsl ou ssl - xsl par defaut"
xslfile="fichier xsl a  utiliser si rendertype=xsl - par defaut name.xsl"
sslfile="nom du fichier ssl a  utiliser - null par defaut"
ssltitle="entree a  utiliser dans le fichier ssl - par defaut le nom de l'action"
init="methode d'initialisation de l'action - init par defaut"
setoutput="methode qui fixe les parama¨tres xsl/xml/ssl - setOutput par defaut"
setxml="methode qui fixe le XML - setXML par defaut"
renderxml="methode qui effectue le rendu XML - renderXML par defaut"
servantfinish="action sur laquelle passer lorsque le servant est fini. Cas ou type=servant" servantinit="action sur laquelle le servant démarre (cas ou le servant est conçu avec MAG). default par défaut. Cas ou type=servant" cachetype="type de cache (default|channel|instance) - default par defaut"
<param name="nom du param1"> <value>premiere valeur du param1</value> <value>deuxieme valeur du param1</value> ... </param> ... <param name="nom du paramN"> <value>valeur du paramN</value> </param>
/>
* = obligatoire
toutes les methodes sont eventuellement implementees dans classname
-->

Paramètres des actions

Le cycle de vie d'une channel dans le framework MAG

Conception du fichier de configuration

Conception de la mainchannel

Constructeur

setRuntimeData (facultatif)

Conception des subchannels

Constructeur

Méthode init (ou un autre nom défini pour l'action)

Méthode setXML (ou un autre nom défini pour l'action)

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<xml>
le xml généré dans setXML
</xml>
<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
   <xml>
   </xml>

Méthode setOutput (ou un autre nom défini pour l'action)

Gestion du cache des actions

Le cache de type default

Le cache de type channel

Le cache de type instance

Implémenter son propre type de cache

Cas des servant

Gestion du groupmapping

<groupmapping>
	<group localname="group1" uportalid="local.101"/>
	<group localname="group2" uportalid="local.102"/>
</groupmapping>
 Config.getInstance().getGroupmapping().get("group1");

Gestion des erreurs

Constructeurs disponibles

Fichier de configuration

Gestion des servants

public void initServant(IServant servant) throws PortalException {
     staticData.setParameter("serverView", Config.getInstance().getAnnuaire());
     if (this.currentAction.getName().equals("servantAnnuaire1")) {
	     staticData.setParameter("returnServant","single");
     }  
     else if (this.currentAction.getName().equals("servantAnnuaire2"))
     	 staticData.setParameter("returnServant","multiple");
     super.initServant(servant);
}

Services utiles fournis par le framework

ConfigChannel

MainChannel

SubChannel

xml = "<MESSAGE>Bonjour !</MESSAGE>";

alors getXML renverra

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
   <xml>
   <MESSAGE>Bonjour !</MESSAGE> 
   </xml>

Autres classes du framework

Action

ServantFactory

SubChannelFactory

Exemple de mise en oeuvre

Présentation

Soit une channel MonDossierWeb qui va servir de maquette à un service d'affichage du dossier étudiant.

Dans un premier temps cette channel va proposer une page de liens vers l'affichage de l'état-civil, des inscriptions, des notes et du calendrier. On implémentera pas vraiment cet affichage, on utilisera juste le plugin Todo pour afficher une page "travaux en cours".

Recensement des actions

 <actions>
   <action name="default" 
   classname="RenderStatic" 
   cachetype="channel"
   />
   <action name="etat_civil" 
   classname="RenderStatic"
   init="temp"
   />
   <action name="inscriptions" 
   classname="RenderStatic"
   init="temp"
   />
   <action name="calendrier" 
   classname="RenderStatic"
   init="temp"
   />
   <action name="notes" 
   classname="RenderStatic"
   init="temp"
   />
   </actions>

Lecture du fichier de configuration

public class Config extends ConfigChannel
 //déclaration des variables de la classe
   private static Config singleton = null;
	static {
singleton = new Config();
} /** * * @return ConfigChannel Instance * @throws IOException * @throws JspException */ public static Config getInstance() {
return singleton;
}
 protected String getConfigFile() {
   return "/properties/channels/org_esup/CMonDossierWeb/CMonDossierWeb.xml";
   }

La mainchannel : CMonDossierWeb

public class CMonDossierWeb extends MainChannel
 public CMonDossierWeb() {
   setConfigActions(Config.getInstance()); 
   Todo.register(getConfigAction().getActions());
   }
 public ChannelRuntimeProperties getRuntimeProperties() { 
   return new ChannelRuntimeProperties();
   }
 public void receiveEvent(PortalEvent ev) {
   }
 public void setStaticData(ChannelStaticData sd) throws PortalException {
   staticData = sd;
   }

La subchannel : RenderStatic

public class RenderStatic extends SubChannel
 public Boolean temp(ChannelRuntimeData rd) throws PortalException, FrameWorkException    {
   Todo.todo(getMainChannel(), rd, "default");
   return Boolean.FALSE;
   }

Plugins livrés avec le MAG