CN105183794B - 业务流水号生成装置和方法 - Google Patents

业务流水号生成装置和方法 Download PDF

Info

Publication number
CN105183794B
CN105183794B CN201510521886.9A CN201510521886A CN105183794B CN 105183794 B CN105183794 B CN 105183794B CN 201510521886 A CN201510521886 A CN 201510521886A CN 105183794 B CN105183794 B CN 105183794B
Authority
CN
China
Prior art keywords
serial number
business
business serial
information
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510521886.9A
Other languages
English (en)
Other versions
CN105183794A (zh
Inventor
孙广斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yonyou Network Technology Co Ltd
Original Assignee
Yonyou Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yonyou Network Technology Co Ltd filed Critical Yonyou Network Technology Co Ltd
Priority to CN201510521886.9A priority Critical patent/CN105183794B/zh
Publication of CN105183794A publication Critical patent/CN105183794A/zh
Application granted granted Critical
Publication of CN105183794B publication Critical patent/CN105183794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种业务流水号生成装置,包括:流水号生成单元,用于基于用户请求生成业务流水号,并基于生成的业务流水号进行元素处理、持久化处理和模型处理;数据库行锁单元,用于基于元素处理、持久化处理和模型处理后的业务流水号,进行相关信息保存和记录锁定处理;业务流水号连续性处理单元,用于基于相关信息保存和记录锁定处理后的业务流水号,进行场景分类处理,得到用户所需业务流水号。本发明还提供了一种业务流水号生成方法。通过本发明的技术方案,可以在现有的业务流水号生成方式基础上,充分利用单对象类型完成多对象类型元数据的业务流水号生成,建立多对象类型元数据参与的面向复杂类型业务流水号生成的通用、统一生成思路。

Description

业务流水号生成装置和方法
技术领域
本发明涉及数据处理技术领域,具体地,涉及一种业务流水号生成装置和一种业务流水号生成方法。
背景技术
在软件系统中,经常会遇到给单据设置一个业务流水号的情况。业务流水号,可以手工录入,也可以通过一定的算法生成。对于不同的单据,通常会对业务流水号有一定的规则要求,如:加上固定的前缀,按一定的依据从新从零开始流水等等。
手工录入业务流水号,一方面,容易照成错误,录入不符合规则的业务流水号,另一方面,难以保证连续,在并发录入的情况下,容易照成重复。对系统生成的流水号,目前很多软件系统都是自己实现了一些简单的生成方式,实现了业务流水号的生成和回收,缺乏通用性和可扩展性。
因此,需要一种新的业务流水号生成技术,可以在现有的业务流水号生成方式基础上,充分利用单对象类型完成多对象类型元数据的业务流水号生成,建立多对象类型元数据参与的面向复杂类型业务流水号生成的通用、统一生成思路。
发明内容
本发明正是基于上述问题,提出了一种新的业务流水号生成技术,可以在现有的业务流水号生成方式基础上,充分利用单对象类型完成多对象类型元数据的业务流水号生成,建立多对象类型元数据参与的面向复杂类型业务流水号生成的通用、统一生成思路。
有鉴于此,本发明提出了一种业务流水号生成装置,包括:流水号生成单元,用于基于用户请求生成业务流水号,并基于生成的业务流水号进行元素处理、持久化处理和模型处理;数据库行锁单元,用于基于元素处理、持久化处理和模型处理后的业务流水号,进行相关信息保存和记录锁定处理;业务流水号连续性处理单元,用于基于相关信息保存和记录锁定处理后的业务流水号,进行场景分类处理,得到用户所需业务流水号。在该技术方案中,可以对业务流水号的使用进行分析,基于数据库行锁,提出通用的解决方式,有很好的扩展性和通用性,能够灵活的配置业务流水号的生成规则。
在上述技术方案中,优选地,所述流水号生成单元,具体包括:流水号生成引擎,用于基于用户请求,对于满足预设业务流水号生成条件的业务流水号生成请求,采用默认配置生成所需业务流水号;流水号元素处理引擎,用于将生成的业务流水号或单据业务流水号的所有信息,被凝练到业务流水号核心信息中,根据序列号生成器获取序列号元素的值,将业务流水号模型中的序列号占位符替换,获得最终业务流水号;需要退号时,根据系统时间进行退号处理;流水号生成引擎持久化接口,用于基于获得的最终业务流水号,通过流水号生成上下文获取流水号元素处理器,对最终业务流水号进行流水号处理引擎持久化处理;流水号规则模型,用于基于流水号处理引擎持久化处理后的最终业务流水号,进行规则计算,在业务流水号规则计算中产生能够唯一识别业务流水号的随机号码;单据值对象模型,用于基于产生的随机号码,获取与该随机号码对应的业务流水号元素,分别提供默认的元素处理器;流水号生成上下文模型,用于基于提供的元素处理器,获取流水号生成上下文信息,进行业务流水号的信息配置,并对配置的信息进行保存,用于业务流水号生成过程中的随时调用。在该技术方案中,可以通过业务流水号的生成和稳固性处理,解决业务流水号的通用性与可扩展性。
在上述技术方案中,优选地,所述流水号生成引擎,还用于对于默认配置不能满足业预设业务流水号生成条件的业务流水号生成请求,采用扩展方式和业务流水号规则的动态调整方式,生成所需单据业务流水号;和/或,所述业务流水号核心信息,包括序列号信息、系统时间信息和核心规则模型,序列号信息包含当前需要使用的序列号生成器,核心规则信息包括流水归零依据和业务流水号模型;和/或,所述退号处理的具体操作,包括:如果系统时间是归零依据,根据系统时间信息去截取要回退的流水号中的系统时间,反算出本回退号的时间流水依据,如果和当前获得的系统时间的流水依据一致,并且其他流水依据也一致,则执行退号操作,否则号码不回退,直接抛弃;和/或,所述最终业务流水号,由多个子字段拼装组合而成,该多个子字段为业务流水号元素信息;在业务流水号的生成过程中使用的元素信息包括:和具体的单据值无关的信息,包括常量、系统时间、序列号和随机码;和单据信息有关的信息即单据上直接录入的信息或引用别的单据的信息,包括业务时间、手工录入的字符串。在该技术方案中,可以在运行维护时,提供业务流水号规则的动态调整能力,支持单据业务流水号生成方式的调整。
在上述技术方案中,优选地,所述数据库行锁单元,具体包括:相关信息保存模块,用于基于生成的业务流水号,采用业务流水号关系型数据库保存流水号生成相关信息,并对获取业务流水号的方法启动新的事务;所述流水号生成相关信息,包括当前最大流水号、回退号;最大流水号记录锁定模块,用于基于启动的新事物,执行数据库行锁,锁定当前归零依据下的最大流水号记录,这样,在当前流水号申请结束前,数据库中的本条数据一直锁定,直到当前流水号申请结束,提交事务后,第二个同一流水依据的流水号申请方法才能结束等待,继续执行。在该技术方案中,可以采用的是数据库行锁,锁定的只是一行数据,对其他流水依据的流水号获取,能够并行执行,保证了获取业务流水号好的效率。
在上述技术方案中,优选地,所述业务流水号连续性处理单元,具体包括:场景分类模块,用于数据库行锁处理后,对使用业务流水号的场景进行分类,对不同的场景进行不同的处理;前编码场景处理模块,用于在前编码场景下,通过前编码表保证业务流水号的连续性;该通过前编码表保证业务流水号的连续性的操作,具体包括:在前编码的情况下,当业务单据人员在获取业务流水号后,既没有保存,也没有取消,而是直接关闭页面或者系统时,前编码表中的数据会一直存;对超过预设时长的前编码表数据进行清理后,将该清理的前编码表数据转移到回退表中,保证业务流水号的连续性;后编码场景处理模块,用于在后编码的场景下,通过事务监控外部事务,根据事务成功失败来进行相应的请求级内存操作,保证业务流水号的连续性。在该技术方案中,可以解决业务流水号的唯一性与连续性,方便软件开发人员和提供运行态规则调整的能力。
根据本发明的又一个方面,还提出了一种业务流水号生成方法,包括:步骤202:基于用户请求生成业务流水号,并基于生成的业务流水号进行元素处理、持久化处理和模型处理;步骤204:基于元素处理、持久化处理和模型处理后的业务流水号,进行相关信息保存和记录锁定处理;步骤206:基于相关信息保存和记录锁定处理后的业务流水号,进行场景分类处理,得到用户所需业务流水号。在该技术方案中,可以对业务流水号的使用进行分析,基于数据库行锁,提出通用的解决方式,有很好的扩展性和通用性,能够灵活的配置业务流水号的生成规则。
在上述技术方案中,优选地,所述步骤202,具体包括:步骤302:基于用户请求,对于满足预设业务流水号生成条件的业务流水号生成请求,采用默认配置生成所需业务流水号;步骤304:将生成的业务流水号或单据业务流水号的所有信息,被凝练到业务流水号核心信息中,根据序列号生成器获取序列号元素的值,将业务流水号模型中的序列号占位符替换,获得最终业务流水号;需要退号时,根据系统时间进行退号处理;步骤306:基于获得的最终业务流水号,通过流水号生成上下文获取流水号元素处理器,对最终业务流水号进行流水号处理引擎持久化处理;步骤308:基于流水号处理引擎持久化处理后的最终业务流水号,进行规则计算,在业务流水号规则计算中产生能够唯一识别业务流水号的随机号码;步骤310:基于产生的随机号码,获取与该随机号码对应的业务流水号元素,分别提供默认的元素处理器;步骤312:基于提供的元素处理器,获取流水号生成上下文信息,进行业务流水号的信息配置,并对配置的信息进行保存,用于业务流水号生成过程中的随时调用。在该技术方案中,可以通过业务流水号的生成和稳固性处理,解决业务流水号的通用性与可扩展性。
在上述技术方案中,优选地,所述步骤202,还用于对于默认配置不能满足业预设业务流水号生成条件的业务流水号生成请求,采用扩展方式和业务流水号规则的动态调整方式,生成所需单据业务流水号;和/或,所述业务流水号核心信息,包括序列号信息、系统时间信息和核心规则模型,序列号信息包含当前需要使用的序列号生成器,核心规则信息包括流水归零依据和业务流水号模型;和/或,所述退号处理的具体操作,包括:如果系统时间是归零依据,根据系统时间信息去截取要回退的流水号中的系统时间,反算出本回退号的时间流水依据,如果和当前获得的系统时间的流水依据一致,并且其他流水依据也一致,则执行退号操作,否则号码不回退,直接抛弃;和/或,所述最终业务流水号,由多个子字段拼装组合而成,该多个子字段为业务流水号元素信息;在业务流水号的生成过程中使用的元素信息包括:和具体的单据值无关的信息,包括常量、系统时间、序列号和随机码;和单据信息有关的信息即单据上直接录入的信息或引用别的单据的信息,包括业务时间、手工录入的字符串。在该技术方案中,可以在运行维护时,提供业务流水号规则的动态调整能力,支持单据业务流水号生成方式的调整。
在上述技术方案中,优选地,所述步骤204,具体包括:步骤402:基于生成的业务流水号,采用业务流水号关系型数据库保存流水号生成相关信息,并对获取业务流水号的方法启动新的事务;所述流水号生成相关信息,包括当前最大流水号、回退号;步骤404:基于启动的新事物,执行数据库行锁,锁定当前归零依据下的最大流水号记录,这样,在当前流水号申请结束前,数据库中的本条数据一直锁定,直到当前流水号申请结束,提交事务后,第二个同一流水依据的流水号申请方法才能结束等待,继续执行。在该技术方案中,可以采用的是数据库行锁,锁定的只是一行数据,对其他流水依据的流水号获取,能够并行执行,保证了获取业务流水号好的效率。
在上述技术方案中,优选地,所述步骤206,具体包括:步骤502:数据库行锁处理后,对使用业务流水号的场景进行分类,对不同的场景进行不同的处理;步骤504:在前编码场景下,通过前编码表保证业务流水号的连续性;该通过前编码表保证业务流水号的连续性的操作,具体包括:在前编码的情况下,当业务单据人员在获取业务流水号后,既没有保存,也没有取消,而是直接关闭页面或者系统时,前编码表中的数据会一直存;对超过预设时长的前编码表数据进行清理后,将该清理的前编码表数据转移到回退表中,保证业务流水号的连续性;步骤506:在后编码的场景下,通过事务监控外部事务,根据事务成功失败来进行相应的请求级内存操作,保证业务流水号的连续性。在该技术方案中,可以解决业务流水号的唯一性与连续性,方便软件开发人员和提供运行态规则调整的能力。
通过以上技术方案,可以在现有的业务流水号生成方式基础上,充分利用单对象类型完成多对象类型元数据的业务流水号生成,建立多对象类型元数据参与的面向复杂类型业务流水号生成的通用、统一生成思路。
附图说明
图1示出了根据本发明的实施例的业务流水号生成装置的框图;
图2示出了根据本发明的实施例的业务流水号生成方法的流程图;
图3示出了根据本发明的实施例的流水号生成单元的原理示意图;
图4示出了根据本发明的实施例的数据库行锁单元的原理示意图;
图5示出了根据本发明的实施例的业务流水号连续性处理单元的原理示意图;
图6示出了根据本发明的实施例的的基本处理过程的流程图;
图7示出了根据本发明的实施例的在前编码场景下通过前编码表来保证业务流水号的连续性的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的业务流水号生成装置的框图。
如图1所示,根据本发明的实施例的业务流水号生成装置100,包括:流水号生成单元102,用于基于用户请求生成业务流水号,并基于生成的业务流水号进行元素处理、持久化处理和模型处理;数据库行锁单元104,用于基于元素处理、持久化处理和模型处理后的业务流水号,进行相关信息保存和记录锁定处理;业务流水号连续性处理单元106,用于基于相关信息保存和记录锁定处理后的业务流水号,进行场景分类处理,得到用户所需业务流水号。在该技术方案中,可以对业务流水号的使用进行分析,基于数据库行锁,提出通用的解决方式,有很好的扩展性和通用性,能够灵活的配置业务流水号的生成规则。
在上述技术方案中,优选地,流水号生成单元102,具体包括:流水号生成引擎1022,用于基于用户请求,对于满足预设业务流水号生成条件的业务流水号生成请求,采用默认配置生成所需业务流水号;流水号元素处理引擎1024,用于将生成的业务流水号或单据业务流水号的所有信息,被凝练到业务流水号核心信息中,根据序列号生成器获取序列号元素的值,将业务流水号模型中的序列号占位符替换,获得最终业务流水号;需要退号时,根据系统时间进行退号处理;流水号生成引擎持久化接口1026,用于基于获得的最终业务流水号,通过流水号生成上下文获取流水号元素处理器,对最终业务流水号进行流水号处理引擎持久化处理;流水号规则模型,1028用于基于流水号处理引擎持久化处理后的最终业务流水号,进行规则计算,在业务流水号规则计算中产生能够唯一识别业务流水号的随机号码;单据值对象模型1030,用于基于产生的随机号码,获取与该随机号码对应的业务流水号元素,分别提供默认的元素处理器;流水号生成上下文模型1032,用于基于提供的元素处理器,获取流水号生成上下文信息,进行业务流水号的信息配置,并对配置的信息进行保存,用于业务流水号生成过程中的随时调用。在该技术方案中,可以通过业务流水号的生成和稳固性处理,解决业务流水号的通用性与可扩展性。
在上述技术方案中,优选地,流水号生成引擎1022,还用于对于默认配置不能满足业预设业务流水号生成条件的业务流水号生成请求,采用扩展方式和业务流水号规则的动态调整方式,生成所需单据业务流水号;和/或,业务流水号核心信息,包括序列号信息、系统时间信息和核心规则模型,序列号信息包含当前需要使用的序列号生成器,核心规则信息包括流水归零依据和业务流水号模型;和/或,退号处理的具体操作,包括:如果系统时间是归零依据,根据系统时间信息去截取要回退的流水号中的系统时间,反算出本回退号的时间流水依据,如果和当前获得的系统时间的流水依据一致,并且其他流水依据也一致,则执行退号操作,否则号码不回退,直接抛弃;和/或,最终业务流水号,由多个子字段拼装组合而成,该多个子字段为业务流水号元素信息;在业务流水号的生成过程中使用的元素信息包括:和具体的单据值无关的信息,包括常量、系统时间、序列号和随机码;和单据信息有关的信息即单据上直接录入的信息或引用别的单据的信息,包括业务时间、手工录入的字符串。在该技术方案中,可以在运行维护时,提供业务流水号规则的动态调整能力,支持单据业务流水号生成方式的调整。
在上述技术方案中,优选地,数据库行锁单元104,具体包括:相关信息保存模块1042,用于基于生成的业务流水号,采用业务流水号关系型数据库保存流水号生成相关信息,并对获取业务流水号的方法启动新的事务;流水号生成相关信息,包括当前最大流水号、回退号;最大流水号记录锁定模块1044,用于基于启动的新事物,执行数据库行锁,锁定当前归零依据下的最大流水号记录,这样,在当前流水号申请结束前,数据库中的本条数据一直锁定,直到当前流水号申请结束,提交事务后,第二个同一流水依据的流水号申请方法才能结束等待,继续执行。在该技术方案中,可以采用的是数据库行锁,锁定的只是一行数据,对其他流水依据的流水号获取,能够并行执行,保证了获取业务流水号好的效率。
在上述技术方案中,优选地,业务流水号连续性处理单元106,具体包括:场景分类模块1062,用于数据库行锁处理后,对使用业务流水号的场景进行分类,对不同的场景进行不同的处理;前编码场景处理模块1064,用于在前编码场景下,通过前编码表保证业务流水号的连续性;该通过前编码表保证业务流水号的连续性的操作,具体包括:在前编码的情况下,当业务单据人员在获取业务流水号后,既没有保存,也没有取消,而是直接关闭页面或者系统时,前编码表中的数据会一直存;对超过预设时长的前编码表数据进行清理后,将该清理的前编码表数据转移到回退表中,保证业务流水号的连续性;后编码场景处理模块1066,用于在后编码的场景下,通过事务监控外部事务,根据事务成功失败来进行相应的请求级内存操作,保证业务流水号的连续性。在该技术方案中,可以解决业务流水号的唯一性与连续性,方便软件开发人员和提供运行态规则调整的能力。
图2示出了根据本发明的实施例的业务流水号生成方法的流程图。
如图2所示,根据本发明的实施例的业务流水号生成方法,包括:步骤202:基于用户请求生成业务流水号,并基于生成的业务流水号进行元素处理、持久化处理和模型处理;步骤204:基于元素处理、持久化处理和模型处理后的业务流水号,进行相关信息保存和记录锁定处理;步骤206:基于相关信息保存和记录锁定处理后的业务流水号,进行场景分类处理,得到用户所需业务流水号。在该技术方案中,可以对业务流水号的使用进行分析,基于数据库行锁,提出通用的解决方式,有很好的扩展性和通用性,能够灵活的配置业务流水号的生成规则。
在上述技术方案中,优选地,参见图3,步骤202,具体包括:步骤302:基于用户请求,对于满足预设业务流水号生成条件的业务流水号生成请求,采用默认配置生成所需业务流水号;步骤304:将生成的业务流水号或单据业务流水号的所有信息,被凝练到业务流水号核心信息中,根据序列号生成器获取序列号元素的值,将业务流水号模型中的序列号占位符替换,获得最终业务流水号;需要退号时,根据系统时间进行退号处理;步骤306:基于获得的最终业务流水号,通过流水号生成上下文获取流水号元素处理器,对最终业务流水号进行流水号处理引擎持久化处理;步骤308:基于流水号处理引擎持久化处理后的最终业务流水号,进行规则计算,在业务流水号规则计算中产生能够唯一识别业务流水号的随机号码;步骤310:基于产生的随机号码,获取与该随机号码对应的业务流水号元素,分别提供默认的元素处理器;步骤312:基于提供的元素处理器,获取流水号生成上下文信息,进行业务流水号的信息配置,并对配置的信息进行保存,用于业务流水号生成过程中的随时调用。在该技术方案中,可以通过业务流水号的生成和稳固性处理,解决业务流水号的通用性与可扩展性。
在上述技术方案中,优选地,步骤202,还用于对于默认配置不能满足业预设业务流水号生成条件的业务流水号生成请求,采用扩展方式和业务流水号规则的动态调整方式,生成所需单据业务流水号;和/或,业务流水号核心信息,包括序列号信息、系统时间信息和核心规则模型,序列号信息包含当前需要使用的序列号生成器,核心规则信息包括流水归零依据和业务流水号模型;和/或,退号处理的具体操作,包括:如果系统时间是归零依据,根据系统时间信息去截取要回退的流水号中的系统时间,反算出本回退号的时间流水依据,如果和当前获得的系统时间的流水依据一致,并且其他流水依据也一致,则执行退号操作,否则号码不回退,直接抛弃;和/或,最终业务流水号,由多个子字段拼装组合而成,该多个子字段为业务流水号元素信息;在业务流水号的生成过程中使用的元素信息包括:和具体的单据值无关的信息,包括常量、系统时间、序列号和随机码;和单据信息有关的信息即单据上直接录入的信息或引用别的单据的信息,包括业务时间、手工录入的字符串。在该技术方案中,可以在运行维护时,提供业务流水号规则的动态调整能力,支持单据业务流水号生成方式的调整。
在上述技术方案中,优选地,参见图4,步骤204,具体包括:步骤402:基于生成的业务流水号,采用业务流水号关系型数据库保存流水号生成相关信息,并对获取业务流水号的方法启动新的事务;流水号生成相关信息,包括当前最大流水号、回退号;步骤404:基于启动的新事物,执行数据库行锁,锁定当前归零依据下的最大流水号记录,这样,在当前流水号申请结束前,数据库中的本条数据一直锁定,直到当前流水号申请结束,提交事务后,第二个同一流水依据的流水号申请方法才能结束等待,继续执行。在该技术方案中,可以采用的是数据库行锁,锁定的只是一行数据,对其他流水依据的流水号获取,能够并行执行,保证了获取业务流水号好的效率。
在上述技术方案中,优选地,参见图5,步骤206,具体包括:步骤502:数据库行锁处理后,对使用业务流水号的场景进行分类,对不同的场景进行不同的处理;步骤504:在前编码场景下,通过前编码表保证业务流水号的连续性;该通过前编码表保证业务流水号的连续性的操作,具体包括:在前编码的情况下,当业务单据人员在获取业务流水号后,既没有保存,也没有取消,而是直接关闭页面或者系统时,前编码表中的数据会一直存;对超过预设时长的前编码表数据进行清理后,将该清理的前编码表数据转移到回退表中,保证业务流水号的连续性;步骤506:在后编码的场景下,通过事务监控外部事务,根据事务成功失败来进行相应的请求级内存操作,保证业务流水号的连续性。在该技术方案中,可以解决业务流水号的唯一性与连续性,方便软件开发人员和提供运行态规则调整的能力。
本发明的技术方案,涉及一种方便扩展的业务流水号生成技术,适用于在业务系统中获取业务流水号。该方便扩展的业务流水号生成技术,对业务流水号的使用进行了分析,基于数据库行锁,提出了通用的解决方式。
本发明的技术方案,主要解决业务流水号的通用性与可扩展性,业务流水号的唯一性与连续性,方便软件开发人员和提供运行态规则调整的能力。
本发明的技术方案,具有以下特点:
⑴业务流水号生成装置的通用性和可扩展性
本发明对业务流水号的生成器模型,提供默认配置,对于简单的业务流水号要求,可以直接使用默认实现;对于默认配置不能满足业务流水号生成需求的,为开发人员提供方便的扩展方式。在运行维护时,提供业务流水号规则的动态调整能力,支持单据业务流水号生成方式的调整。
本发明技术方案的生成器装置中,主要组件包括流水号生成引擎,流水号元素处理引擎,流水号生成引擎持久化接口,流水号规则模型,需要生成业务流水号的单据值对象模型,以及流水号生成上下文模型。
为了增强本发明技术方案的通用性,本发明技术方案的流水号处理引擎持久化服务通过注入来实现,组成流水号元素处理引擎的流水号元素处理器通过流水号生成上下文来获取。在系统启动时或者初次调用流水号生成服务时,将配置在XML中的具体信息初始化为业务流水号生成引擎的上下文,一直存在于内存中,为流水号的生成提供上下文信息。
流水号生成上下文信息具体可以配置的信息包括流水号元素处理器,系统时间获取器,流水号元素生成器,随机编码元素生成器,随机码生成器。
业务流水号通常是一些子字段拼装组合而成的,这些子字段我们称之为业务流水号元素信息,在业务流水号的生成过程中,通常用到的元素信息可以分为两种,一种是和具体的单据值无关的信息,一种是和单据信息有关的信息,对单据值无关的信息,可以是常量、系统时间、序列号(可以是自增数字序列)、随机码;对和单据相关的信息,可以是单据上直接录入的信息,如业务时间、手工录入的字符串等,也可以是引用别的单据的信息。这些信息按照一定的格式格式化后,按配置的顺序组合在一起,就产生了最终的业务流水号。模型中,将以上七种模型作为七种业务流水号元素,分别提供了默认的元素处理器。这些元素处理器组成了默认的业务流水号元素处理引擎。
对于系统时间流水号元素来说,不同的系统,获取系统时间的方法可能是不同的,有些用本机机器时间就可以了,有些对时间要求严格要求的,可能有时间服务器,这种情况下,将上下文xml文件中的类替换为自己的系统时间获取器即可。
对于序列号元素,装置默认提供了两种,纯数字序列号和首位字母后位数字序列号,如果需要其他的序列号元素生成器,可以在上下文XML中进行替换。随机码元素生成器也可以通过修改上下文XMl进行替换。
经元素处理引擎处理之后,所有的信息被凝练到业务流水号核心信息中,具体包括三类信息:序列号信息,系统时间信息,核心规则模型。在新请求流水号的时候,需要用到序列号信息和核心规则信息,序列号信息主要包含当前需要使用的序列号生成器,核心规则信息主要包括流水归零依据(所有流水依据元素值的拼接),业务流水号模型(除了序列号元素用特定字符占位外,其他元素已是最终的字符串),根据序列号生成器获取序列号元素的值,将业务流水号模型中的序列号占位符替换,就获得了最终业务流水号。系统时间信息在退号时会用到,退号时,如果系统时间是归零依据,根据系统时间信息去截取要回退的流水号中的系统时间,反算出本回退号的时间流水依据,如果和当前获得的系统时间的流水依据一致,并且其他流水依据也一致,则执行退号操作,否则号码不回退,直接抛弃。
通过规则计算的业务流水号毕竟是需要一定的时间代价的,有些场景下,对于业务流水号的含义没有具体要求,或者不确定有具体要求,但是要确保唯一性,这种情况下,可以在业务流水号规则中设置为产生随机号码,这里提供了唯一的随机码生成器的默认实现。本发明技术方案的基本处理过程如图6所示。
⑵业务流水号通过数据库行锁来保证并发情况下业务流水号的唯一性
本发明的技术方案中,业务流水号关系型数据库来保存流水号生成相关信息,包括当前最大流水号,回退号等,对获取业务流水号的方法,启动新的事务,以保证获取业务流水号的操作为一个原子操作,为了保证并发情况下,能够生成不重复的编号,在进入后去业务流水号的方法时,马上执行数据库行锁,锁定当前归零依据下的最大流水号记录,这样,在当前流水号申请结束前,数据库中的本条数据一直锁定,直到当前流水号申请结束,提交事务后,第二个同一流水依据的流水号申请方法才能结束等待,继续执行。这样就保证了同一个归零依据的流水号获取的串行性。由于采用的是数据库行锁,锁定的只是一行数据,对其他流水依据的流水号获取,能够并行执行,保证了获取业务流水号好的效率。
⑶业务流水号保证连续性的方法
本发明的技术方案对使用业务流水号的场景进行了分类,对不同的场景进行了不同的处理,来保证不同场景下满足业务流水号的连续的需求。具体包括前编码场景和后编码场景。
在业务系统中,经常会遇到在打开单据的同时,或则是在录入业务流水号敏感字段的同时,生成一个业务流水号的情况,这种在保存业务单据之前获取单据业务流水号的情况我们称之为前编码场景,对保存单据时,根据配置的业务流水号生成规则,生成业务流水号的情况,我们称之为后编码。
在本发明的技术方案中,是否保证编号的连续性是可以设置的,以下均针对业务流水号设置为连续的情况。在前编码场景下,是通过前编码表来保证业务流水号的连续性的。以图7为例。
对于前编码的情况下,可能业务单据人员在获取业务流水号后,既没有保存,也没有取消,直接关闭了页面或者系统,这种情况下,前编码表中的数据会一直存在,装置对超过一定时间(2天)的前编码表数据进行清理,转移到回退表中,以保证业务流水号的连续性。
在后编码的场景下下,是通过事务监控外部事务,根据事务成功失败来进行相应的请求级内存操作来保证业务流水号的连续性的。
本发明的技术方案,有很好的扩展性和通用性,能够灵活的配置业务流水号的生成规则。
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中没有简便的、统一的针对复杂类型元数据生成的解决办法。现有的业务流水号生成无法完成有复杂类型参与的业务流水号生成过程。因此,本发明提出了一种业务流水号生成装置和一种业务流水号生成方法,可以在现有的业务流水号生成方式基础上,充分利用单对象类型完成多对象类型元数据的业务流水号生成,建立多对象类型元数据参与的面向复杂类型业务流水号生成的通用、统一生成思路。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种业务流水号生成装置,其特征在于,包括:
流水号生成单元,用于基于用户请求生成业务流水号,并基于生成的业务流水号进行元素处理、持久化处理和模型处理;
数据库行锁单元,用于基于元素处理、持久化处理和模型处理后的业务流水号,进行相关信息保存和记录锁定处理;
业务流水号连续性处理单元,用于基于相关信息保存和记录锁定处理后的业务流水号,进行场景分类处理,得到用户所需业务流水号;
所述流水号生成单元,具体包括:
流水号生成引擎,用于基于用户请求,对于满足预设业务流水号生成条件的业务流水号生成请求,采用默认配置生成所需业务流水号;
流水号元素处理引擎,用于将生成的业务流水号或单据业务流水号的所有信息,被凝练到业务流水号核心信息中,根据序列号生成器获取序列号元素的值,将业务流水号模型中的序列号占位符替换,获得最终业务流水号;需要退号时,根据系统时间进行退号处理;
流水号生成引擎持久化接口,用于基于获得的最终业务流水号,通过流水号生成上下文获取流水号元素处理器,对最终业务流水号进行流水号处理引擎持久化处理;
流水号规则模型,用于基于流水号处理引擎持久化处理后的最终业务流水号,进行规则计算,在业务流水号规则计算中产生能够唯一识别业务流水号的随机号码;
单据值对象模型,用于基于产生的随机号码,获取与该随机号码对应的业务流水号元素,分别提供默认的元素处理器;
流水号生成上下文模型,用于基于提供的元素处理器,获取流水号生成上下文信息,进行业务流水号的信息配置,并对配置的信息进行保存,用于业务流水号生成过程中的随时调用。
2.根据权利要求1所述的业务流水号生成装置,其特征在于,所述流水号生成引擎,还用于对于默认配置不能满足业预设业务流水号生成条件的业务流水号生成请求,采用扩展方式和业务流水号规则的动态调整方式,生成所需单据业务流水号;和/或,
所述业务流水号核心信息,包括序列号信息、系统时间信息和核心规则模型,序列号信息包含当前需要使用的序列号生成器,核心规则信息包括流水归零依据和业务流水号模型;和/或,
所述退号处理的具体操作,包括:如果系统时间是归零依据,根据系统时间信息去截取要回退的流水号中的系统时间,反算出本回退号的时间流水依据,如果和当前获得的系统时间的流水依据一致,并且其他流水依据也一致,则执行退号操作,否则号码不回退,直接抛弃;和/或,
所述最终业务流水号,由多个子字段拼装组合而成,该多个子字段为业务流水号元素信息;在业务流水号的生成过程中使用的元素信息包括:和具体的单据值无关的信息,包括常量、系统时间、序列号和随机码;和单据信息有关的信息即单据上直接录入的信息或引用别的单据的信息,包括业务时间、手工录入的字符串。
3.根据权利要求1-2中任一项所述的业务流水号生成装置,其特征在于,所述数据库行锁单元,具体包括:
相关信息保存模块,用于基于生成的业务流水号,采用业务流水号关系型数据库保存流水号生成相关信息,并对获取业务流水号的方法启动新的事务;所述流水号生成相关信息,包括当前最大流水号、回退号;
最大流水号记录锁定模块,用于基于启动的新事物,执行数据库行锁,锁定当前归零依据下的最大流水号记录,这样,在当前流水号申请结束前,数据库中的本条数据一直锁定,直到当前流水号申请结束,提交事务后,第二个同一流水依据的流水号申请方法才能结束等待,继续执行。
4.根据权利要求1-2中任一项所述的业务流水号生成装置,其特征在于,所述业务流水号连续性处理单元,具体包括:
场景分类模块,用于数据库行锁处理后,对使用业务流水号的场景进行分类,对不同的场景进行不同的处理;
前编码场景处理模块,用于在前编码场景下,通过前编码表保证业务流水号的连续性;该通过前编码表保证业务流水号的连续性的操作,具体包括:在前编码的情况下,当业务单据人员在获取业务流水号后,既没有保存,也没有取消,而是直接关闭页面或者系统时,前编码表中的数据会一直存;对超过预设时长的前编码表数据进行清理后,将该清理的前编码表数据转移到回退表中,保证业务流水号的连续性;
后编码场景处理模块,用于在后编码的场景下,通过事务监控外部事务,根据事务成功失败来进行相应的请求级内存操作,保证业务流水号的连续性。
5.一种业务流水号生成方法,其特征在于,包括:
步骤202:基于用户请求生成业务流水号,并基于生成的业务流水号进行元素处理、持久化处理和模型处理;
步骤204:基于元素处理、持久化处理和模型处理后的业务流水号,进行相关信息保存和记录锁定处理;
步骤206:基于相关信息保存和记录锁定处理后的业务流水号,进行场景分类处理,得到用户所需业务流水号;
所述步骤202,具体包括:
步骤302:基于用户请求,对于满足预设业务流水号生成条件的业务流水号生成请求,采用默认配置生成所需业务流水号;
步骤304:将生成的业务流水号或单据业务流水号的所有信息,被凝练到业务流水号核心信息中,根据序列号生成器获取序列号元素的值,将业务流水号模型中的序列号占位符替换,获得最终业务流水号;需要退号时,根据系统时间进行退号处理;
步骤306:基于获得的最终业务流水号,通过流水号生成上下文获取流水号元素处理器,对最终业务流水号进行流水号处理引擎持久化处理;
步骤308:基于流水号处理引擎持久化处理后的最终业务流水号,进行规则计算,在业务流水号规则计算中产生能够唯一识别业务流水号的随机号码;
步骤310:基于产生的随机号码,获取与该随机号码对应的业务流水号元素,分别提供默认的元素处理器;
步骤312:基于提供的元素处理器,获取流水号生成上下文信息,进行业务流水号的信息配置,并对配置的信息进行保存,用于业务流水号生成过程中的随时调用。
6.根据权利要求5所述的业务流水号生成方法,其特征在于,所述步骤202,还用于对于默认配置不能满足业预设业务流水号生成条件的业务流水号生成请求,采用扩展方式和业务流水号规则的动态调整方式,生成所需单据业务流水号;和/或,
所述业务流水号核心信息,包括序列号信息、系统时间信息和核心规则模型,序列号信息包含当前需要使用的序列号生成器,核心规则信息包括流水归零依据和业务流水号模型;和/或,
所述退号处理的具体操作,包括:如果系统时间是归零依据,根据系统时间信息去截取要回退的流水号中的系统时间,反算出本回退号的时间流水依据,如果和当前获得的系统时间的流水依据一致,并且其他流水依据也一致,则执行退号操作,否则号码不回退,直接抛弃;和/或,
所述最终业务流水号,由多个子字段拼装组合而成,该多个子字段为业务流水号元素信息;在业务流水号的生成过程中使用的元素信息包括:和具体的单据值无关的信息,包括常量、系统时间、序列号和随机码;和单据信息有关的信息即单据上直接录入的信息或引用别的单据的信息,包括业务时间、手工录入的字符串。
7.根据权利要求5-6中任一项所述的业务流水号生成方法,其特征在于,所述步骤204,具体包括:
步骤402:基于生成的业务流水号,采用业务流水号关系型数据库保存流水号生成相关信息,并对获取业务流水号的方法启动新的事务;所述流水号生成相关信息,包括当前最大流水号、回退号;
步骤404:基于启动的新事物,执行数据库行锁,锁定当前归零依据下的最大流水号记录,这样,在当前流水号申请结束前,数据库中的本条数据一直锁定,直到当前流水号申请结束,提交事务后,第二个同一流水依据的流水号申请方法才能结束等待,继续执行。
8.根据权利要求5所述的业务流水号生成方法,其特征在于,所述步骤206,具体包括:
步骤502:数据库行锁处理后,对使用业务流水号的场景进行分类,对不同的场景进行不同的处理;
步骤504:在前编码场景下,通过前编码表保证业务流水号的连续性;该通过前编码表保证业务流水号的连续性的操作,具体包括:在前编码的情况下,当业务单据人员在获取业务流水号后,既没有保存,也没有取消,而是直接关闭页面或者系统时,前编码表中的数据会一直存;对超过预设时长的前编码表数据进行清理后,将该清理的前编码表数据转移到回退表中,保证业务流水号的连续性;
步骤506:在后编码的场景下,通过事务监控外部事务,根据事务成功失败来进行相应的请求级内存操作,保证业务流水号的连续性。
CN201510521886.9A 2015-08-24 2015-08-24 业务流水号生成装置和方法 Active CN105183794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510521886.9A CN105183794B (zh) 2015-08-24 2015-08-24 业务流水号生成装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510521886.9A CN105183794B (zh) 2015-08-24 2015-08-24 业务流水号生成装置和方法

Publications (2)

Publication Number Publication Date
CN105183794A CN105183794A (zh) 2015-12-23
CN105183794B true CN105183794B (zh) 2018-12-14

Family

ID=54905877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510521886.9A Active CN105183794B (zh) 2015-08-24 2015-08-24 业务流水号生成装置和方法

Country Status (1)

Country Link
CN (1) CN105183794B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203952A (zh) * 2016-07-05 2016-12-07 歌尔股份有限公司 基于项目相关信息的流水号生成方法及系统
CN106412035A (zh) * 2016-09-14 2017-02-15 联动优势电子商务有限公司 一种流水号的生成方法及终端
CN107016482A (zh) * 2016-12-12 2017-08-04 蔚来汽车有限公司 业务状态管理方法及系统
CN108664521B (zh) 2017-04-01 2020-09-01 北京京东尚科信息技术有限公司 一种提供序列号的方法、装置、电子设备和可读存储介质
CN109388626B (zh) * 2017-08-04 2023-01-31 北京京东尚科信息技术有限公司 用于向业务分配编号的方法和装置
CN108255946B (zh) * 2017-12-13 2020-08-14 东莞市奥海科技股份有限公司 一种镭雕设备的编码管理方法及装置、设备及存储介质
CN109063088B (zh) * 2018-07-26 2020-07-28 阿里巴巴集团控股有限公司 序列号的生成方法及装置
CN111225073B (zh) * 2018-11-26 2023-05-12 北京京东尚科信息技术有限公司 业务编码分配方法及装置、存储介质、计算机系统
CN109951541A (zh) * 2019-03-11 2019-06-28 中国银联股份有限公司 一种流水号生成方法及服务器
CN110336882B (zh) * 2019-07-10 2022-01-14 北京首汽智行科技有限公司 一种用户终端与车载终端的同步通信的实现方法
CN111444073A (zh) * 2020-03-26 2020-07-24 中国信息通信研究院 用于测试金融数据库性能的方法、装置和系统
CN113723915A (zh) * 2021-08-19 2021-11-30 中核武汉核电运行技术股份有限公司 核电厂业务表单编码方法、装置、设备及可读存储介质
WO2023108627A1 (zh) * 2021-12-17 2023-06-22 深圳晶泰科技有限公司 资源编码的方法、装置、系统和电子设备
CN115688683B (zh) * 2023-01-05 2023-03-21 东方合智数据科技(广东)有限责任公司 单据发号方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101655944A (zh) * 2009-09-25 2010-02-24 金蝶软件(中国)有限公司 一种业务单据编码方法及系统
CN101976240A (zh) * 2010-09-21 2011-02-16 用友软件股份有限公司 表单编号生成方法和系统
CN102609477A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种流水号生成器的实现方法
CN103092996A (zh) * 2013-02-21 2013-05-08 用友软件股份有限公司 单据数据获取装置和单据数据获取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197480B1 (en) * 2000-09-07 2007-03-27 International Business Machines Corporation System and method for front end business logic and validation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101655944A (zh) * 2009-09-25 2010-02-24 金蝶软件(中国)有限公司 一种业务单据编码方法及系统
CN101976240A (zh) * 2010-09-21 2011-02-16 用友软件股份有限公司 表单编号生成方法和系统
CN102609477A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种流水号生成器的实现方法
CN103092996A (zh) * 2013-02-21 2013-05-08 用友软件股份有限公司 单据数据获取装置和单据数据获取方法

Also Published As

Publication number Publication date
CN105183794A (zh) 2015-12-23

Similar Documents

Publication Publication Date Title
CN105183794B (zh) 业务流水号生成装置和方法
CN108932304B (zh) 基于跨模态的视频时刻定位方法、系统及存储介质
CN104967620B (zh) 一种基于属性访问控制策略的访问控制方法
JP7302987B2 (ja) 詐欺検出を改善するためのデータ拡張の方法、デバイス、およびシステム
WO2023274059A1 (zh) 交替序列生成模型训练方法、从文本中抽取图的方法
CN105243083B (zh) 文档主题挖掘方法及装置
CN106294418B (zh) 检索方法和检索系统
CN106503268B (zh) 数据对比方法、装置和系统
Yang et al. Large deviations for SPDEs of jump type
CN106251114B (zh) 应用中实现审批的方法和装置
CN104866517A (zh) 一种抓取网页内容的方法及装置
CN111026788A (zh) 一种混合云中基于同态加密的多关键词密文排序检索方法
CN103905482B (zh) 推送信息的方法、推送服务器和系统
CN113656807A (zh) 一种漏洞管理方法、装置、设备及存储介质
CN102968431B (zh) 一种基于依存树的中文实体关系挖掘的控制装置
Milano et al. HetNetAligner: a novel algorithm for local alignment of heterogeneous biological networks
CN107195301A (zh) 智能机器人语义处理的方法及装置
Gogoi et al. A rough set–based effective rule generation method for classification with an application in intrusion detection
CN105447004B (zh) 查询推荐词的挖掘、相关查询方法及装置
CN109241247A (zh) 多方协作项目的问题处理方法、系统及服务器
Pfeiffer Constructing comparable conceptual models with domain specific languages
DE112022002919T5 (de) Datenverteilung und sicherheit in einer mehrschichtigen speicher-infrastruktur
CN104268244B (zh) 处理表单的方法及装置
De Jong et al. Pre-computed memory or on-the-fly encoding? A hybrid approach to retrieval augmentation makes the most of your compute
Florez et al. Embracing Imperfection in Enterprise Architecture Models.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant