用于生成BIRT表的复杂算法

时间:2011-03-01 08:43:13

标签: sql birt

我有一个包含以下列的birt数据集,按“时间”排序:

devicename   String
operatorname String
time         Date Time
action       String
info         String

'action'可以有四个可能的值之一:

MAINTENANCE_START
DEVICE_DEFECT
DEVICE_REPAIRED
MAINTENANCE_STOP

我想使用这些数据在报告中生成一个表。我应该为数据集的每一行都有一个表条目,其中action的值为'MAINTENANCE_STOP'。我的表应该有以下条目:

Time
Operator
Status
Duration
Maintenance_Info
  • '时间'应从当前'MAINTENANCE_STOP'之前的'MAINTENANCE_START'的'time'列中取出其值
  • '操作员'应该是执行'MAINTENANCE_START'
  • 的操作员
  • '状态' - 如果在最后一个'MAINTENANCE_START'和当前'MAINTENANCE_STOP'之间有'DEVICE_DEFECT'或'DEVICE_REPAIRED'事件,则该值应为'设备不可用',否则它应为'设备可用”。
  • '持续时间' - 应该是'MAINTENANCE_STOP'与最后'MAINTENANCE_START'之间的差异(间隔)
  • 'Maintenance_Info' - 应该是最后一个'MAINTENANCE_START'和当前'MAINTENANCE_STOP'之间所有'info'字符串的串联。

    这最初是在用于Web应用程序的java bean中完成的。在java中,它并不那么难,但是,在BIRT中,我不确定它是否可能。你能就我如何做这样的事情给我任何建议吗?

1 个答案:

答案 0 :(得分:1)

如果您已经使用Java完成了它,则可以使用脚本数据源在BIRT内部利用它。脚本数据源依赖于Java对象来构建对象数组,每个对象将代表数据集上的“行”。在运行时,BIRT引擎触发java对象以构建数组,当竞争时,数组将被读入报表中的数据集,并且您已关闭并运行。

有关脚本数据源的更多信息,请访问:Scripted Data Source Examples