Outils de gestion documentaire www.freedom-ecm.org
Plan Introduction GED Architecture MVC Le modèle documentaire
Les acteurs de la GED
freedom : Qu'est ce c'est ? Gestion Électronique de Documents Outil pour le travail collaboratif Homogénéité de l'accès aux documents Structuration des informations Confidentialité des informations Suivi des informations Système évolutif
PHP: Hypertext Preprocessor PHP qu'est ce c'est ? PHP: Hypertext Preprocessor Langage de programmation interprété. Pour l'écriture de pages web (HTML) dynamiques.
Architecture 3 tiers Navigateurs Web Coffre de fichiers FREEDOM Serveur Web Base de données
"mauvais" usage de PHP (comme simple pré-processeur) today.php <html> <body> <h1>Aujourd'hui nous sommes le <?php setlocale(LC_TIME, "fr_FR"); print strftime("%A %d %B %Y",time());?>.</h1> </body> </html>
Contient la représentation d'un objet Contrôleur : Architecture MVC Modèle : Contient l'abstraction d'un objet (structure et comportement). Réalise la connexion avec la base de donnée. Vue : Contient la représentation d'un objet Contrôleur : analyse les requêtes et pilote le(s) modèle(s) et renvoie les vues modifiées. Présentation du modèle MVC
M C V Affichage d'une vue requête "afficher aujourd'hui" récupération modèle "viewtoday" utilisation vue squelette "viewtoday" génération vue instancié renvoi de la vue M C V
Usage de MVC pour les interfaces viewtoday.xml <html> <body> <h1>Aujourd'hui nous sommes le [today]</h1> </body> </html> V viewtoday.php <?php function viewtoday(&$action) { setlocale(LC_TIME, "fr_FR"); $action->lay->set("today", strftime("%A %d %B %Y",time()); } ?> M
Les vues Contrôleur principal
Définition du document sujet:facturation 2005 auteur:jean Martin titre:rapport financier Fichier (contenu du fichier + méta-données) Présentation du terme MVC. Document FREEDOM Propriétés (commun) Attributs (spécifique famille)
Création de famille documentaire Héritage Attributs Méthodes Vues Cycle Le modèle documentaire
Création de famille (3) Héritage Attributs Méthodes Vues Cycle public $defaultview= "SERVICEREPORT:IMPREPORT:S"; public $defaultmview= "SERVICEREPORT:MAILREPORT:S"; function SpecRefresh() { $this->getReportRef(); } /** *return Ref of document *@return ref of document */ function getReportRef() { include_once("FDL/Lib.Dir.php"); $iuser=new_Doc ($this->dbaccess,$this->getValue("SERT_IDREDACT")); $init=$iuser->getValue("US_INITIALS"); $date=explode("/",$this->getValue("SERT_DATECR")); $ref="CR/".$date[2].$date[1].$date[0]."/".$init."/".$this->initid."/".$this->revision; $this->setValue("SERT_REF",$ref);
Construction du modèle documentaire Définition d'une famille Class.doc.php doc (table sql) Class.doc2.php - description doc2 - description Class.doc2345.php - adresse Class.doc1277.php - taille - poids doc2345 - adresse doc1277 - taille - poids
Création de famille (4) Héritage Attributs Méthodes Vues Cycle <h1>[TITLE]</h1> <p>[TEXT:main writter is] : [SERT_REDACT].</p> <p>[TEXT:the containt is] : <div>[SERT_REPORT].</div><p> <report> <title>[TITLE]</title> <writer id="[SERT_REDACTID]"> [SERT_REDACT]</writer> </report>
Types de vues courantes pour un document VPDF VCSV VXML M C VHTML VODT
Création de famille (4) Héritage Attributs Méthodes Vues Cycle function impreport($target="_self",$ulink=true,$abstract=false,$viewdiffused=true) { include_once("FDL/Lib.Util.php"); $this->viewDefaultCard($target,$ulink,$abstract); $sert_conv=$this->getTValue("SERT_CONV"); $sert_pres=$this->getTValue("SERT_PRES"); ... foreach($sert_annex as $k=>$v){ if (($sert_annexdiff[$k]=="oui")||$viewdiffused) { $annex[]=array("annex"=>$this->GetHtmlValue($oaf,$v,$target,$ulink,$k), "anxisdiff"=>($sert_annexdiff[$k]=="oui"?true:false), "annexdiff"=>$sert_annexdiff[$k]); } $this->lay->setBlockData("ANNEX",$annex); $this->lay->set("docid",$this->id); <table width="100%" cellspacing="0" border=0 > <tr> <td valign="top" width="150pt" align="left"> <img width="150pt" src="[SOCIETY_LOGO]"></td> <td ><H1 align="center">Compte Rendu</H1> <H2 align="center">[V_SERT_CATG]</H2> </td> <td>[IF ELT] <div class="noprint" > <table border="0" class="tarray"> <tr><td colspan="2" ><B>Fichiers attachés<B></td></tr> [BLOCK ANNEX]<tr> [IF CONSULT] <td>[IF anxisdiff] <IMG src="Images/diffused.gif" title="[TEXT:diffusion] : [annexdiff]">[ENDIF anxisdiff] [IFNOT anxisdiff] <IMG src="Images/notdiffused.gif" title="[TEXT:diffusion]:[annexdiff]">[ENDIF anxisdiff]</td> <td title="[TEXT:diffusion] : [annexdiff]" >[annex]</td> [ENDIF CONSULT] [IFNOT CONSULT]<td>[annex]</td>[ENDIF CONSULT] [ENDBLOCK ANNEX]</tr> </table> </div>[ENDIF ELT]</td></tr></table>
Réutilisabilité des vues
Création de famille (5) Héritage Attributs Méthodes Vues Cycle include_once("FDL/Class.WDoc.php"); Class WServicereport extends WDoc { // ------------ public $defClassname='WServicereport'; public $transitions = array( "Ttransmited" =>array("m1"=>"askVal", "ask"=>array("WSERT_IDVAL","WSERT_VAL"), "m2"=>"sendTransmitedMail"), "Tretry" =>array("m1"=>"askMotif", "ask"=>array("WSERT_MOTIF"), "m2"=>"sendRetryMail"), "Tvalidated" => array("m2"=>"sendValidatedMail"), "Tdiffused"=>array("m2"=>"sendDiffusedMail")); public $cycle = array( array("e1"=>draft,"e2"=>transmited, "t"=>Ttransmited), array("e1"=>draft,"e2"=>diffused, "t"=>Tdiffused), array("e1"=>transmited,"e2"=>diffused,"t"=>Tdiffused), array("e1"=>transmited,"e2"=>validated,"t"=>Tvalidated), array("e1"=>transmited,"e2"=>draft, "t"=>Tretry), array("e1"=>validated,"e2"=>diffused, "t"=>Tdiffused), array("e1"=>diffused,"e2"=>draft, "t"=>Tretry); public $firstState=draft; public $viewlist="button"; function askVal($newstate){ $this->doc->setValue("SERT_IDVAL",$this->getValue("WSERT_IDVAL")); $this->doc->setValue("SERT_VAL",$this->getValue("WSERT_VAL")); return ""; } ...
Noyau documentaire propriétés méthodes Chaque famille de document peut disposer d'une ou de plusieurs représentations spécifiques Compte- Rendu Nouvelle Demande de congés Dossier affaire Noyau documentaire propriétés méthodes Société Utilisateur Site Personne
Chaque interface peut utiliser les différentes vue des documents Hotline Ressource humaine Agenda Noyau applicatif contrôle d'accès paramétrage Gestion familles Prospection commerciale Carnet d'adresses