数据源动态切换

BIRT统一公用数据源、动态切换数据源解决方案

流过昼夜 提交于 2019-11-30 17:50:56
通过BIRT报表工具开发出来的报表,在运行时往往是走一个统一的生产环境数据源,但是开发时往往是一个开发测试用的数据源,这就 需要随时能够在两个环境下进行切换。目前针对这个问题,公开可检索到的资料,基本上是通过数据源的beforeopen事件,通过写脚本的方式解决,这个 方式还是比较复杂,在报表数量较多,开发人数较多时,开发人员需要注意的地方还是有些多,并不完美。本文的处理方式,将能够根本性的解决该问题。 不能在报表制作上做文章了,这样要么需要大量修改报表文件,要么需要每个报表继承一个公共的库文件,只能在BIRT的开放API上想办法了。通过研究BIRT的源代码,找到了如下解决方案,基本上完美的解决了这个问题。 IReportEngine birtEngine = ...; IReportRunnable runnable = birtEngine.openReportDesign(...); IRunAndRenderTask runAndRenderTask = birtEngine.createRunAndRenderTask(runnable); Map appContext = runAndRenderTask.getAppContext(); Connection conn = ...; appContext.put(IConnectionFactory.PASS_IN