现在有这样的一个需求,我们做的系统有一个监控模块,这个模块定期会采集别的系统数据,然后我们系统对采集回来的数据进行分析,作出一些报告什么的。
例如:监控模块每天00:00采集营销管理系统的各部门的日营业额,各部门的人员出勤情况等。采集物流系统中每个物流站点的日订单量,出货量等。(说明:各系统是独立的,是由不同的公司开发的,但属于同一用户)

问题:我们的系统如何和相关的外系统进行数据交互,也就是数据交互接口怎么设计?

目前我们有两种方案,大家帮忙看看各自优缺点,到底哪种更适合一些。

方案1:采用EJB同步调用,基于XML报文交互。
该方案事先各方定义好接口规范,使用时直接调用外系统提供的接口,传入的参数是字符串,字符串实际上就是一个 XML,里面包含此次数据交互的一些请求参数,比如数据的类型(什么数据),部门,数据的时间等,外系统根据请求参数查询自己的数据库,准备好数据后,组成一个XML字符串,再给我返回,我把返回的XML字符串解析后进行处理。

方案2:采用中间库
该方案是在我们系统和外系统之间建立一个中间数据库,外系统定期将我们需要的数据从自己数据库中抽取出来放到中间库里,我们系统再定期去中间库取数据。

我现在的理解是:
使用方案1扩展容易,使用简单,就调用一个接口方法,XML报文编辑,解析有现成的代码。

使用方案2中间库的数据存储复杂(采集的数据全是异构),从外系统到中间库,再从我们系统到中间库可能要使用存储过程,导致大量的存储过程,维护就变复杂了,并且开发难度也有所上升(存储过程感觉还得由有经验的高手来写),这样工作会变难。

之前没用过存储过程,不知道上面说的对不对,请大家帮忙看看这两个方案的优缺点,哪个更合理?哪个工作量更小一点。或者有更好的方案,欢迎大家多多讨论,谢谢大家了