2


1

OSGiフレームワークなしのBIRT

ご挨拶、現在、http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php [こちら]のサンプルを使用して、デスクトップスタンドアロンアプリケーションにBIRTを統合しようとしています。

問題は、OSGiフレームワークの使用を避ける方法です。 レポートエンジンをホームに設定せずに、必要なすべてのライブラリとプラグインを結果のEARに配置できますか? 私たちのクライアントは追加のランタイムをダウンロードしなければならないことに満足していないからです。 そして、そのような巨大なランタイム(約100メガバイト、私は推測します)が本当に必要ですか?

2 Answer


1


Birt 3.7以降、http://wiki.eclipse.org/BIRT_3.7_Runtime_Deployment_Guide [Birt POJO Runtime]を使用できます(http://www.eclipse.org/birt/documentation/integrating/reapi.php [ Birtウェブサイト]をご覧ください)。

あなたがしなければならない唯一のことは、http://help.eclipse.org/mars/topic/org.eclipse.birt.doc.isv/engine/api/org/eclipse/birt/report/engineを呼び出すことです。 /api/EngineConfig.html#setEngineHome(java.lang.String)[EngineConfig.setEngineHome(engineHome)]

Birtウェブサイトをフォローすると、コードは次のようになります。

try{
    final EngineConfig config = new EngineConfig( );
    //As of 3.7.2, BIRT now provides an OSGi and a POJO Runtime.

    //config.setEngineHome( "C:\\birt-runtime-2_6_2\\birt-runtime-2_6_2\\ReportEngine" );
    config.setLogConfig("c:/temp", Level.FINE);

    Platform.startup( config );
    //If using RE API in Eclipse/RCP application this is not needed.
    IReportEngineFactory factory = (IReportEngineFactory) Platform
            .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
    IReportEngine engine = factory.createReportEngine( config );
    engine.changeLogLevel( Level.WARNING );
}catch( Exception ex){
    ex.printStackTrace();
}
// Run reports, etc.
...

// destroy the engine.
try
{
    engine.destroy();
    Platform.shutdown();
    //Bugzilla 351052
    RegistryProviderFactory.releaseDefault();
}catch ( EngineException e1 ){
    // Ignore
}


0


申し訳ありませんが、OSGiを実行せずにBIRTレポートを実行する方法は本当にありません。 使用していないモジュールの一部をトリミングすることができます。 たとえば、チャートは削除できますが、チャートは機能しません。 サンプルデータベースと、それをサポートするダービープラグインを削除できることは明らかです。

これらの明白なアイテムの後、プラグインを削除することははるかに難しくなります。