集算器为报表呈现提供数据通道

需求描述:

现在有3台服务器(比如A、B、C):C为数据库服务器,A为报表服务器,B为集算器服务器(专门做数据处理供其他应用使用)。

其中B可以访问C,A不能访问到C(即A不能直接连数据库获取数据),但A可以访问B。

问:A的报表服务器能否访问B服务器从C获取及处理后的数据用于报表呈现?具体怎么实施?

 

分析:

集算器作为数据计算的引擎,可以为润乾报表或其他应用提供数据支持,如Java程序可通过jdbc方式访问集算器脚本文件,从而获取脚本处理后的数据,当然润乾报表也就轻而易举了。

基本方式为:A作为报表服务器,部署报表应用;B作为集算器服务器,部署集算器;A与B之间通过类似集群方式,A在报表内的脚本数据集作为主程序,通过callx调用B服务器的子程序(获取C数据、处理并返回计算结果),这样让集算器实现报表获取数据的通道。

 

具体实例参考(部署过程这里不介绍,可以参考相关文章):

1、 报表脚本数据集(主程序)定义

 

A

B

1

[192.168.1.104:4001]

 

2

=callx(“zi.dfx”,A1)

 

3

result A2.conj()

/多个节点机返回conj成一个序表

 

2、 集算器服务子程序(节点机)

 

A

B

1

=connect("demo")

/demo数据源在B内配置

2

=A1.query("select 订单ID,货主地区,货主城市,运货商,运货费 from 订单")

>A1.close()

3

result A2

 

 

3、 启动节点机(B)

在bin目录下找到esprocs.exe(wins下,linux是startunit.sh)启动即可。

4、 设计报表并查看结果

报表数据集用主程序

集算器为报表呈现提供数据通道

报表结果:

 集算器为报表呈现提供数据通道