业务状态管理方法及系统与流程

文档序号:11621171阅读:206来源:国知局
本发明涉及订单系统
技术领域
,尤其涉及一种业务状态管理方法及系统。
背景技术
:在加电服务业务系统中,业务流程的流转规则非常复杂,这种流转并不是线性的,需要根据该加电服务的历史业务状态以及其他的一些触发条件来计算下一步需要进行的操作任务,并通过业务订单流程管理系统实现业务订单的流转,在业务订单的流转过程中需要有一个字段来标识服务状态,通常这个字段会是一个枚举值,有两种不同的取值方式。1.普通枚举这种枚举方式根据不同的值来表示服务当前的状态。如果需要获取服务的历史状态,则需要在数据库中另外存储一张表来记录服务的每一次状态变更,一个服务在这张表当中会存在多条记录。加电服务系统的业务流程并不是线性流转的,需要根据订单的历史操作状态以及其他的一些触发条件来计算下一步需要进行的操作任务,因此,每一次的业务流转都需要去历史状态表中查询所有的历史记录,并且将这些查询到的记录传递给负责计算下一步操作任务的规则引擎进行计算。这种处理方式不仅需要查询额外的数据表,而且传递的数据量较大,影响系统性能。2.位标记枚举这种枚举方式用二进制的方式进行表达,每一个位对应一种状态,0表示该状态未发生,1表示该状态已发生。这种枚举方式可以只使用一个字段记录服务的所有历史状态。但这种方式能存储的状态数量十分有限,在32位机器上,int类型占用4字节32位,也就只能表示32种状态,当业务流程非常复杂,所有可能的状态非常多时,这种方式对存储空间的利用效率十分低,整型、长整型都已不能满足需求。因此,既能在一个字段上表达服务历史状态,又能够在较少的存储空间中存放足够多的业务状态,成为了当下亟待解决的问题。技术实现要素:为了解决现有技术中的上述问题,即为了解决既能在一个字段上表达服务历史状态,又能够在较少的存储空间中存放足够多的业务状态的问题,本发明提供了一种业务状态管理方法,所述方法包括:获取业务订单所经历的各业务状态作为历史业务状态;根据所述历史业务状态中最后的业务状态的编码输出第一编码;根据所述历史业务状态中的特定事件业务状态输出第二编码;将所述第一编码与第二编码进行编码组合,形成所述业务订单的流程状态编码;所述特定事件业务状态具体为,在对应事件被触发后,当前业务状态所流转到的下一个业务状态不唯一时,选择下一个业务状态所需要依据的历史业务状态。优选地,所述根据所述历史业务状态中最后的业务状态的编码输出第一编码,具体包括:将所述历史业务状态按时间先后升序排列后,选取居于末位的业务状态,根据该居于末位的业务状态的编码输出第一编码。优选地,根据所述历史业务状态中的特定事件业务状态输出第二编码,具体包括:所述历史业务状态中的特定事件业务状态分别对应有一个编码位,将所述编码位组合后构成第二编码。优选地,所述业务订单的流程状态编码中的第一编码与第二编码顺次排列;且所述第一编码与第二编码之间利用分隔符隔开。优选地,所述的第一编码为二进制编码;所述第二编码中每一个编码位为一个二进制编码;其中,所述第一编码对应二进制编码的长度,基于所述业务订单对应的业务类型中所有业务状态的数量确定;所述第二编码的编码位的数量,基于包含特定事件业务状态最多的订单阶段中特定事件业务状态的数量确定;所述订单阶段为将对应业务类型中顺次排列的所有业务状态顺次划分的阶段,每个订单阶段中的业务状态在对应事件被触发时跳转该订单阶段中的业务状态或下一订单阶段中的业务状态。优选地,所述业务状态管理方法应用于业务订单流程管理系统中。本发明还提出了一种业务状态管理系统,所述系统包括:获取模块,配置为获取业务订单所经历的各业务状态作为历史业务状态;第一处理模块,配置为:根据所述历史业务状态中最后的业务状态的编码输出第一编码;根据所述历史业务状态中的特定事件业务状态输出第二编码;第二处理模块,配置为将所述第一编码与第二编码进行编码组合,形成所述业务订单的流程状态编码;所述特定事件业务状态具体为,在对应事件被触发后,当前业务状态所流转到的下一个业务状态不唯一时,选择下一个业务状态所需要依据的历史业务状态。优选地,所述第一处理模块,具体用于将所述历史业务状态按时间先后升序排列后,选取居于末位的业务状态,根据该居于末位的业务状态的编码输出第一编码。优选地,所述第一处理模块,具体用于将所述历史业务状态中的特定事件业务状态分别对应有一个编码位,将所述编码位组合后构成第二编码。优选地,所述业务订单的流程状态编码中的第一编码与第二编码顺次排列;且所述第一编码与第二编码之间利用分隔符隔开。优选地,所述的第一编码为二进制编码;所述第二编码中每一个编码位为一个二进制编码;其中,所述第一编码对应二进制编码的长度,基于所述业务订单对应的业务类型中所有业务状态的数量确定;所述第二编码的编码位的数量,基于包含特定事件业务状态最多的订单阶段中特定事件业务状态的数量确定;所述订单阶段为将对应业务类型中顺次排列的所有业务状态顺次划分的阶段,每个订单阶段中的业务状态在对应事件被触发时跳转该订单阶段中的业务状态或下一订单阶段中的业务状态。优选地,所述业务状态管理系统应用于业务订单流程管理系统中。与现有技术相比,本发明至少具有以下优点:通过本发明的设计,不仅实现了能在一个字段上表达服务历史状态,又能够在较少的存储空间中存放足够多的业务状态的问题。方案1、一种业务状态管理方法,其特征在于,所述方法包括:获取业务订单所经历的各业务状态作为历史业务状态;根据所述历史业务状态中最后的业务状态的编码输出第一编码;根据所述历史业务状态中的特定事件业务状态输出第二编码;将所述第一编码与第二编码进行编码组合,形成所述业务订单的流程状态编码;所述特定事件业务状态具体为,在对应事件被触发后,当前业务状态所流转到的下一个业务状态不唯一时,选择下一个业务状态所需要依据的历史业务状态。方案2、根据方案1所述的业务状态管理方法,其特征在于,所述根据所述历史业务状态中最后的业务状态的编码输出第一编码,具体包括:将所述历史业务状态按时间先后升序排列后,选取居于末位的业务状态,根据该居于末位的业务状态的编码输出第一编码。方案3、根据方案1所述的业务状态管理方法,其特征在于,根据所述历史业务状态中的特定事件业务状态输出第二编码,具体包括:所述历史业务状态中的特定事件业务状态分别对应有一个编码位,将所述编码位组合后构成第二编码。方案4、根据方案1~3中任一项所述的业务状态管理方法,其特征在于,所述业务订单的流程状态编码中的第一编码与第二编码顺次排列;且所述第一编码与第二编码之间利用分隔符隔开。方案5、根据方案4所述的业务状态管理方法,其特征在于,所述的第一编码为二进制编码;所述第二编码中每一个编码位为一个二进制编码;其中,所述第一编码对应二进制编码的长度,基于所述业务订单对应的业务类型中所有业务状态的数量确定;所述第二编码的编码位的数量,基于包含特定事件业务状态最多的订单阶段中特定事件业务状态的数量确定;所述订单阶段为将对应业务类型中顺次排列的所有业务状态顺次划分的阶段,每个订单阶段中的业务状态在对应事件被触发时跳转该订单阶段中的业务状态或下一订单阶段中的业务状态。方案6、根据方案1~3中任一项所述的业务状态管理方法,其特征在于,所述业务状态管理方法应用于业务订单流程管理系统中。方案7、一种业务状态管理系统,其特征在于,所述系统包括:获取模块,配置为获取业务订单所经历的各业务状态作为历史业务状态;第一处理模块,配置为:根据所述历史业务状态中最后的业务状态的编码输出第一编码;根据所述历史业务状态中的特定事件业务状态输出第二编码;第二处理模块,配置为将所述第一编码与第二编码进行编码组合,形成所述业务订单的流程状态编码;所述特定事件业务状态具体为,在对应事件被触发后,当前业务状态所流转到的下一个业务状态不唯一时,选择下一个业务状态所需要依据的历史业务状态。方案8、根据方案7所述的业务状态管理系统,其特征在于,所述第一处理模块,具体用于将所述历史业务状态按时间先后升序排列后,选取居于末位的业务状态,根据该居于末位的业务状态的编码输出第一编码。方案9、根据方案7所述的业务状态管理系统,其特征在于,所述第一处理模块,具体用于将所述历史业务状态中的特定事件业务状态分别对应有一个编码位,将所述编码位组合后构成第二编码。方案10、根据方案7-9中任一项所述的业务状态管理系统,其特征在于,所述业务订单的流程状态编码中的第一编码与第二编码顺次排列;且所述第一编码与第二编码之间利用分隔符隔开。方案11、根据方案10所述的业务状态管理系统,其特征在于,所述的第一编码为二进制编码;所述第二编码中每一个编码位为一个二进制编码;其中,所述第一编码对应二进制编码的长度,基于所述业务订单对应的业务类型中所有业务状态的数量确定;所述第二编码的编码位的数量,基于包含特定事件业务状态最多的订单阶段中特定事件业务状态的数量确定;所述订单阶段为将对应业务类型中顺次排列的所有业务状态顺次划分的阶段,每个订单阶段中的业务状态在对应事件被触发时跳转该订单阶段中的业务状态或下一订单阶段中的业务状态。方案12、根据方案7-9中任一项所述的业务状态管理系统,其特征在于,所述业务状态管理系统应用于业务订单流程管理系统中。附图说明图1是本发明所提出的业务状态管理方法的步骤流程图。具体实施方式下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。本发明提出一种业务状态管理方法,通过将该方法应用于业务订单流程管理系统中,使得该业务订单流程管理系统对于其中业务订单流转中的业务状态的表达更加简洁,从而占用较小的存储空间来存储业务状态,下面结合附图,对本发明具体实施方式进行详细说明。其中,本发明中所提供的业务状态管理方法采用二进制+分段+部分记录+位标记枚举的方式来实现既能在一个字段上表达服务历史状态,又能在业务非常复杂业务状态数量非常多的情况下只占用较少的存储空间的需求,从而使加电服务业务流转所依赖的数据量减少,提高计算效率。在加电服务系统的业务流程中,并不是所有的历史业务状态都对流程流转有价值,也不是所有的操作任务的计算都需要依赖历史记录,某一些触发事件所触发的操作任务是固定的。因此,在业务订单状态字段中,只需记录对流程流转有价值的历史业务状态和当前的业务状态即可。需要依赖历史记录的触发事件中,每一种事件的判断又可能依赖于不同的历史业务状态。因此,需要将各个依赖历史记录的触发事件所分别依赖的历史业务状态分析出来,并将各业务状态记录下来。如图1所示,业务状态管理方法具体包括如下步骤:步骤101,获取业务订单所经历的各业务状态作为历史业务状态。步骤102,根据所述历史业务状态中最后的业务状态的编码输出第一编码;根据所述历史业务状态中的特定事件业务状态输出第二编码。该步骤中所述历史业务状态中最后的业务状态具体为:业务订单当前状态下所经历的各业务状态按时间顺序升序排列后,最后的一个业务状态。该步骤中的所述特定事件业务状态具体为,在对应事件被触发后,当前业务状态所流转到的下一个业务状态不唯一时,选择下一个业务状态所需要依据的历史业务状态。所述业务状态的编码可以是序号,也可以是其他形式的编码,只要能唯一表示相应的业务状态即可,并且每一个业务状态的编码唯一对应一个第一编码。该步骤中根据所述历史业务状态中最后的业务状态的编码输出第一编码,具体包括:将所述历史业务状态按时间先后升序排列后,选取居于末位的业务状态,根据该居于末位的业务状态的编码输出第一编码。根据所述历史业务状态中的特定事件业务状态输出第二编码,具体包括:所述历史业务状态中的特定事件业务状态分别对应有一个编码位,将所述编码位组合后构成第二编码。步骤103,将所述第一编码与第二编码进行编码组合,形成所述业务订单的流程状态编码。本实施例中,所述业务订单的流程状态编码中的第一编码与第二编码顺次排列;且所述第一编码与第二编码之间利用分隔符隔开。进一步地,所述的第一编码为二进制编码;所述第二编码中每一个编码位为一个二进制编码;其中,所述第一编码对应二进制编码的长度,基于所述业务订单对应的业务类型中所有业务状态的数量确定;所述第二编码的编码位的数量,基于包含特定事件业务状态最多的订单阶段中特定事件业务状态的数量确定;所述订单阶段为将对应业务类型中顺次排列的所有业务状态顺次划分的阶段,每个订单阶段中的业务状态在对应事件被触发时跳转该订单阶段中的业务状态或下一订单阶段中的业务状态。第一编码和第二编码也可以采用其他编码方式来进行编码。对于业务状态的跳转,是由业务状态所对应事件的触发来实现的;举例说明:用户在下单后,该订单当前的业务状态为“已下单”,并持续维持该“已下单”业务状态,在用户取消订单这个事件发生后,订单从“已下单”业务状态跳转至“已取消”业务状态。下面以一个具体实施方式就上述本发明所提供的方法做具体阐述。假设业务类型为加电服务业务,其流程有status1~status50五十种业务状态,首先,对该五十种业务状态进行阶段划分,分为两个阶段第一订单阶段(status1~status28)和第二订单阶段(status29~status50);其中,该五十种业务状态中包含了三十九种普通的业务状态和十一种特定事件业务状态,各订单阶段中所包含的特定事件业务状态分配情况如下表1所示。表1各订单阶段中所对应的特定事件业务状态分组通过上述表1可以看出,第一订单阶段中有七个特定事件业务状态,第二订单阶段中有四个特定事件业务状态;第一订单阶段在第二订单阶段之前。第一订单阶段中,每个事件在被触发后,可以使得订单流程由当前的业务状态跳转到该被触发事件所对应的业务状态;其中,该被触发事件所对应的业务状态可以是本订单阶段中所设定的任一业务状态;若被触发事件所对应的业务状态为阶段跳转业务状态(事件触发后所跳转的业务状态为下一订单阶段的业务状态),则下一事件触发后,由当前的阶段跳转业务状态跳转到该被触发的下一事件所对应的业务状态。举例来说:当前的业务状态为第一订单阶段中的业务状态status1,当某一事件(如设定该事件所对应的业务状态为status28)被触发时,由status1跳转到第一订单阶段的业务状态status28;若业务状态status28为阶段跳转业务状态,则当前订单流程进入第二阶段,当另一事件(如设定该事件所对应的业务状态为status43)被触发时,由status28跳转到第二订单阶段的业务状态status43,且在跳转到第二订单阶段后,第二订单阶段中各新事件的触发,均只能由当前业务状态跳转为第二订单阶段中该新事件所对应的业务状态,不能将所跳转的业务状态设定为第一订单阶段中任一业务状态。其中,在进行订单阶段划分时并不只局限于两个订单阶段,可以根据需要分成多个订单阶段。本方法将业务状态字段分为两段,第一段使用普通枚举的方式记录订单当前所处的业务状态,第二段使用位标记枚举的方式记录订单当前订单阶段对应的特定事件业务状态。本实施例中一共五十种业务状态(即status1~status50),第一段记录时需要一个六位二进制编码来表示订单流程中最新的业务状态的编码;第二段中有两个订单阶段,共十一种业务状态,在进行记录时,只需要根据包含特定事件业务状态最多的订单阶段中特定事件业务状态的数量确定当前订单阶段的二进制编码位的数量,如上表1所示,包含特定事件业务状态最多的为第一订单阶段,共有七个特定事件业务状态,故采用七个由二进制编码位构成第二段业务状态字段,每一个编码位表示一个特定事件业务状态的经历状态,经历的特定事件业务状态用1表示,未经历的特定事件业务状态用0表示。第二段业务状态字段中每一个二进制编码位为一个长度为1的二进制编码;对于其它订单阶段,由于其包含的特定事件业务状态数量少于七个,在记录其特定事件业务状态时,其记录方式可以按照特定事件业务状态的编号顺序从左到右的方式去记录,例如,假设订单当前的订单阶段为第二订单阶段,所流经的业务状态中包含有status30,status31和status40这三个特定事件业务状态,利用二进制编码位构成的第二段业务状态字段,记录为1101000。该种表达方式下只需要十三个二进制编码的位数就可以存储所有对流程流转具有价值的状态。当业务订单流程处于某一阶段时,对业务订单流程有影响的业务状态只包含该订单阶段中各触发事件对应的特定事件业务状态,只需要记录这些特定事件业务状态的经历情况,不需要记录其他的业务状态经历情况,因此可以进一步节省存储空间。具体的,假设某订单经历了status1~7,status12,status15,status16,status17,status18,status19,status20,status31,status32,status41状态,则确定该订单最后所经历的为第二订单阶段,在订单状态字段中的存储内容为:101001|0110000。下面进一步的对本发明所提出特定事件业务状态的编码方法进行描述。如表2所示,第一订单阶段中包含有两种事件a和b,第二订单阶段中包含有两种事件c和d;其中,所有触发业务状态流转的触发事件中,该四种触发事件a、b、c、d在触发时需要根据某些历史业务状态判断下一步的操作任务,其中a、b、c、d每一个事件均对应有一个业务状态,a事件所需依赖的特定事件业务状态为status5,status6,status9,status10,status11(既当a事件发生时,订单历史业务状态根据前述五种特定事件业务状态的发生情况会流转至不同的操作任务;status5,status6,status9,status10,status11为特定事件业务状态),b事件所需依赖的特定事件业务状态为status10,status11,status20,status22,c事件所需依赖的特定事件业务状态为status30,status31,status32,d事件所需依赖的特定事件业务状态为status40,其他所有事件为固定流转事件(既发生某一事件时,不论订单历史业务状态如何,都固定流转至某一设定操作任务)。则在订单历史业务状态字段中只需记录前述四种触发事件所依赖的业务状态,可将这些业务状态按触发事件分组,具体分组情况如下述表2:表2各事件对应的特定事件业务状态分组组号特定事件业务状态astatus5,status6,status9,status10,status11bstatus10,status11,status20,status22cstatus30,status31,status32dstatus40表2中,订单状态字段中需要记录的历史业务状态顺次为status5,status6,status9,status10,status11,status20,status22,status30,status31,status32,status40这十一种特定事件业务状态。举例来说,假设某订单经历了status1~7,status12,status15,status16,status17,status18,status19,status20,status31,status32,status41,status43这些业务状态,则在订单状态字段中的存储内容为:101011|0110000;其中,由于当前业务状态对应的业务状态为status43,为第43个编码,故利用分隔符左方的二进制编码101011记录该status43;该业务订单经历的特定事件业务状态包含status5、status6、status20、status31、status32,但当前的订单阶段为第二订单阶段,故利用分隔符右方的七个由二进制编码构成的编码位的组合0110000记录。基于与上述本发明所提供方法相同的构思,本发明还提供了一种业务状态管理系统,同样的,该方法实现所基于的业务状态管理系统应用于该业务订单流程管理系统中,以实现对于该业务订单流程管理系统的业务订单流转中的业务状态的表达更加简洁,从而占用较小的存储空间来存储业务状态,所述系统包括:获取模块,配置为获取业务订单所经历的各业务状态作为历史业务状态;第一处理模块,配置为:根据所述历史业务状态中最后的业务状态的编码输出第一编码;根据所述历史业务状态中的特定事件业务状态输出第二编码;第二处理模块,配置为将所述第一编码与第二编码进行编码组合,形成所述业务订单的流程状态编码;所述特定事件业务状态具体为,在对应事件被触发后,当前业务状态所流转到的下一个业务状态不唯一时,选择下一个业务状态所需要依据的历史业务状态。本实施例中,第一处理模块,具体用于将所述历史业务状态按时间先后升序排列后,选取居于末位的业务状态,根据该居于末位的业务状态的编码输出第一编码。本实施例中,第一处理模块,具体用于将所述历史业务状态中的特定事件业务状态分别对应有一个编码位,将所述编码位组合后构成第二编码。本实施例中,业务订单的流程状态编码中的第一编码与第二编码顺次排列;且所述第一编码与第二编码之间利用分隔符隔开。本实施例中,第一编码为二进制编码;所述第二编码中每一个编码位为一个二进制编码;其中,所述第一编码对应二进制编码的长度,基于所述业务订单对应的业务类型中所有业务状态的数量确定;所述第二编码的编码位的数量,基于包含特定事件业务状态最多的订单阶段中特定事件业务状态的数量确定;所述订单阶段为将对应业务类型中顺次排列的所有业务状态顺次划分的阶段,每个订单阶段中的业务状态在对应事件被触发时跳转该订单阶段中的业务状态或下一订单阶段中的业务状态。本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的模块、及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1