MQ技术文档

来源:互联网 发布:校园网络投标书 编辑:程序博客网 时间:2024/06/14 07:25

1.1接口使用范围

         在对herp人员信息和部门信息进行增加、删除、修改操作时,触发接口将信息以一定的格式传入到队列当中。

1.2人员变动触发说明

         1.2.1对人员信息进行增加操作

              当对人员信息进行增加操作时herp在后台程序中执行的action如下图所示:


图1.2.1

 注:该action为对人员信息操作(人员信息增加、人员信息修改)专用action

然后在herp源码中对应的路径下找到该action的.Java文件,当对herp系统的sys_emp(人员信息表)操作时在此Java类中的execute方法中进行如下操作:


图1.2.2

先判断是否是对人员表进行操作,然后再利用布尔型变量(isUpdate)进行判断对人员信息表进行的是增加还是修改操作顾名思义当为true时进行的是修改操作相反当为false的时候对信息表进行的是增加的操作。在此方法中可以利用BaseVO vo = new BaseVO(request) 对象vo调取BaseVo中的get(“name”)方法即可获取到前台对人员信息操作时传过来的name相对应的value值,在此我处理的方式是将vo对象作为参数传入了新建的一个类中在此类中创建了方法getInformation()将得到的前台传过来的值在此方法拼接成xml的格式返回如下图所示:




图1.2.3

在拼接时节点名称是由接口接受方来确定,然后将拼接完成的xml格式利用

图1.2.4

mqSendSample类中的testSend方法发送到队列中(mqSendSample类是服务端提供模板)至此对人员操作的接口接收数据到发送数据已经完成。

1.2.2对人员信息进行修改操作

         对人员的修改和对人员的增加走的action和调用的拼接方法完全一样所以修改可以参照增加的流程。(参考1.2.1)

1.2.3对人员信息进行删除操作

当对人员信息进行删除操作时herp在后台程序中执行的action如下图所示:


图1.2.5

在对人员进行删除操作时程序走的是directAction,此类调用的BaseRo类


图1.2.6

在接收数据对数据操作时在BaseRo(BaseRo为herp默认的action当节点后面没有type时程序自动走BaseRo类)中进行


图1.2.7

在BaseRo中的exec方法中定义一个获取前台sqlID的字符串String id= value.getID();

该id得到的就是前台需求运行的sqlID,然后利用调用的sqlid作对比判断(在此用到的删除的sqlid和前台删除按钮的下调用的ID不同在后台拼接了一个字符串)由于前台删除人员信息时是利用empid进行删除的所以利用该value对象(类似增加的人员信息的vo对象都是BaseVo中的对象)调用get(”name”)方法只能获取到empid所以需要在操作删除时先去数据库查询出来删除人员的信息拼接成xml格式具体方法如下:



图1.2.8

其中用到的GetInfoBySql类是自己新增的一个获取查询数据返回一个二维数组结果集的类该类中就只有一个方法如下图:


图1.2.9

注意:根据empid去herp数据库查询人员信息和发送到队列这些动作要发生在herp原有的删除动作提交事务之前。

         发送方式参考人员增加时的发送方式就可以了。

1.2.4对人员信息进行批量修改操作

      对人员进行批量修改拼接和查询方式可以参考对人员信息删除操作(1.2.3)修改的条件和删除的条件都是empid,不同的是对人员进行批量修改时1、同样和人员删除一样程序走的都是BaseRo类但是批量修改走的该类中的execDirectData()方法。2、批量修改时传过来的是以xml形式传过来多个empid,在此有多种方式获取每一个empid,可以根据字符节点截取也可以把xml拼完整之后进行解析(我利用的解析,有同事利用的截取方法):


图1.2.10

剩下的拼接和发送就可以完成参照对人员信息删除操作了。

1.3部门变动触发说明

1.3.1对部门信息增加、修改、删除操作

                   对部门信息增加、修改、删除都是走的BaseRo类所以拼接、发送方式和对人员信息删除操作类似


图1.3.1

在此定义的int类型的变量是用于区分操作的拼接方式如下图:



图1.3.2

发送方式和之前的发送一样。

1.4测试和使用说明

         咱们的herp是没有源码的所以在测试或者使用的时候就要把之前写的Java类编译成class文件,然后将class文件放在对应的root包路径ROOT\WEB-INF\classes下,如果该路径下没有源码的路径就需要自己来创建路径,每一次测试都需要先编译成class文件然后再把root下对应的class文件替换掉,重启服务,所以看有没有成功就需要把拼接的xml和发送的状态以日志的形式打印在log日志中来分辨拼接的格式和发送的状态。

 


0 0
原创粉丝点击