以上介绍是我对业务描述的xml的介绍,下面该介绍我们是怎么来运行这个xml的业务描述的了。
首先,介绍一下我们采用的一些技术和工具。
1 ibatis-一个简单的orm工具。它很好的完成了将数据访问的实现逻辑写到xml文件中,以及它支持hashmap对象的使用。这两点是我们能实现通用的至关重要的两点。 因为,我们要实现java代码与业务无关那么我们代码应该与具体业务无关。第一步,我们通过使用ibatis基本实现将数据访问逻辑写道xml文件中,第二,在使用数据对象时候我们采用ibatis支持的hashmap。这样我们操作的就都是抽象的与具体业务无关的对象。
2 castor -一个对应于xml的orm工具。简化了我们对配置xml的读取工作
3 线程池-
4 对象池 -
5 Vfs 一个虚拟文件系统 重要用来实现我们的文件远程传输。
下图是对现在程序流程的一个简单描述
一 任务管理器
因为通用推送是针对不同的业务而言,我们通过配置文件来描述不同的推送任务。
二 单一业务的配置
以下是我们对单个任务的描述信息。
xml 代码
- <config>
- <task id="##" interval="300000">
- <source id="1" name="website" isTranstion="false" isMuTheard="true" futrueid="ID">
- <query id="sender.getAllHrWebsites" name="getAllHrWebsites" type="select"/>
- <source id="1.1" name="unsendedcompany" isTranstion="true" isMuTheard="false"
- interval="1000">
- <query id="sender.getUnsendedHrCompanies" name="getUnsendedHrCompanies" type="page"
- loggInfo="ID,COMPANY_NAME" maxField="ID">
- <fieldRef name="WEB_MAPID" parentref="MAP_ID"/>
- query>
- <update id="sender.insertHrCompanies" name="insertHrCompanies" type="insert"
- index="1"/>
- <update id="sender.updateSendedHrCompanies" name="updateSendedHrCompanies"
- type="update" index="2"/>
- <source id="1.1.1" name="unsendjob" isTranstion="false" isMuTheard="false"
- futrueid="">
- <query id="sender.getUnsendedPositions" name="getUnsendedPositions"
- type="select">
- <fieldRef name="WEB_MAPID" parentref="WEB_MAPID"/>
- <fieldRef name="COMP_ID" parentref="SEND_ID"/>
- query>
- <update id="sender.insertPositions" name="insertPositions" type="insert"
- index="1"/>
- <update id="sender.updateSendedPositions" name="updateSendedPositions"
- type="update" index="2"/>
- <source id="1.1.1.1" isMuTheard="false" isTranstion="false"
- name="unsendpositionsinc">
- <query id="sender.getPositionRegions" type="select"
- name="getPositionRegions"/>
- <update id="sender.insertRegions" name="insertRegions" type="insert"
- index="1"/>
- source>
- source>
- <source id="1.1.2" name="sendedjob" isTranstion="false" isMuTheard="false">
- <query id="sender.getSendedPositions" name="getSendedPositions" type="select"/>
- <update id="sender.updatePosition" name="updatePosition" type="insert" index="1"/>
- <update id="sender.updateSendedPositions" name="updateSendedPositions"
- type="update" index="2"/>
- source>
- source>
- <source id="1.2" name="sendedcompany" isTranstion="false" isMuTheard="false"
- interval="1000">
- <query id="sender.getSendedHrCompanies" name="getSendedHrCompanies" type="page"
- loggInfo="ID,COMPANY_NAME" maxField="ID">
- <fieldRef name="WEB_MAPID" parentref="MAP_ID"/>
- query>
- <source id="1.2.1" name="unsendjob" isTranstion="false" isMuTheard="false"
- futrueid="">
- <query id="sender.getUnsendedPositions" name="getUnsendedPositions"
- type="select">
- <fieldRef name="WEB_MAPID" parentref="WEB_MAPID"/>
- <fieldRef name="COMP_ID" parentref="SEND_ID"/>
- query>
- <update id="sender.insertPositions" name="insertPositions" type="insert"
- index="1"/>
- <update id="sender.updateSendedPositions" name="updateSendedPositions"
- type="update" index="2"/>
- <source id="1.2.1.1" isMuTheard="false" isTranstion="false" name="unsendregion">
- <query id="sender.getPositionRegions" type="select"
- name="getPositionRegions"/>
- <update id="sender.insertRegions" name="insertRegions" type="insert"
- index="1">
- <fieldRef name="POSITION_ID" parentref="SEND_ID"/>
- update>
- source>
- source>
- <source id="1.2.2" name="sendedjob" isTranstion="false" isMuTheard="false">
- <query id="sender.getSendedPositions" name="getSendedPositions" type="select"/>
- <update id="sender.updatePosition" name="updatePosition" type="insert" index="1"/>
- <update id="sender.updateSendedPositions" name="updateSendedPositions"
- type="update" index="2"/>
- source>
- source>
- source>
- task>
- config>
而我们的任务管理器是可以管理多个这样任务的。
分享到:
相关推荐
C# 后台 使用Http协议获取GET / 推送POST 数据的通用类
3. **消息处理**:dojo数据推送库提供了一套事件驱动的API,开发者可以注册回调函数来处理接收到的消息。这样,当服务器推送新数据时,相应的处理逻辑就会被触发。 4. **错误处理与重试机制**:在连接中断或失败时...
`jpush-client-3.3.9.jar`包含了极光推送的客户端接口和实现,而`jiguang-common-1.1.3.jar`则是通用的JIGUANG库,可能包含了网络通信、数据序列化等基础工具类。 8. **集成与使用** 开发者需要在项目中引入这两个...
【标题】"九戒站长统计营销广告推送工具CNZZ、百度统计、51LA通用版"涉及的关键知识点包括: 1. **站长统计工具**:这是一个专门为网站管理员设计的工具,帮助他们跟踪和分析网站流量、用户行为以及广告效果。在这...
最后,文档中还涉及了消息推送相关的数据结构,比如action_parameters是一个JSON格式的字段,用于存放传递给应用或网页的动作参数,限制为4K字符以内。 整个文档提供的信息对于开发者而言非常重要,它帮助开发者更...
接着,可以通过`JPushClient`发送推送,指定目标(全部设备、个别设备或标签),设定通知内容和附加数据。 总的来说,极光推送Java版通过其SDK和相关库,为开发者提供了便捷的推送功能,能够帮助开发者实现高效的...
- **登录态管理**:支持保持用户登录状态,便于进行个性化推送和数据分析。 3. **分享(JShare)** - **社交平台集成**:JPush 提供与主流社交平台的集成,如微信、QQ、微博等,方便用户分享内容。 - **分享接口...
7. 实现技术:推送系统整体架构中,涉及客户端、推送通道、消息总线、通用推送平台和消息处理等多个层面。其中,客户端需要适配不同的操作系统(如安卓和苹果),以确保推送通知能够覆盖所有用户。 8. 兴趣挖掘和...
《电信设备-通用多屏智能信息推送方法及装置》是一个涉及现代信息技术领域的专题,主要探讨的是如何在多种屏幕设备上实现智能化的信息推送。这个主题涵盖了通信技术、物联网、大数据处理和用户行为分析等多个方面,...
服务器发送事件(SSE)是一种允许服务器向浏览器持续发送事件的机制,通过HTTP连接保持打开状态,服务器可以不断地将新数据推送到客户端,而无需客户端发起新的请求。SSE具有低延迟、易于实现和良好的兼容性等特点,...
实现一个通用的kettle消息推送,于是想到通过钉钉机器人推送消息到钉钉群组,这样就可以方便配置封装成通用的消息推送的映射子转换,实现后面作业或转换的消息提醒或者异常告警通知。已完成测试源代码分析
根据提供的文件内容,以下是对“信鸽推送”相关知识点的详细解读: ### 信鸽推送概述 信鸽推送是一种通过REST API进行的服务,旨在为开发者提供稳定、高效的推送服务。开发者可以通过信鸽推送向用户终端设备发送...
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来实现基于ffmpeg的流媒体数据推送。ffmpeg是一个强大的开源工具集,用于处理音视频数据,包括编码、解码、转码、流化等操作。MFC是微软提供的...
4. `models`:定义推送通知的数据结构。 5. `utils`:通用工具函数,例如加密解密、日志记录等。 6. `README.md`:项目介绍和使用指南。 在实际开发过程中,我们还需要考虑以下方面: - 错误处理:确保在处理推送...
标题提到的"电信设备-基于行业数据词典的垂直搜索精准信息推送方法",是针对电信领域的一种特殊应用,旨在利用特定的数据处理和搜索策略,为用户提供更加精确、个性化的信息。以下是关于这个主题的详细解读。 一、...
1.7.7.jar`,这些都是极光推送服务的依赖库,它们分别用于Spring框架支持、日志记录、JSON序列化和反序列化、通用日志接口及其实现。开发者在使用极光推送时,需要确保这些依赖库被正确引入到项目中。 4. **Gson**...
- **公共参数**:设置通用的推送参数,如消息类型、标题、内容和自定义数据。 - **通知扩展功能参数**:包括华为角标、小米消息分类、OPPO消息分类、VIVO消息分类等,用于根据不同厂商的特性定制推送内容。 - **...
8. **合规性与法律法规**:电信设备推送信息必须符合各国的通信法规,如中国的信息安全管理规定,欧盟的GDPR(通用数据保护条例)等,确保合法合规运营。 综上所述,电信设备推送信息的方法涵盖了网络传输、消息...
3. 恢复设备的网络设置,这可以通过“设置”-“通用”-“还原”-“还原网络设置”来完成。这个操作不会导致设备变砖,但卡贴机用户不必担心。 4. 将证书包解压,使用iTunes或其他文件管理工具(如iTools)将四个文件...
Koala消息推送服务系统是一种专为互联网应用设计的高效、可靠的消息推送平台,它旨在提高用户体验,通过主动推送信息至客户端,避免了用户频繁地手动刷新来获取最新数据。在即时通讯场景中,如收到新消息时自动提示...