首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReportServer:没有包含空表的报表

ReportServer:没有包含空表的报表
EN

Stack Overflow用户
提问于 2016-03-17 00:47:06
回答 1查看 66关注 0票数 0

我使用来自Datewerks的报表服务器。

我已经创建了一个报告,就像时间调度程序报告一样。

但是,如果表中没有可用的数据(行),我如何设置报告使其不发送报告?

EN

回答 1

Stack Overflow用户

发布于 2016-04-04 14:15:21

目前,在ReportServer中有两种可能的实现方式。第一种是使用条件调度。在这里,您需要创建一个条件,该条件允许检查您的报告是否包含任何数据。条件本身是动态列表(变体),并通过终端命令rcondition创建。一旦条件就位,就可以在调度过程中选择它(通过激活第一个面板上的高级选项。开始之前,先看一下the manual

第二种可能是使用ReportServer的脚本功能并挂钩到调度程序中。如果您只对动态列表报告感兴趣,这种方法尤其有效,因为在这里可以很容易地确定报告是否包含任何数据。(例如,对于Jasper或BIRT报告,不清楚如何确定报告是否包含数据,因为报告引擎可能仍会生成具有多个页面的PDF/文档。)

您正在寻找的钩子是SchedulerExecutionHook,它在执行任何调度的作业之前被调用,并且可能会否决执行。以下是一个小脚本,用于检查a)计划作业是否为报表执行作业,b)报表是否为动态列表。如果满足这些条件,它将运行报告,然后检查结果是否包含数据。如果不是这样,它就会否决执行。

代码语言:javascript
复制
import net.datenwerke.scheduler.service.scheduler.hooks.SchedulerExecutionHook
import net.datenwerke.scheduler.service.scheduler.hooks.adapter.SchedulerExecutionHookAdapter
import net.datenwerke.rs.scheduler.service.scheduler.jobs.report.ReportExecuteJob
import net.datenwerke.rs.base.service.reportengines.table.entities.TableReport
import net.datenwerke.rs.base.service.reportengines.table.output.object.CompiledTableReport
import net.datenwerke.scheduler.service.scheduler.helper.SkipJobExecution

def callback = [
  doesVetoExecution : { job, logEntry ->
    if(job instanceof ReportExecuteJob &&
       job.getReport() instanceof TableReport){
       job.doExecute()
       if(job.getExecutedReport() instanceof CompiledTableReport &&
          ! job.getExecutedReport().hasData()){
          return new SkipJobExecution("No data")
       }
    }
  }
  ] as SchedulerExecutionHookAdapter

def HOOK_NAME = "SkipEmptyListSchedulerHook";
GLOBALS.services.callbackRegistry.attachHook(HOOK_NAME, SchedulerExecutionHook.class, callback)

要注册钩子,请将其放在文件服务器的bin/onstartup.d文件夹中,在这种情况下,只要服务器启动,就会注册钩子。为了不重新启动服务器而是直接注册它,打开终端(CTRL+ALT+T)并手动执行脚本(exec命令)。有关脚本的介绍,请参阅Scripting Guide (特别是Chapter 7)。

我要补充的是,这并不是一个真正的最佳实现。这里发生的事情是,为了决定是否应该发送电子邮件,将执行报告。如果没有被否决,报告将作为实际流程的一部分再次执行。然而,据我所知,目前在这方面可以做的事情并不多。一种可能的优化不是简单地运行报告,而是使用限制1对其进行调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36041927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档