2016-02-29 1 views
1

J'ai créé un ensemble d'utilitaires à utiliser dans mes rapports BIRT.Comment charger automatiquement le fichier JS de classpath sur BIRT

je les mets (ma-utils.jar) dans le répertoire lib de BIRT:

BIRT_HOME\plugins\org.eclipse.birt.report.viewer_x.x.x.x\birt\scriptlib 

Ils fonctionnent très bien, mais maintenant je veux créer un fichier JS, le mettre sur le chemin de classe pour pouvoir utilisez les fonctions.

// my-utils.js 
GLOBAL_VARIABLE = { 
    formatSomething: funnction(value) { 
     // do my stuff with 'value' and return 
    } 
}; 

Je veux l'utiliser directement, sans le charger dans explicity un texte dynamique ou un événement de script, comme ceci:

GLOBAL_VARIABLE.formatSomething('bla bla bla') 

Comment puis-je faire cela?

Répondre

1

Vous souhaitez créer un point d'extension. Dans Eclipse, créez un nouveau plugin-projet vide, puis ajoutez ce point d'extension:

org.eclipse.birt.core.ScriptFunctionService 

Créez un dossier sous la racine du projet, nommez-le par exemple « jslib » et mettre vos fichiers js dans ce dossier. Modifier plugin.xml et ajouter une étiquette JSLib, de sorte qu'il devrait ressembler à ceci:

<?xml version="1.0" encoding="UTF-8"?> 
<?eclipse version="3.4"?> 
<plugin> 
    <extension 
     id="my.js.function" 
     name="My custom JS functions" 
     point="org.eclipse.birt.core.ScriptFunctionService"> 
    </extension> 
    <JSLib 
     location="jslib"> 
    </JSLib> 

</plugin> 

Export du plug-in comme un pot et le déployer dans Eclipse et/ou des applications Web et vos fonctions js devraient être disponibles. Plus d'informations sur les fonctions personnalisées de birt here

+0

Pouvez-vous fournir un exemple de travail? –

0

Notez que la solution de Dominique n'est valable que lorsque les fonctions sont implémentées en Java.

La solution suivante est pour le cas où les fonctions sont mises en œuvre en utilisant Javascript:

D'abord, vous n'avez pas besoin d'ajouter les fichiers * ** js au classpath.. Au lieu de cela, vous les placez dans le répertoire spécifié pour les ressources et les référence dans votre rapport (ou dans l'une des bibliothèques que vous utilisez dans vos rapports). Voir l'exemple suivant:

Structure du répertoire:

workspace 
    \birt # I have this configured as as "Report Project" in the WS 
     my_report.rptdesign 
    \res 
     my-utils.js 

Dans le menu Préférences: rapport de conception/ressources/dossier de ressources = < dossier de projet actuel >/res

(Lors de l'exécution, vous pouvez définir le dossier de ressources en utilisant l'API, je ne sais pas comment le configurer pour l'exemple Web Viewer)

Dans my_report.rptdesign, voir les propriétés du rapport itse lf. Dans l'onglet "Ressources", ajoutez my-utils.js aux fichiers Javascript.

Vous pouvez maintenant utiliser les fonctions de votre bibliothèque dans votre rapport.

+0

Question supplémentaire (pour laquelle je n'ai pas de solution): Je voudrais inclure d'autres fichiers * .js dans un fichier * .js (vous savez, comme require.js). Il semble que ce n'est pas possible avec BIRT, mais ce n'est qu'une tare mineure. – hvb