报表运算中断

阅读(1816) 标签: 中断, alwaysreloaddefine,

在服务运行期间,对运算时间较长的报表进行中断操作,释放cpu和内存来计算其他报表。

功能背景:

当某个报表运算很长时间时,为了让别的任务能够正确进行计算,不会等待太长时间,允许对该报表执行中断,使之空出CPU和内存。

使用方法:

通过调用API获得正在计算的报表entry,并且调用API中止报表的运算。

 

代码示例:

CacheManager.getInstance().getReportEntry(String reportName).getReportCache(Context ctx, long timeout).interrupt()//中断单个报表,这里的timeout是自己设的,你希望删除多长时间内计算的报表

 

CacheManager.getInstance().getReportEntry(String reportName).getReportCache(String reportCacheId). interrupt()//中断单个报表

 

CacheManager.getInstance().getReportEntry(String reportName).getReportEntries();//获得该报表正在计算的所有实例,然后循环调用interrupt()方法逐个删除

 

CacheManager.getInstance().getReportEntries().keySet() //列出报表名称

 

说明:

1、  中断单个报表的运算时,报表模板名为tag标签中的reportFileName或者beanName

2、  alwaysReloadDefine设为no时,才可以正确中断

3、  对于比较大的报表,临界内存的情况下,中断请求发出后,需要等待一会,才能中断成功