需求:
有系统 A, B. 用户在A中做某一业务操作时往B实时集成信息,以在B中创建审批电子流。
要求:
不能对同样的业务信息,创建多个电子流。
若检查到已存在电子流,不能再创建电子流也必须邮件通知用户。
若创建电子流成功时,必须邮件通知用户。
当前方案:
采用XML+JMS + 消息驱动Bean做集成。 A把业务单据信息用XML格式发送到MQ服务器, B从服务器接收后做如下处理。
设计如下,
首先设计表:
TABLE1 主要有一个clob字段来存放XML内容, 该表的意图是,存放原始的集成内容
TABLE2 XML中包含的个字段。该表的设计意图是,提供页面或直接用SQL就可查看集成的信息,并且当不满足创建电子流条件时,可标识存放一下提示信息。
TABLE3 在为电子流对应为正式的业务表,基本字段和TABLE2的字段一样。
处理的流程:
把完整XML存到表TABLE1中。
解析XML文件成对应的数据,并存放到表TABLE2中
根据某一标识检查电子流(基本是在TABLE3表中查看是否存在相同标识的记录)是已创建电子流,如是则4,否则5
发送错误提示信息
创建电子流,并发送邮件
现在我在考虑,
1.把这些处理全放在MDBean的onMessage方法中呢,
2.还是把它们分为
1)在MDB中只处理1和2。
2)3至5由另外一个定时调度程序来做。调度程序每隔几分钟,扫描TABLE2, 从中取出未处理的集成数据,在做3至5的动作。
对于2就没那么实时,不过两三分钟还是符合要求,但定时调度每次可能就会处理多条数据,不像在接收到信息时处理那样直接,一次处理一条数据。之所以想采用第二种方式,是觉得把这些操作放再一起不大好,想把接收数据,和与接收后相关处理分开。