IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

BIRT Discussion :

Contribuez � la FAQ BIRT [FAQ]


Sujet :

BIRT

  1. #1
    R�dactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par d�faut Contribuez � la FAQ BIRT
    Bonjour,

    Enfin la FAQ BIRT est arriv�e Gr�ce � votre participation 30 Questions/R�ponses pour vous aidez sont d�j� propos�es.

    N'h�sitez pas � participer

    Pour cela, veuillez ajouter � ce topic vos suggestions de questions / r�ponses.
    Les remarques pertinentes seront ainsi ajout�es � la FAQ.

    Pour proposer une Q/R, merci de bien vouloir proc�der comme ci-dessous :

    [QR] Comment pr�senter la question ?

    Techno(s) utilis�e(s) de BIRT : xxx

    La Q/R doit commencer par un texte introductif pour poser clairement et
    bri�vement le probl�me et donner la d�marche pour le r�soudre.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Toute formule doit être mise en balise code.
    Les noms de fonctions ou mots cl�s doivent �tre mis en gras. Vous pouvez �galement utiliser le soulignement ou l'italique dans votre texte; mais ne modifiez pas la taille du texte.
    Merci � tous de votre collaboration

    [EDIT BiM 25/02/2011]
    A ajouter : 18
    A mettre � jour : 2
    [/EDIT]
    la culture c'est comme la confiture moins on en a plus on l'�tale.

    Mes tutos

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Par d�faut BIRT FAQ Comme promis.
    Voici un lien vers la FAQ compl�te de BIRT rendue publique.

    http://www.birt-exchange.com/modules...g_BIRT_Reports

    A votre dispo pour le partage des modules � traduire.

    Je pense que la cr�ation de rapports et des charts serait � privil�gier dans un premier temps

    Egalement voici un lien vers la BIRT Report API

    http://www.birt-exchange.com/documen...w-summary.html


    RAJOUT : Confirmation officielle de M. Rich Guth , VP Actuate ( Java Reporting Group ) sur l'authorisation de traduire la FAQ de BIRT en fran�ais

  3. #3
    Invit� de passage
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1
    Par d�faut Comment g�rer les param�tres � valeurs multiples ?
    Bonjour,

    En utilisant la m�thode de lazarel sous BIRT 2.3.0 cela ne fonctionne que si je mets le param�tre en dur.

    Pour que cela fonctionne il a fallu rajouter le fonction Array.join() � la suite de "params["type"].value" pour obtenir :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    params["type"].value.join().replace(/,/g,"','")
    Olivier,
    OpenBizz

  4. #4
    Gf6HqmTW
    Invit�(e)
    Par d�faut
    Citation Envoy� par BiM Voir le message
    Sans savoir forc�ment (savoir) y r�pondre, quelles questions vous paraitraient pertinentes en suppl�ment de celles d�j� pos�es ?

    Merci.
    Ca, pour �a je suis baleze !

    [Q]Comment mettre certaines valeurs d'un graphique en couleur selon des crit�res de valeur/ordre/arbitraire via du code Java avec Birt Engine ?

    [Q]Comment mettre en �vidence certaines valeurs d'un graphique (Highlighting) lorsque'on les survol avec la souris (Toujours avec Birt Engine)?

  5. #5
    R�dactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par d�faut
    Bonjour,


    Enfin la FAQ BIRT est arriv�e Gr�ce � votre participation 30 Questions/R�ponses pour vous aidez sont d�j� propos�es.

    N'h�sitez pas � participer
    la culture c'est comme la confiture moins on en a plus on l'�tale.

    Mes tutos

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    25
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Par d�faut
    Ca c'est une tr�s bonne nouvelle pour le jeune stagiaire, qui travail avec BIRT, que je suis.
    Birt est un framework tr�s complet, disposant d'�normement de possibilit�s mais il manque cruellement d'une bonne documentation.

    Longue vie � cette FAQ!

  7. #7
    BiM
    BiM est d�connect�
    Expert confirm�
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 39
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par d�faut
    Comment rediriger et/ou changer le niveau de log de BIRT ?

    En appel Java, il est possible de configurer le niveau de log comme ceci :
    Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
    engine.changeLogLevel(Level.ERROR);
    engine �tant de type IReportEngine (ou impl�mentation).

    On peut �galement le modifier au niveau de la configuration :
    Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
    config.setLogConfig(IEngineConfig.LOG_DESTINATION, Level.ERROR);
    config �tant de type EngineConfig.

    Sur chacun de ces deux objets, il est possible d'attribuer un autre logger (pour avoir les logs dans un fichier commun � l'application par exemple).

    En batch, ce n'est � priori pas possible.

    Et via l'utilisation des taglib, on peut le faire via le web.xml : http://www.eclipse.org/birt/phoenix/...erUsage2.2.php

  8. #8
    BiM
    BiM est d�connect�
    Expert confirm�
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 39
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par d�faut
    Quelle est la diff�rence entre le Design Engine API (DEAPI) et le Report Engine API (REAPI) ?

    Il faut distinguer le DesignEngine du ReportEngine. Un DesignEngine sert � dessiner un rapport alors que le ReportEngine sert � g�n�rer le rapport. Pour quelques �l�ments simples il est possible de modifier ou cr�er des petites choses dans un rapport directement � partir du ReportEngine.

    Voici un exemple d'instanciation pour chaque moteur :
    • Report Engine
      Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      EngineConfig config = new EngineConfig();
      config.setBIRTHome("Emplacement de mon dossier runtime/ReportEngine");	//endroit où se trouvent les librairies du Runtime
      Platform.startup(config);
      IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
      IReportEngine engine = factory.createReportEngine(config);
    • Design Engine
      Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      DesignConfig designConfig = new DesignConfig();
      designConfig.setBIRTHome("Emplacement de mon dossier runtime/ReportEngine");
      Platform.startup(designConfig);
      IDesignEngineFactory designFactory = (IDesignEngineFactory)Platform.createFactoryObject(IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY);
      IDesignEngine designEngine = designFactory.createDesignEngine(designConfig);

  9. #9
    BiM
    BiM est d�connect�
    Expert confirm�
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 39
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par d�faut
    Comment d�tecter si un rapport contient des donn�es ?

    Pour cela, il faut bien s�parer les �tapes Run & Render. De plus, cette op�ration peut uniquement �tre effectu�e via du code Java. Ce qui veut dire que cela implique l'utilisation de l'API BIRT.

    L'op�ration doit �tre faite entre la t�che Run et la t�che Render � partir du Report Document (*.rptdocument) r�cup�r� apr�s avoir effectu� la t�che Run.

    Voici comment d�tecter si un rapport contient des donn�es. A partir de l�, on peut pr�venir l'utilisateur que le rapport n'a pas de donn�es et emp�cher le rendu :
    Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    /**
     * Méthode détectant si au moins un DataSet contient des données
     * @param doc Document généré par BIRT
     * @return VRAI si le rapport contient des données, FAUX s'il n'y a pas de données dans le rapport
     * @throws BirtException
     */
    private boolean hasData(IReportDocument doc) throws BirtException {
    	/* Récupération des données du rapport */
    	IDataExtractionTask dataExtractionTask = engine.createDataExtractionTask(doc);
    	List<IResultSetItem> resultSetList = (List<IResultSetItem>) dataExtractionTask.getResultSetList();
     
    	/* Pour chaque ResultSet récupéré */
    	for (IResultSetItem resultItem : resultSetList) {
    		/* Récupération des données du DataSet */
    		dataExtractionTask.selectResultSet(resultItem.getResultSetName());
    		IExtractionResults extractionResults = dataExtractionTask.extract();
     
    		/* Contrôle des données dans le DataSet */
    		if (extractionResults != null) {
    			IDataIterator dataIterator = extractionResults.nextResultIterator();
    			if (dataIterator != null && dataIterator.next()) {
    				System.out.println("Le dataset a des données");
    				return true;
    			}
    		}
     
    		System.out.println("Le dataset n'a pas de données.");
    	}
     
    	return false;
    }

    Il est �galement possible de faire la m�me chose en listant les noms des DataSet puis en ignorant ceux suffix�s par "_ignored" par exemple :
    Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    /**
     * Méthode détectant si au moins un DataSet contient des données en ignorant les DataSets suffixés par "_ignored"
     * @param doc Document généré par BIRT
     * @return VRAI si le rapport contient des données, FAUX s'il n'y a pas de données dans le rapport
     * @throws BirtException
     */
    private boolean hasDataWithIgnored(IReportDocument doc) throws BirtException {
    	/* Récupération des données du rapport */
    	IDataExtractionTask dataExtractionTask = engine.createDataExtractionTask(doc);
    	List<IResultSetItem> resultSetList = (List<IResultSetItem>) dataExtractionTask.getResultSetList();
     
    	/* Pour chaque ResultSet récupéré */
    	for (IResultSetItem resultItem : resultSetList) {
    		/* Récupération du nom du DataSet par son identifiant */
    		String name = resultItem.getResultSetName();
    		name = name.replace("ELEMENT_", "");
    		ReportItemHandle item = (ReportItemHandle)doc.getReportDesign().getElementByID(Long.valueOf(name));
    		name = item.getDataSet().getName();
    		System.out.println("Dataset trouvé : " + name);
     
    		/* On ignore les dataSets suffixés par "_ignored" */
    		if (!name.endsWith("_ignored")) {
    			/* Récupération des données du DataSet */
    			dataExtractionTask.selectResultSet(resultItem.getResultSetName());
    			IExtractionResults extractionResults = dataExtractionTask.extract();
     
    			/* Contrôle des données dans le DataSet */
    			if (extractionResults != null) {
    				IDataIterator dataIterator = extractionResults.nextResultIterator();
    				if (dataIterator != null && dataIterator.next()) {
    					System.out.println("Le dataset " + name + " a des données");
    					return true;
    				}
    			}
     
    			System.out.println("Le dataset " + name + " n'a pas de données.");
    		}
    		else {
    			System.out.println("Le dataSet " + name + " a été ignoré.");
    		}
    	}
     
    	return false;
    }

    Pour r�cup�rer le nom du DataSet :
    • On r�cup�re le ResultSet et on voit � quel �l�ment ce r�sultat est li�.
    • Cependant, le r�sultat n'est pas li� � un DataSet directement mais � un �l�ment du rapport. Finalement, ce n'est pas le DataSet qui est regard� mais le DataBind. Puisqu'ensuite il peut y avoir des filtres suppl�mentaires.
    • Au final, on r�cup�re le DataSet li� � l'�l�ment puis son nom.


    Merci � gronono pour son aide

  10. #10
    BiM
    BiM est d�connect�
    Expert confirm�
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 39
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par d�faut
    Comment cr�er et utiliser un Handler en Java pour remplacer les scripts ?

    Dans BIRT, les utilisateurs avanc�s utilisent souvent des scripts qui permettent de faire des op�rations particuli�res sur le rapport.

    Il n'est pas facile de maintenir un rapport BIRT quand les scripts sont directement �crits dans celui-ci. D'autre part, cela emp�che la r�utilisation de code (� moins de passer par des fonctions d�finies dans une librairie commune) et donc augmente les risques d'erreurs. Enfin, le d�boguage est beaucoup moins �vident lorsqu'on a des scripts.

    BIRT propose cependant une solution : Externaliser ses scripts dans des Handler Java. Cela demande plusieurs pr�-requis :
    • Savoir retranscrire du script en Java
    • Utiliser l'API pour lancer BIRT (et non le Web Viewer ou l'appel par batch)


    Nous allons prendre pour exemple un cas classique de scripts pour un ScriptedDataSet. Ces DataSets permettent notamment de traiter des objets Java pour les ins�rer dans un DataSet qui sera utilis� dans le rapport.

    Il y a deux principales �tapes :
    • Ecrire le handler :
      Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      package fr.societe.projet.birt.handler;
       
      import fr.societe.projet.domain.Personne;
       
      import java.util.List;
       
      import org.eclipse.birt.report.engine.api.script.IReportContext;
      import org.eclipse.birt.report.engine.api.script.IScriptedDataSetMetaData;
      import org.eclipse.birt.report.engine.api.script.IUpdatableDataSetRow;
      import org.eclipse.birt.report.engine.api.script.ScriptException;
      import org.eclipse.birt.report.engine.api.script.eventadapter.ScriptedDataSetEventAdapter;
      import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;
       
      /**
       * Handler sur un ScriptedDataSet qui contient des objets de type Personne.
       * 
       * @author BiM
       */
      public class PersonneHandler extends ScriptedDataSetEventAdapter {
      	private final static String COL_ID = "Id";
      	private final static String COL_NOM = "Nom";
      	private final static String COL_PRENOM = "Prenom";
      	private final static String COL_SEXE = "Sexe";
      	private final static String COL_AGE = "Age";
       
      	private List<Personne> personnes = null;
      	private int taille = 0;
      	private int enCours = 0;
       
      	@Override
      	public boolean describe(IDataSetInstance dataSet, IScriptedDataSetMetaData metaData) {
      		metaData.addColumn(COL_ID, Long.class);
      		metaData.addColumn(COL_NOM, String.class);
      		metaData.addColumn(COL_PRENOM, String.class);
      		metaData.addColumn(COL_SEXE, Character.class);
      		metaData.addColumn(COL_AGE, Integer.class);
       
      		return true;
      	}
       
      	@Override
      	@SuppressWarnings("unchecked")
      	public void beforeOpen(IDataSetInstance dataSet, IReportContext reportContext) {
      		if (reportContext != null) {
      			personnes = (List<Personne>)reportContext.getParameterValue("Personnes");
       
      			if (personnes != null) {
      				taille = personnes.size();
      			}
      		}
      	}
       
      	@Override
      	public void open(IDataSetInstance dataSet) {
      		enCours = 0;
      	}
       
      	@Override
      	public boolean fetch(IDataSetInstance dataSet, IUpdatableDataSetRow row) throws ScriptException {
      		if (enCours < taille) {
      			Personne personne = personnes.get(enCours);
      			enCours++;
       
      			row.setColumnValue(COL_ID, personne.getId());
      			row.setColumnValue(COL_NOM, personne.getNom());
      			row.setColumnValue(COL_PRENOM, personne.getPrenom());
      			row.setColumnValue(COL_SEXE, personne.getSexe());
      			row.setColumnValue(COL_AGE, personne.getAge());
       
      			return true;
      		}
      		return false;
      	}
      }
    • Lier le Handler au DataSet :
      Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      /* Lier le Handler au DataSet */
      try {
      	ReportDesignHandle report = (ReportDesignHandle)design.getDesignHandle();
      	ScriptDataSetHandle dataSet = (ScriptDataSetHandle)report.findDataSet("MonDataSet");
      	dataSet.setEventHandlerClass("fr.societe.projet.birt.handler.MonDataSetHandler");
      }
      catch (Exception e) {
      	e.printStackTrace();
      }
       
      /* Exécution */
      IRunTask runTask = engine.createRunTask(design);
       
      /* Paramètres */
      runTask.setParameterValue(clef, parametres.get(clef));
       
      [...]


    Vu qu'on r�cup�re un param�tre contenant la liste des personnes, il faut aussi passer ce param�tre au rapport au moment de l'appel � la t�che d'ex�cution (run).

    Dans mon rapport, j'ai simplement un ScriptedDataSet nomm� Personnes qui contient cinq colonnes (Id, Nom, Pr�nom, Sexe, Age) et j'ai glisser/d�poser ce tableau dans mon rapport.

  11. #11
    Membre exp�riment�

    Inscrit en
    Avril 2010
    Messages
    178
    D�tails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 178
    Par d�faut
    Quelles sont les sources de documentation disponibles pour BIRT ?

    ----
    Note : Je propose cette question, en gros, pour m'obliger � arr�ter les recherches Google d�s que j'ai besoin d'une information. Il n'y a pas des masses de sources diff�rentes pour BIRT, surtout si on r�duit sa recherche aux sources francophones, alors autant les lister exhaustivement (en filtrant celles que l'on consid�re sans int�r�t, bien s�r).
    Cette r�ponse n'est qu'une �bauche, qui ne traite que des ressources web, et les commentaires sont tr�s discutables.
    ----

    Plusieurs sites internet sont des sources d'information pour les utilisateurs de BIRT. Il y a plusieurs types d'information diff�rents :
    - Tutoriels g�n�raux ou sp�cifiques
    - Documents de r�f�rences techniques
    - Discussion g�n�rale (forums)
    - Tra�age de bugs

    La plupart des sites proposent plusieurs types d'information, et/ou des liens vers d'autres sites. Voici les plus importants :

    Sources francophones :


    Sources anglophones :

  12. #12
    BiM
    BiM est d�connect�
    Expert confirm�
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 39
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultante/Formatrice BIRT & Ing�nieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par d�faut
    Quels sont les diff�rents types de fichiers existants dans BIRT ?

    Mod�le (*.rpttemplate)
    Permet de cr�er un nouveau rapport � partir d�un mod�le. Ainsi, � la cr�ation d�un rapport, on peut faire appara�tre les mod�les utilis�s dans le Designer. Attention, si un mod�le est modifi� les rapports ne sont pas mis � jour en cons�quence. Cependant, cela peut servir pour mettre en place le lien avec les librairies, les CSS et la page ma�tre (ent�te, pied de page, fond de page, format, marges, etc.).

    Librairie (*.rptlibrary)
    Permet de mettre en place des objets pour les r�utiliser dans les rapports. Ces objets peuvent �tre des sources de donn�es, des jeux de donn�es, des cubes, des param�tres, des tableaux, des libell�s, des tableaux, des grilles, des images, des pages ma�tres, des scripts (JavaScript), des th�mes, etc. Une librairie peut-�tre utilis�e dans un template.

    Rapport (*.rptdesign)
    C�est la repr�sentation d�un rapport. C�est le fichier que l�on va appeler lors de la g�n�ration d�un document. On peut lui passer diff�rents param�tres dont la langue et les informations de connexion.

    Document (*.rptdocument)
    Le document est le format interm�diaire de g�n�ration. C�est le format g�n�r� avec les donn�es mais pas encore sous son format final : PDF, XLS, DOC, etc. Ce format permet une g�n�ration multiple dans diff�rents formats.

    Processus
    Lors de la cr�ation d�un �tat, on utilise un rapport (*.rptdesign). Un rapport peut-�tre cr�� � partir d�un mod�le (*.rpttemplate). Le rapport comme le mod�le peuvent faire appel � une ou plusieurs librairies (*.rptlibrary), les librairies permettent de disposer d��l�ments pr�d�finis, en particulier les sources de donn�es et jeux de donn�es.
    Lors de la g�n�ration il y a deux �tapes : run (ex�cution) et render (rendu). Lors de l�ex�cution on passe du rapport au document (*.rptdocument). Le document contient tous les �l�ments (tableaux, libell�s, graphiques, etc.) avec les donn�es mais n�est pas affichable tel quel par l�utilisateur avec quelconque logiciel que ce soit. Pour voir ce que donne un document, il faut passer � l��tape de rendu. Dans ce cas, on g�n�re le document final dans le format de son choix (HTML, PDF, XLS, DOC, etc.). Le format document (d�riv� du XML) permet d�avoir un format interm�diaire g�n�rant effectivement l��tat mais sans d�finir le format final. Ainsi, cela permet de r�g�n�rer le document � sa guise et dans le format souhait�.
    En r�sum� :
    - Cr�ation :
    Mod�le (*.rpttemplate) <==cr�� � partir de== Rapport (*.rptdesign) ou Mod�le ==d�pend de==> Librairie (*.rptlibrary)
    Un rapport est toujours cr�� � partir d�un mod�le (au moins celui de base) est n�est pas toujours li� � des librairies.
    - G�n�ration :
    Rapport (*.rptdesign) ==run==> Document (*.rptdocument) == render==> Fichier final (HTML, PDF, CLS, DOC, etc.)

  13. #13
    Membre confirm�
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2007
    Messages
    76
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Par d�faut Dans un chart, comment attribuer des marqueurs de types diff�rents au sein de la m�me s�rie
    Quand on construit un chart, l'interface graphique de BIRT permet de changer la couleur des points pour chaque �l�ment au sein d'une m�me s�rie.
    La version 2.6 de BIRT permet m�me d'attribuer des "patterns" pour chaque point d'une s�rie, cependant, � ce jour il n'est pas possible d'utiliser l'interface graphique du "BIRT Report Designer" pour changer la forme des marqueurs � chaque point d'une s�rie.

    Aussi, pour parvenir � r�aliser cela, on peut passer par les scripts de BIRT.

    Voici un exemple qui permet de changer la forme des marqueurs d'une s�rie compos�e de 3 �l�ments.

    Dans la partie "initialize" du rapport, on d�clare une variable globale pour m�moriser le num�ro du point de graphe � afficher :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    reportContext.setPersistentGlobalVariable("pointNumber","0");

    Dans la partie onRender du chart, fonction "beforeDrawMarker": avant de dessiner chaque marquer, on va regarder le num�ro du point � dessiner, et lui attribuer un type de marqueur:

    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
            importPackage(Packages.org.eclipse.birt.chart.model.type.impl);
    	importPackage(Packages.org.eclipse.birt.chart.model.attribute.impl);
    	importPackage(Packages.org.eclipse.birt.chart.model.attribute);
     
    	if (dph ==null)
    	{
    		marker.setVisible(false);
    	}
    	else
    	{
    		this.pointNum = parseInt(icsc.getExternalContext().getScriptable().getPersistentGlobalVariable('pointNumber'));
     
    		switch(this.pointNum)
    		{
    			case 0: 
    				marker.setType(MarkerType.CROSS_LITERAL);
    				marker.setSize(5);
    				break;
    			case 1:
    				marker.setType(MarkerType.STAR_LITERAL);
    				marker.setSize(5);
    				break;
    			default:
    				marker.setType(MarkerType.FOUR_DIAMONDS_LITERAL);
    				marker.setSize(5);
    			break;		
    		}
    		if (this.pointNum<2)
    		this.pointNum++;
    		else
    		this.pointNum=0;
     
     
    		icsc.getExternalContext().getScriptable().setPersistentGlobalVariable("pointNumber",this.pointNum.toString());
                    }
             }

    Voir http://www.eclipse.org/birt/phoenix/...kerscripts.png pour un autre exemple de modification dynamique des marqueurs d'un graphe sous BIRT.