具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
下面参考附图描述本公开实施例的统计已创建文档数的方法和装置。
各个企业通常使用在线文档来记录会议以及输出方案等,个人用户也存在使用在线文档的需求。根据在线文档产品的设定,对于使用在线文档的企业用户和个人用户,通常根据企业用户和个人用户的权益来设定其可创建文档的总数。比如,对于未付费的企业用户,设定其可创建在线文档的总数为100篇文档,对于普通付费企业用户,设定其可创建在线文档的总数为2000篇文档等。因此,需要一种方案能够准确统计出企业用户或个人用户已创建的文档数,以在已创建的文档数达到可创建在线文档总数时,拒绝其继续创建在线文档。本公开便提出了一种能够准确统计出用户已创建文档数的方案。
图1为本公开一实施例提出的统计已创建文档数的方法的流程示意图,该方法可以由本公开实施例提出的统计已创建文档数的装置执行,该统计已创建文档数的装置可以安装于台式电脑、笔记本电脑、智能手机、平板电脑等可进行在线文档创建与编辑的电子设备中。
如图1所示,该统计已创建文档数的方法包括以下步骤:
步骤101,监听数据库对应的日志消息,日志消息中携带操作数据库的操作类型以及当前用户的身份标识。
本公开实施例中,可以为在线文档编辑产品(在线文档编辑软件或在线文档编辑网页)设置相应的关系数据库管理系统,其中,关系数据库管理系统包括数据库和数据库管理系统软件,数据库维护对应的二进制日志,比如数据库可以是MySQL数据库,用来存放企业用户和个人用户的数据信息,MySQL数据库维护binlog日志,对应地,数据库管理系统软件可以是SQL Server。当用户在在线文档编辑产品中新建或删除一个在线文档,或者用户修改了某篇已创建的在线文档时,SQL Server在MySQL数据库中写入、删除或修改对应地记录信息,并在记录完成后在binlog日志中新增对应的日志信息,并生成对应的日志消息发送给统计已创建文档数的装置。
其中,日志消息中携带操作数据库的操作类型以及当前用户的身份标识,当前用户的身份标识可以是用户标识和/或当前用户所属企业的租户标识,用户标识能够唯一标识个人用户,租户标识能够唯一标识企业用户。能够理解的是,企业用户与个人用户可以是一对多的关系,也就是说,同一个企业用户下可以包括多个个人用户。当用户新创建了一篇在线文档时,数据库中会新增一条记录,对应的操作数据库的操作类型为添加操作;当用户删除了一篇已创建在线文档时,数据库中与该已创建在线文档对应的记录会被删除,对应的操作数据库的操作类型为删除操作。
举例而言,当用户成功创建了一篇在线文档后,MySQL数据库中用户创建文档表里会相应地增加一条记录信息,以标识在线文档已经成功创建,其中,记录信息中可以包括当前用户的身份标识、所创建的在线文档的文档标识等信息。MySQL数据库中的记录信息添加完成后,binlog日志中会新增一条增加记录信息的日志信息,并生成日志消息。关系数据库管理系统将日志消息发送给统计已创建文档数的装置。
本公开实施例中,统计已创建文档数的装置可以实时或周期性地监听数据库对应的日志消息。
步骤102,若监听到日志消息,则对日志消息进行解析,获取操作类型和身份标识。
本公开实施例中,统计已创建文档数的装置监听到日志消息后,可以对日志消息进行解析,以从日志消息中提取出操作类型和身份标识。
步骤103,若操作类型为预设类型,则根据操作类型,对与身份标识对应的已创建文档数进行调整。
其中,预设类型可以预先设定,预设类型可以为添加操作和删除操作。
本公开实施例中,统计已创建文档数的装置从消息日志中获取了操作类型和身份标识后,可以判断操作类型是否为添加操作或删除操作,进而根据操作类型对与身份标识对应的已创建文档数进行调整。
具体地,当操作类型为添加操作时,统计已创建文档数的装置将与身份标识对应的已创建文档数累加一;当操作类型为删除操作时,统计已创建文档数的装置将与身份标识对应的已创建文档数减一。
具体实现时,针对个人用户,可以统计与用户标识对应的个人已创建文档数;针对企业用户,可以统计与租户标识对应的企业一创建文档数。从而,当统计已创建文档数的装置从日志消息中获取的身份标识中包括租户标识时,可以根据操作类型对与租户标识对应的企业已创建文档数进行调整;当统计已创建文档数的装置从日志消息中仅获取到用户标识,且根据用户标识未查找到当前用户所属的租户标识时,可以确定当前用户为个人用户,根据操作类型对与用户标识对应的个人已创建文档数进行调整。
本公开实施例的统计已创建文档数的方法,通过监听数据库对应的日志消息,日志消息中携带操作数据库的操作类型以及当前用户的身份标识,若监听到日志消息,则对日志消息进行解析,获取操作类型和身份标识,若操作类型为预设类型,则根据操作类型,对与身份标识对应的已创建文档数进行调整。由此,无需在业务代码中增加计数逻辑,达到了在不侵占业务代码的情况下进行计数,实现了异步消费模式统计已创建文档数,方便扩展到其他有计数需求的方案中,可扩展性强,且通过监听日志消息来进行计数,能够及时抓住计数时机,保证计数的实时性,由于不侵占业务代码,在业务代码故障的情况下仍能完成计数,保证了计数结果与实际已创建文档数量的统一,实现最终一致性,提高了计数的准确性。
统计已创建文档数的目的在于,当用户创建在线文档时,通过判断该用户已创建文档数是否达到可创建在线文档总数,来决定是否允许该用户创建在线文档。从而,在本公开实施例一种可能的实现方式中,如图2所示,在如图1所示实施例的基础上,步骤103之后,还可以包括以下步骤:
步骤201,接收在线文档创建请求,在线文档创建请求中携带身份标识。
当用户希望创建在线文档时,用户可以调用在线文档编辑产品的文档创建接口,比如,用户可以在在线文档编辑产品的界面中通过点击“新建”按键来调用文档创建接口。用户调用文档创建接口后,在线文档编辑产品生成在线文档创建请求,其中,在线文档创建请求中携带当前用户的身份标识。统计已创建文档数的装置可以接收在线文档创建请求。
步骤202,根据身份标识,获取与身份标识对应的已创建文档数和允许创建文档总数。
其中,允许创建文档数是指当前用户可以创建在线文档的总数,比如,对于未付费的企业用户,设定其可创建在线文档的总数为100篇文档,则允许创建文档总数为100。
例如,在线文档编辑产品可以在用户注册在线文档编辑产品时为用户生成用户标识,并根据用户注册时填写的企业信息获取用户所属企业的租户标识,若用户所属企业已购买了在线文档,则生成租户标识与允许创建文档总数的对应关系并存储在统计已创建文档数的装置内。若用户在注册时未填写企业信息,则认为该用户以个人用户身份进行注册,则根据用户是否付费以及付费金额,为用户设定允许创建文档总数,并生成用户标识与允许创建文档总数的对应关系并存储在统计已创建文档数的装置内。
本公开实施例中,统计已创建文档数的装置接收到在线文档创建请求后,可以对在线文档创建请求进行解析,从中提取出当前用户的身份标识,进而根据身份标识获取与该身份标识对应的已创建文档数和允许创建文档总数。
作为一种示例,若统计已创建文档数的装置从在线文档创建请求中获取到当前用户的租户标识,则获取与租户标识对应的已创建文档数和允许创建文档总数;若从在线文档创建请求中获取到当前用户的用户标识,则可以根据用户标识获取当前用户所属企业的租户标识,若根据用户标识获取到租户标识,则获取与租户标识对应的已创建文档数和允许创建文档总数,若根据用户标识未获取到租户标识,则获取与用户标识对应的已创建文档数和允许创建文档总数。
步骤203,若已创建文档数未超过允许创建文档总数,则创建在线文档。
步骤204,若已创建文档数达到允许创建文档总数,则拒绝创建在线文档,并显示已创建文档数达到允许创建文档总数的提示消息。
本公开实施例中,统计已创建文档数的装置获取了与身份标识对应的已创建文档数和允许创建文档总数之后,可以将已创建文档数与允许创建文档总数进行比较,若比较获知已创建文档数未超过允许创建文档总数,则创建在线文档;若已创建文档数达到允许创建文档总数,则拒绝创建在线文档,并显示已创建文档数达到允许创建文档总数的提示消息。
例如,当已创建文档数达到允许创建文档总数,可以不创建在线文档,并以弹窗的形式向用户显示“文档创建失败,当前文档数已达上限”的提示消息。
本公开实施例的统计已创建文档数的方法,通过在接收到在线文档创建请求时,根据在线文档创建请求中携带的身份标识,获取与身份标识对应的已创建文档数和允许创建文档总数,当已创建文档数未超过允许创建文档总数时创建在线文档,当已创建文档数达到允许创建文档总数时拒绝创建在线文档,并显示已创建文档数达到允许创建文档总数的提示消息,由此,能够对超过限制数目的个人用户和企业用户控制其新增文档,并通过向用户显示提示消息使得用户获知无法创建文档的原因,方便用户采取相应措施解决无法创建文档的问题,提升了用户体验。
图3为本公开实施例中创建在线文档的过程示例图,本公开实施例中,在线文档创建请求中携带当前用户的用户标识,当前用户为某一企业的员工,即用户标识与当前用户所属企业的租户标识对应。
如图3所示,该统计已创建文档数的方法可以包括以下步骤:
步骤301,接收在线文档创建请求,其中,在线文档创建请求中携带当前用户的用户标识。
其中,在线文档创建请求在用户调用在线文档创建接口时生成。
步骤302,对在线文档创建请求进行解析,获取用户标识,并根据用户标识获取与用户标识对应的租户标识。
其中,统计已创建文档数的装置中可以预先存储用户标识与租户标识的对应关系,比如,当企业用户注册在线文档编辑产品时,可以要求企业用户填写员工的信息,并为每个员工分配唯一的用户标识,建立用户标识与企业用户的租户标识之间的对应关系。
本公开实施例中,从在线文档创建请求中获取了用户标识后,通过查询用户标识与租户标识的对应关系,可以确定与该用户标识对应的租户标识。
步骤303,根据租户标识,获取与租户标识对应的已创建文档数和允许创建文档总数。
步骤304,判断已创建文档数是否小于允许创建文档总数。
步骤305,创建在线文档。
本公开实施例中,当已创建文档数小于允许创建文档总数时,创建在线文档。
进一步地,在线文档创建成功后,SQL Server在MySQL的用户创建文档表中新增记录信息,其中,记录信息中包括用户标识、租户标识和文档标识,并生成日志消息,其中,日志消息中携带添加操作、用户标识和租户标识。
步骤306,监听日志消息,其中,日志消息根据在线文档创建成功后数据库中新增的记录信息生成,日志消息中携带添加操作、用户标识和租户标识。
步骤307,对日志消息进行解析,获取日志消息中携带的添加操作和租户标识。
步骤308,根据添加操作,对与租户标识对应的已创建文档数累加一。
步骤309,拒绝创建在线文档,并显示已创建文档数已达上限的提示消息。
本公开实施例中,当已创建文档数不小于允许创建文档总数时,则不创建在线文档,并显示已创建文档数达到上限的提示消息,以提醒用户目前已创建文档数达到上限,用户可以根据提示消息删除旧文档或继续购买在线文档数。
能够理解的是,上述步骤301-步骤309是循环执行的过程,步骤308统计得到的已创建文档数,在下一次用户调用在线文档创建接口时,继续用于判断已创建文档数是否达到允许创建文档总数,并在未达到允许创建文档总数时创建在线文档并统计新的已创建文档数,直至已创建文档数达到允许创建文档总数。
本公开实施例的统计已创建文档数的方法,通过监听日志消息来进行计数,能够及时抓住计数时机,保证计数的实时性,由于不侵占业务代码,在业务代码故障的情况下仍能完成计数,保证了计数结果与实际已创建文档数量的统一,提高了计数的准确性。
为了实现上述实施例,本公开还提出一种统计已创建文档数的装置。
图4为本公开一实施例提出的统计已创建文档数的装置的结构示意图。
如图4所示,该统计已创建文档数的装置40包括:监听模块410、解析模块420,以及调整模块430。
其中,监听模块410,用于监听数据库对应的日志消息,日志消息中携带操作数据库的操作类型以及当前用户的身份标识。
解析模块420,用于在监听到日志消息时,对日志消息进行解析,获取操作类型和身份标识;
调整模块430,用于在操作类型为预设类型时,根据操作类型,对与身份标识对应的已创建文档数进行调整。
在本公开实施例一种可能的实现方式中,预设类型为添加操作和删除操作。从而,调整模块430具体用于当操作类型为添加操作时,将与身份标识对应的已创建文档数累加一;当操作类型为删除操作时,将与身份标识对应的已创建文档数减一。
在本公开实施例一种可能的实现方式中,如图5所示,在如图4所示实施例的基础上,该统计已创建文档数的装置40还包括:
接收模块440,用于接收在线文档创建请求,在线文档创建请求中携带身份标识。
获取模块450,用于根据身份标识,获取与身份标识对应的已创建文档数和允许创建文档总数。
创建模块460,用于在已创建文档数未超过允许创建文档总数时,创建在线文档。
提示模块470,用于在已创建文档数达到允许创建文档总数时,拒绝创建在线文档,并显示已创建文档数达到允许创建文档总数的提示消息。
需要说明的是,前述对统计已创建文档数的方法实施例的解释说明也适用于该实施例的统计已创建文档数的装置,其实现原理类似,此处不再赘述。
本公开实施例的统计已创建文档数的装置,通过监听数据库对应的日志消息,日志消息中携带操作数据库的操作类型以及当前用户的身份标识,若监听到日志消息,则对日志消息进行解析,获取操作类型和身份标识,若操作类型为预设类型,则根据操作类型,对与身份标识对应的已创建文档数进行调整。由此,无需在业务代码中增加计数逻辑,达到了在不侵占业务代码的情况下进行计数,实现了异步消费模式统计已创建文档数,方便扩展到其他有计数需求的方案中,可扩展性强,且通过监听日志消息来进行计数,能够及时抓住计数时机,保证计数的实时性,由于不侵占业务代码,在业务代码故障的情况下仍能完成计数,保证了计数结果与实际已创建文档数量的统一,实现最终一致性,提高了计数的准确性。
为了实现上述实施例,本公开还提出一种电子设备,包括:处理器和存储器。其中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现如前述实施例所述的统计已创建文档数的方法。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备800的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储装置808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM 802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:监听数据库对应的日志消息,所述日志消息中携带操作所述数据库的操作类型以及当前用户的身份标识;若监听到所述日志消息,则对所述日志消息进行解析,获取所述操作类型和所述身份标识;若所述操作类型为预设类型,则根据所述操作类型,对与所述身份标识对应的已创建文档数进行调整。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,调整模块还可以被描述为“在所述操作类型为预设类型时,根据所述操作类型,对与所述身份标识对应的已创建文档数进行调整的模块”。
为了实现上述实施例,本公开还提出一种非暂态计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述实施例所述的文档标记入方法。
图7为图示根据本公开的实施例的计算机可读存储介质的示意图。如图7所示,根据本公开实施例的计算机可读存储介质300,其上存储有非暂态计算机可读指令310。当该非暂态计算机可读指令310由处理器运行时,执行前述的本公开各实施例的统计已创建文档数的方法的全部或部分步骤。
为了实现上述实施例,本公开还提出一种计算机程序产品,当该计算机程序产品中的指令由处理器执行时,实现如前述实施例所述的统计已创建文档数的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。