著录项信息
专利名称 | 二进制长对象流化数据处理装置和方法 |
申请号 | CN201210225126.X | 申请日期 | 2012-06-29 |
法律状态 | 暂无 | 申报国家 | 暂无 |
公开/公告日 | 2012-12-26 | 公开/公告号 | CN102841918A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 用友软件股份有限公司 | 申请人地址 | 北京市海淀区北清路68号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 用友网络科技股份有限公司 | 当前权利人 | 用友网络科技股份有限公司 |
发明人 | 刘应耀;邱冬强 |
代理机构 | 北京友联知识产权代理事务所(普通合伙) | 代理人 | 尚志峰;汪海屏 |
摘要
本发明提供一种二进制长对象流化数据处理装置和方法,其中,装置包括:数据库管理模块,从数据库中获取二进制长对象流化数据;对象资源管理模块,获取所述二进制长对象流化数据对应的对象资源;对象转换模块,通过所述对象资源,将所述二进制长对象流化数据转换为内存对象;展现模块,根据所述内存对象的类型,展现所述内存对象。通过本发明,由于获取了BLOB流化数据对应的对象资源,所以利用该对象资源可以顺利地将BLOB解析为内存对象,按其类型进行展现,通过本方案在多种复杂的业务场景下都可以顺利解析并展现BLOB数据。
1.一种二进制长对象流化数据处理装置,其特征在于,包括:
数据库管理模块,从数据库中获取二进制长对象流化数据;
对象资源管理模块,获取所述二进制长对象流化数据对应的对象资源;
对象转换模块,通过所述对象资源,将所述二进制长对象流化数据转换为内存对象;
展现模块,根据所述内存对象的类型,展现所述内存对象;
在所述内存对象被修改后,所述对象转换模块将所述内存对象转换为新的二进制长对象流化数据,并由所述数据库管理模块存储到所述数据库中。
2.根据权利要求1所述的二进制长对象流化数据处理装置,其特征在于,所述对象资源管理模块还设置对象资源库,存储所述对象资源的文件路径,并按照所述文件路径获取所述对象资源。
3.根据权利要求1所述的二进制长对象流化数据处理装置,其特征在于,所述展现模块在所述内存对象为图形类型时,以图形显示方式展现所述内存对象;和/或在所述内存对象为声音类型时,以音频播放方式展现所述内存对象;和/或在所述内存对象为其他类型时,以树形结构的文本方式展现所述内存对象。
4.根据权利要求1至3中任一项所述的二进制长对象流化数据处理装置,其特征在于,还包括:
文件保存模块,将所述内存对象存储为特定格式的文件。
5.一种二进制长对象流化数据处理方法,其特征在于,包括:
步骤202,从数据库中获取二进制长对象流化数据;
步骤204,获取所述二进制长对象流化数据对应的对象资源;
步骤206,通过所述对象资源,将所述二进制长对象流化数据转换为内存对象;
步骤208,根据所述内存对象的类型,展现所述内存对象;以及
在所述内存对象被修改后,将所述内存对象转换为新的二进制长对象流化数据并存储到所述数据库中。
6.根据权利要求5所述的二进制长对象流化数据处理方法,其特征在于,所述步骤204包括:
设置对象资源库,存储所述对象资源的文件路径;
按照所述文件路径获取所述对象资源。
7.根据权利要求5所述的二进制长对象流化数据处理方法,其特征在于,所述步骤208包括:
在所述内存对象为图形类型时,以图形显示方式展现所述内存对象;和/或在所述内存对象为声音类型时,以音频播放方式展现所述内存对象;和/或在所述内存对象为其他类型时,以树形结构的文本方式展现所述内存对象。
8.根据权利要求5至7中任一项所述的二进制长对象流化数据处理方法,其特征在于,还包括:
将所述内存对象存储为特定格式的文件。
二进制长对象流化数据处理装置和方法\n技术领域\n[0001] 本发明涉及计算机技术领域,具体而言,涉及一种二进制长对象流化数据处理装置和一种二进制长对象流化数据处理方法。\n背景技术\n[0002] 一些大型业务产品很多复杂业务模型、文件、图片等复杂信息都是存储在数据库BLOB(二进制长对象)字段中。而在一些项目的产品升级等操作过程中,因为项目数据的特殊性或产品BUG等原因会导致有些BLOB字段信息数据不对。而BLOB字段的特殊性导致这些数据不能用通过普通的数据库工具直接更改数据库数据来修正错误,项目现场的实施人员因为没有源代码,不熟悉开发环境等客观原因无法通过程序来解决。所以出现此类问题,项目实施人员只能将客户数据库导出,然后通过ftp等传给开发部门,开发部门通过程序跟踪处理。如果客户禁止数据库导出,就只能请求产品开发人员去现场支持。\n[0003] 数据库流化信息存储通常使用BLOB字段。BLOB是指二进制长对象。BLOB是一个大文件,典型的BLOB是一张图片或某中格式的数据文件。数据库处理Blob字段的主要策略是不用理会文件是什么,而只关心如何存储它。这样就直接导致BLOB字段一旦写入,就无法像其他字段一样可以被传统的数据库管理工具查看和修改。从而直接导致在下述场景中BLOB字段成为应用瓶颈:\n[0004] 1)程序开发过程中程序员需要查看BLOB存储的业务信息;\n[0005] 2)程序开发过程中,因为程序逻辑的尚不完整,会造成BLOB数据的异常,这时就需要直接查看BLOB数据信息,确定数据何处异常,从而协助程序逻辑修正;\n[0006] 3)因为程序错误或系统升级等原因,需要手工修正BLOB数据;\n[0007] 4)在项目现场等场合,在没有程序源代码以及开发环境时,需要手工快速修正BLOB数据。\n[0008] 5)需要将BLOB流化信息导出为第三方文件格式;\n[0009] 6)BLOB流化数据不能像其他数据文件一样通过邮件等方式进行文件传递。而在软件开发或软件产品使用过程中,往往需要将BLOB信息进行备份/传阅等操作。\n[0010] 因此,需要一种新的技术方案,能够保证多种不同的业务场景,仍然可以顺利获取BLOB流化数据,并保证能够为用户将所述BLOB数据以合适方式展现,并供用户对数据进行操作。\n发明内容\n[0011] 本发明所要解决的技术问题在于,提供一种新的技术方案,能够保证多种不同的业务场景,仍然可以顺利获取BLOB流化数据,并保证能够为用户将所述BLOB数据以合适方式展现,并供用户对数据进行操作。\n[0012] 有鉴于此,本发明提供一种二进制长对象流化数据处理装置,包括:数据库管理模块,从数据库中获取二进制长对象流化数据;对象资源管理模块,获取所述二进制长对象流化数据对应的对象资源;对象转换模块,通过所述对象资源,将所述二进制长对象流化数据转换为内存对象;展现模块,根据所述内存对象的类型,展现所述内存对象。在该技术方案中,由于获取了BLOB流化数据对应的对象资源,所以利用该对象资源可以顺利地将BLOB解析为内存对象,按其类型进行展现,通过本方案在多种复杂的业务场景下都可以顺利解析并展现BLOB数据。\n[0013] 在上述技术方案中,优选地,在所述内存对象被修改后,所述对象转换模块将所述内存对象转换为新的二进制长对象流化数据,并由所述数据库管理模块存储到所述数据库中。在该技术方案中,如果用户根据为其展现的内容,对内存对象进行了修改,则本方案可以根据用户的修改更新数据库中BLOB流化数据,保证用户可以在多种业务场景下对BLOB流化数据进行修改操作。\n[0014] 在上述技术方案中,优选地,所述对象资源管理模块还设置对象资源库,存储所述对象资源的文件路径,并按照所述文件路径获取所述对象资源。在该技术方案中,可以预置对象资源的路径,则可以保证随时可以获取对象资源,以将BLOB流化数据处理为内存对象,并进行展现。\n[0015] 在上述技术方案中,优选地,所述展现模块在所述内存对象为图形类型时,以图形显示方式展现所述内存对象;和/或在所述内存对象为声音类型时,以音频播放方式展现所述内存对象;和/或在所述内存对象为其他类型时,以树形结构的文本方式展现所述内存对象。在该技术方案中,针对不同类型的内存对象,提供了不同的展现方式,以保证用户能够清楚了解BLOB流化数据。\n[0016] 在上述技术方案中,优选地,还包括:文件保存模块,将所述内存对象存储为特定格式的文件。在该技术方案中,还可以为用户将内存对象导出为第三方文件,以满足用户备份或使用的需要。\n[0017] 本发明还提供一种二进制长对象流化数据处理方法,包括:步骤202,从数据库中获取二进制长对象流化数据;步骤204,获取所述二进制长对象流化数据对应的对象资源;\n步骤206,通过所述对象资源,将所述二进制长对象流化数据转换为内存对象;步骤208,根据所述内存对象的类型,展现所述内存对象。在该技术方案中,由于获取了BLOB流化数据对应的对象资源,所以利用该对象资源可以顺利地将BLOB解析为内存对象,按其类型进行展现,通过本方案在多种复杂的业务场景下都可以顺利解析并展现BLOB数据。\n[0018] 在上述技术方案中,优选地,还包括:在所述内存对象被修改后,将所述内存对象转换为新的二进制长对象流化数据并存储到所述数据库中。在该技术方案中,如果用户根据为其展现的内容,对内存对象进行了修改,则本方案可以根据用户的修改更新数据库中BLOB流化数据,保证用户可以在多种业务场景下对BLOB流化数据进行修改操作。\n[0019] 在上述技术方案中,优选地,所述步骤204包括:设置对象资源库,存储所述对象资源的文件路径;按照所述文件路径获取所述对象资源。在该技术方案中,可以预置对象资源的路径,则可以保证随时可以获取对象资源,以将BLOB流化数据处理为内存对象,并进行展现。\n[0020] 在上述技术方案中,优选地,所述步骤208包括:在所述内存对象为图形类型时,以图形显示方式展现所述内存对象;和/或在所述内存对象为声音类型时,以音频播放方式展现所述内存对象;和/或在所述内存对象为其他类型时,以树形结构的文本方式展现所述内存对象。在该技术方案中,针对不同类型的内存对象,提供了不同的展现方式,以保证用户能够清楚了解BLOB流化数据。在该技术方案中,针对不同类型的内存对象,提供了不同的展现方式,以保证用户能够清楚了解BLOB流化数据。\n[0021] 在上述技术方案中,优选地,还包括:将所述内存对象存储为特定格式的文件。在该技术方案中,还可以为用户将内存对象导出为第三方文件,以满足用户备份或使用的需要。\n[0022] 通过以上技术方案,可以实现一种二进制长对象流化数据处理装置和一种二进制长对象流化数据处理方法,能够保证多种不同的业务场景,仍然可以顺利获取BLOB流化数据,并保证能够为用户将所述BLOB数据以合适方式展现,并供用户对数据进行操作。\n附图说明\n[0023] 图1是根据本发明的一个实施例的二进制长对象流化数据处理装置的框图;\n[0024] 图2是根据本发明的一个实施例的二进制长对象流化数据处理方法的流程图;\n[0025] 图3是将不同数据存储为二进制长对象流化数据的示意图;\n[0026] 图4是根据本发明的一个实施例的二进制长对象流化数据处理装置展现二进制长对象流化数据的示意图;\n[0027] 图5是根据本发明的一个实施例的二进制长对象流化数据处理装置的工作示意图;\n[0028] 图6至图10是根据本发明的一个实施例的二进制长对象流化数据处理装置的界面截图。\n具体实施方式\n[0029] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。\n[0030] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。\n[0031] 图1是根据本发明的一个实施例的二进制长对象流化数据处理装置的框图[0032] 如图1所示,本发明提供一种二进制长对象流化数据处理装置100,包括:数据库管理模块102,从数据库中获取二进制长对象流化数据;对象资源管理模块104,获取所述二进制长对象流化数据对应的对象资源;对象转换模块106,通过所述对象资源,将所述二进制长对象流化数据转换为内存对象;展现模块108,根据所述内存对象的类型,展现所述内存对象。在该技术方案中,由于获取了BLOB流化数据对应的对象资源,所以利用该对象资源可以顺利地将BLOB解析为内存对象,按其类型进行展现,通过本方案在多种复杂的业务场景下都可以顺利解析并展现BLOB数据。\n[0033] 在上述技术方案中,在所述内存对象被修改后,所述对象转换模块106将所述内存对象转换为新的二进制长对象流化数据,并由所述数据库管理模块102存储到所述数据库中。在该技术方案中,如果用户根据为其展现的内容,对内存对象进行了修改,则本方案可以根据用户的修改更新数据库中BLOB流化数据,保证用户可以在多种业务场景下对BLOB流化数据进行修改操作。\n[0034] 在上述技术方案中,所述对象资源管理模块104还设置对象资源库,存储所述对象资源的文件路径,并按照所述文件路径获取所述对象资源。在该技术方案中,可以预置对象资源的路径,则可以保证随时可以获取对象资源,以将BLOB流化数据处理为内存对象,并进行展现。\n[0035] 在上述技术方案中,所述展现模块108在所述内存对象为图形类型时,以图形显示方式展现所述内存对象;和/或在所述内存对象为声音类型时,以音频播放方式展现所述内存对象;和/或在所述内存对象为其他类型时,以树形结构的文本方式展现所述内存对象。\n在该技术方案中,针对不同类型的内存对象,提供了不同的展现方式,以保证用户能够清楚了解BLOB流化数据。\n[0036] 在上述技术方案中,还包括:文件保存模块110,将所述内存对象存储为特定格式的文件。在该技术方案中,还可以为用户将内存对象导出为第三方文件,以满足用户备份或使用的需要。\n[0037] 图2是根据本发明的一个实施例的二进制长对象流化数据处理方法的流程图。\n[0038] 如图2所示,本发明还提供一种二进制长对象流化数据处理方法,包括:步骤202,从数据库中获取二进制长对象流化数据;步骤204,获取所述二进制长对象流化数据对应的对象资源;步骤206,通过所述对象资源,将所述二进制长对象流化数据转换为内存对象;步骤208,根据所述内存对象的类型,展现所述内存对象。在该技术方案中,由于获取了BLOB流化数据对应的对象资源,所以利用该对象资源可以顺利地将BLOB解析为内存对象,按其类型进行展现,通过本方案在多种复杂的业务场景下都可以顺利解析并展现BLOB数据。\n[0039] 在上述技术方案中,还包括:在所述内存对象被修改后,将所述内存对象转换为新的二进制长对象流化数据并存储到所述数据库中。在该技术方案中,如果用户根据为其展现的内容,对内存对象进行了修改,则本方案可以根据用户的修改更新数据库中BLOB流化数据,保证用户可以在多种业务场景下对BLOB流化数据进行修改操作。\n[0040] 在上述技术方案中,所述步骤204包括:设置对象资源库,存储所述对象资源的文件路径;按照所述文件路径获取所述对象资源。在该技术方案中,可以预置对象资源的路径,则可以保证随时可以获取对象资源,以将BLOB流化数据处理为内存对象,并进行展现。\n[0041] 在上述技术方案中,所述步骤208包括:在所述内存对象为图形类型时,以图形显示方式展现所述内存对象;和/或在所述内存对象为声音类型时,以音频播放方式展现所述内存对象;和/或在所述内存对象为其他类型时,以树形结构的文本方式展现所述内存对象。在该技术方案中,针对不同类型的内存对象,提供了不同的展现方式,以保证用户能够清楚了解BLOB流化数据。在该技术方案中,针对不同类型的内存对象,提供了不同的展现方式,以保证用户能够清楚了解BLOB流化数据。\n[0042] 在上述技术方案中,还包括:将所述内存对象存储为特定格式的文件。在该技术方案中,还可以为用户将内存对象导出为第三方文件,以满足用户备份或使用的需要。\n[0043] 以下结合实施例详细说明本发明的技术方案,约定术语如下:\n[0044] 程序加工:指通过程序代码进行数据的加工处理过程;\n[0045] 流化存储:指将二进制数据存入到数据库的BLOB类型字段,java/C++等编程语言均提供了标准的接口来实现流化操作,将不同类型的数据存储为BLOB流化数据的示意图如图3所示;\n[0046] BLOB流化数据:指流化存储后的数据;\n[0047] 内存对象:指特定计算机语言对文件/图像等数据类型实例的定义和表述方式。\n[0048] 在本发明的一个实施例中,BLOB解析引擎(相当于前述的二进制长对象流化数据处理装置)执行流程如图4所示,将BLOB流化数据展现为以不同形式进行展现,以下具体说明BLOB解析引擎的原理。\n[0049] 流程说明如下:\n[0050] 技术方案说明如图5所示:\n[0051] 1、先通过数据源管理模块进行数据源定义,动态管理和切换需要加载BLOB的数据库资源,SQL执行器502(相当于前述的数据库管理模块)可以在选定的数据源上实行手工编写的SQL,从而读取BLOB字段的数据信息;\n[0052] 2、BLOB流化对象都对应着某种数据文件格式,如文本文件,图像文件,声音文件,以及某种编程语言的内存对象。加载BLOB数据时,需要知道BLOB数据使用到该编程语言的哪些对象资源。通过BLOB对象资源库504(相当于前述的对象资源管理模块)来管理这些对象资源的类路径;\n[0053] 3、根据第二步定义的对象资源库,BLOB加载器506(相当于前述的对象转换模块)将二进制的BLOB数据转换为编程语言的内存对象;\n[0054] 4.根据内存对象类型的不同,数据对象查看器508(相当于前述的展现模块)使用不同的方式进行展现:如果是图形类型,直接进行图形展现;声音类型,直接进行播放;其他类型内存对象,根据对象内部引用层次关系,分解为一个树结构,以树结构形式进行对象展现;\n[0055] 5、如果需要,对树型结构展现形态的内存模型,可以直接修改该内存对象的属性值,然后调度SQL执行器502进行修改内容的保存;\n[0056] 6、同时支持将该内存对象另存为xml文件等第三方文件格式。\n[0057] 举例说明,有报表模型CellsModel,模型包含一个name属性来记录报表名称,默认值为default,java语言实现的类结构如下:\n[0058]\n[0059] 此业务模型存储为数据库表bap_report的model字段,字段类型为BLOB类型,另有主键字段PK,字段类型为字符类型。现有一报表模型已经存储到数据库表中,pk值为“demo1”。通过本技术方案修改name属性,流程如下:\n[0060] 1、在数据源管理中,确定该数据库连接,保证可读取数据表bap_report的信息;手工编写sql语句如下:\n[0061] Select model from bap_report where pk=‘demo1’\n[0062] 则能读取该业务模型的二进制字节流数据;\n[0063] 2、修改BLOB类资源库,将CellsModel类文件的路径添加到资源库;\n[0064] 3、利用java语义的ClassLoader机制加载定义好的资源库,即可找到CellsModel类,这样就可将第一步读取的二进制信息,反序列化为CellsModel内存对象;\n[0065] 4、构建一个树结构,根节点为CellsModel类名,子节点为其包含的属性name,通过java类反射机制,读取属性name的值“default”;\n[0066] 5、构建文本编辑器,录入新的值“NewName”,通过java类反射机制,回写属性name的值“NewName”,即修改了CellsModel内存对象的name属性的值;\n[0067] 6、将新的内存对象序列化为二进制数组,调用如下SQL将值回写到数据库:\n[0068] update bap_report set model=?where pk=‘demo1’\n[0069] 如需要另存为外部文件,对此二进制数组做相应转换操作即可。\n[0070] 上述技术方案与数据库中BLOB流化数据的业务含义没有任何关系,该方案可以操作任何业务含义的BLOB数据,实现了不用关心任何具体业务逻辑即可以完成流化业务数据的查看/编辑/导出。该方案充分保证了数据库的BLOB字段也可以像varchar等普通数据类型字段一样,进行独立于业务的可视化的查看/编辑/转存。\n[0071] 根据本发明的实施例的二进制长对象流化数据处理装置,经过系列项目现场的使用和验证,满足BLOB信息的可视化查看和修改要求。方案步骤如下:\n[0072] 1、如图6所示,配置数据源:\n[0073] 指定数据源名称、驱动、链接、用户及密码,并测试通过;\n[0074] 2、如图7所示,配置java库类路径:\n[0075] 配置blob信息涉及到的java类路径和jar包路径;\n[0076] 3、如图8所示,加载BLOB信息:\n[0077] 拼写SQL语句,在定义的数据源上执行,查找到相关BLOB信息,并加载对应BLOB字段;\n[0078] 4、如图9所示,将BLOB数据以树形结构展现:\n[0079] 根据java类反射机制,将BLOB存储的业务模型的各属性以层级关系展现;\n[0080] 5、如图10所示,属性值可以通过编辑器进行编辑和保持\n[0081] 针对m_dirty属性进行值编辑,编辑完成后通过工具栏“保存”按钮保存。\n[0082] 综上所述,通过本发明,实现了一种数据库BLOB字段的可视化操作解决方案,可以直接访问数据库读取BLOB字段,并对BLOB流化信息进行解析,可以通过图形界面直观的查看/修改,从而很好地解决了BLOB字段上述应用难题,其特点是:支持任何业务内容的流化存储内容的读写操作;动态解析BLOB流化内容;图形化界面浏览BLOB流化信息;支持流化内容修改;支持流化内容的导出和格式转存。\n[0083] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2017-05-24
- 2016-05-04
- 2015-11-25
著录事项变更
申请人由用友软件股份有限公司变更为用友网络科技股份有限公司
地址由100094 北京市海淀区北清路68号用友软件园变更为100094 北京市海淀区北清路68号
- 2013-02-13
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201210225126.X
申请日: 2012.06.29
- 2012-12-26
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-01-20
|
2009-08-26
| | |
2
| |
2011-09-21
|
2010-03-09
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |