通过触发器实现数据监控上报数据插件

由于我们公司的需要,需要对我们公司的产品数字法庭上报数据到资源管理中心,由于数字法庭产品经历了多个小版本和大版本,因此对于统一的上报数据插件代码编写起来没办法很好的兼容。因此我们采取了通过触发器的方式来监控需要上报的数据。

目前我们公司在数字法庭上主要有两个大版本:4.0以及6.0

现在以用户为例:

1、新建表,用来存储监控到的信息。

zjidint
mkvarchar
mkidchar
czvarchar
sjcchar

zjid:该条监控的id(唯一)
mk:记录监控的模块
mkid:对应表的id(用户对应的是用户表中自己的id)
cz:insert、update、delete操作
sjc:操作数据的时间戳,用于数据优化及判断优先级
2、添加触发器:添加存储过程
DELIMITER $$

USE `huanghpa`$$

DROP PROCEDURE IF EXISTS `syn_fy_cjzjb_proce`$$

CREATE DEFINER=`root`@`%` PROCEDURE `syn_fy_cjzjb_proce`(IN module VARCHAR(15),IN moduleId CHAR(36),IN methodType VARCHAR(6))
BEGIN
	INSERT  INTO `fy_cjzjb`(`mk`,`mkid`,`cz`,`sjc`) VALUES (module,moduleId,methodType,NOW());
    END$$

DELIMITER ;

3 、新建触发器add、update、delete

a、addUser
DELIMITER $$

USE `huanghp`$$

DROP TRIGGER /*!50032 IF EXISTS */ `addUser_trigger`$$

CREATE
    /*!50017 DEFINER = 'root'@'%' */
    TRIGGER `addUser_trigger` AFTER INSERT ON `pt_yh` 
    FOR EACH ROW BEGIN
	CALL `syn_fy_cjzjb_proce`("user",new.yhid,"INSERT");
    END;
$$

DELIMITER ;

b、updateUser
DELIMITER $$

USE `huanghp`$$

DROP TRIGGER /*!50032 IF EXISTS */ `updateUser_trigger`$$

CREATE
    /*!50017 DEFINER = 'root'@'%' */
    TRIGGER `updateUser_trigger` AFTER UPDATE ON `pt_yh` 
    FOR EACH ROW BEGIN
	CALL `syn_fy_cjzjb_proce`("user",new.yhid,"UPDATE");
    END;
$$

DELIMITER ;

c、deleteUser

不举例说明


4、在java中通过一个线程每隔10S去获取一次监控表,并通过SJC对同一数据(一个用户其实可以认为是一个对象,每次发送只发送最后操作,避免接收端因为接受处理导致同步出现问题)。

5、将获取的表数据通过调度类分发到各自的处理类进行处理
<bean id="reportHandlerManager" class="cn.chnsys.cmsReport.ReportHandlerManager">
		<!-- 协议映射对象 -->
		<property name="protocolHandlerMap">
			<map>
				<entry key="courtRoom" value-ref="courtRoomProtocolHandler" />
				<entry key="trialPublish" value-ref="trialPublishHandler" />
				<entry key="trialLive" value-ref="trialLiveHandler" />
				<entry key="trialVod" value-ref="trialVodHandler" />
				<entry key="trialModify" value-ref="trialModifyHandler" />
				<entry key="alarmInfo" value-ref="alarmHandler" />
				<entry key="caseInfo" value-ref="caseInfoProtocolHandler" />
				<entry key="encode" value-ref="encodeProtocolHandler" />
				<entry key="decode" value-ref="decodeProtocolHandler" />
				<entry key="encodeChannel" value-ref="encodeChannelProtocolHandler" />
				<entry key="decodeChannel" value-ref="decodeChannelProtocolHandler" />
				<entry key="server" value-ref="streamServerProtocolHandler" />
				
				
				<entry key="user" value-ref="userProtocolHandler" />
				<entry key="job" value-ref="jobProtocolHandler" />
				<entry key="department" value-ref="departmentProtocolHandler" />
			</map>
		</property>
		
	</bean>

调度对象获取的模块名及对应的操作进行相应的处理,并发送给上级!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值