交易系统构建方法、交易流程控制装置及第三方交易平台
技术领域
本发明涉及电子商务及网上交易流程控制领域,具体涉及交易系统构建方法、交易流程控制装置及第三方交易平台。
背景技术
随着信息技术,尤其是互联网技术的飞速发展,电子商务及网络支付已成为人们现代生活中不可缺少的一部分,而电子商务公司纷纷推出自己的在线交易方式和在线交易平台,这些平台的出现对在线交易的发展起到了重要的推动作用。
然而交易系统的核心就是对交易流程的控制,随着交易方式的多样化,也将需要越来越多的交易流程,针对不同订单交易流程的种类也越来越多,交易系统的开发人员需要对不同的订单类型来处理相应的交易流程,这就使得交易系统变的越来越复杂和庞大。
当前商业领域中运行的基于第三方交易的基本流程包括:
1)接受商户或用户提交的订单;
2)根据不同的订单类型来执行不同的流程控制,其中流程控制是由系统开发人员按照不同的订单类型编写的,在需要执行流程中某个事务时,通过检查订单类型来执行相应的操作;
然而现有的第三方交易平台存在如下缺点:
随着商户或用户对不同订单类型交易处理流程的需求越来越多,交易流程控制也会变得越来越复杂。这就增加了交易系统设计人员的设计难度,增加了订单处理逻辑的复杂性,对程序设计人员提出了更高的要求,并且使系统变得越来越庞大,难以控制。
专利文献1(公开号为CN103745540A)公开了一种银行业务状态机自动处理系统及其方法。所述系统包括:状态表维护单元,在状态表中预先存储各项银行业务所对应的当前状态和下一状态的记录;状态检测单元,在银行业务到达时自动检测所述银行业务的当前状态;记录查找单元,根据检测得出的所述银行业务的所述当前状态,在所述状态表中查找相应的记录,并获取所述记录中的下一状态;和状态更新单元,修改所述银行业务的所述当前状态为所述记录中的下一状态。该发明所提供的系统和方法能够使得状态对程序透明,联机程序中不再出现具体的某个状态,全部通过状态表来实现状态的可配置;应用程序不必关心执行交易后记录会变成什么状态,只需要关心自身执行的操作,简化程序,利于维护。
但上述发明的思路是公开了一种通过创建状态表来实现业务流程的控制,其业务流程的控制预先存储于状态表中,当商户或用户对不同订单类型交易处理流程的需求越来越多时,无法将新的订单类型以及控制流程写入状态表,无法实现交易系统的自定义和可扩展。另外,本发明的发明人通过分析支付宝提交的交易接口,在实现一个类似于支付宝的模拟平台时,发现在交易流程控制时是通过判断订单状态来实现交易流程控制的,并且不同的订单类型需要不同的处理流程。
发明内容
为了解决上述问题,本发明的目的在于,提供一种交易系统构建方法、交易流程控制装置及第三方交易平台,通过构建一个完整的自动机,将状态及状态转换的事务存储在自动机中来实现业务流程控制,可以更加灵活的创建不同订单类型的交易流程,能够根据不同的订单类型定义不同的交易流程,从而实现交易流程的自定义和可扩展,提高交易系统的可扩展性和灵活性。
本发明的交易系统构建方法,包括以下步骤:
步骤1,采集来自商户或用户的订单,并分析订单类型;
步骤2,查找数据库或文件中是否存在对应于所述订单类型的自动机,所述自动机中包含交易流程的控制,如果存在,则基于已存在的自动机来执行交易流程;如果不存在,则构建交易流程,并将所述交易流程构建为自动机,与所述订单类型相关联后储存到所述数据库或文件中,基于该新构建的自动机来执行交易流程。
本发明的交易系统构建方法,其中,所述步骤1进一步为:
为商户或用户提供下单接口,通过所述下单接口采集订单,并对所述订单的参数及格式进行验证,如果验证成功则接收订单,如果验证失败则返回错误代码。
本发明的交易系统构建方法,其中,所述步骤2中,所述自动机以文本编码的形式存储于所述数据库或文件中。
本发明的交易系统构建方法,其中,所述步骤2中,当所述数据库或文件中存在对应于所述订单类型的自动机时,进一步包括以下步骤:
步骤21,从所述数据库或文件中取出所述自动机的文本编码的副本,其中所述自动机中包含交易流程的处理;
步骤22,将所述订单和所述自动机文本编码绑定后,一起存储在所述数据库或文件中;
步骤23,对外提供一个接口,当商户或用户需要进行某项事务操作时,会调用该接口,通过该接口实现交易流程的事务操作,其中交易事务表示一个交易流程中的某项操作。
本发明的交易系统构建方法,其中,所述步骤23中,按如下步骤实现交易流程的事务操作:
步骤231,根据当前的订单号从所述数据库或文件中取出该订单所对应的自动机的文本编码,进行反序列化将其还原为自动机实例;
步骤232,通过该自动机实例执行一次事务处理;
步骤233,再次将该自动机实例反序列化为文本编码,并根据所述当前的订单号将该自动机文本编码存储到所述数据库或文件中;
步骤234,返回订单当前状态给接口调用者,当返回的状态为终止状态时,表示交易流程结束,如有错误则返回错误码;
步骤235,当商户或用户需要再次进行事务处理时跳转至步骤231。
本发明的交易系统构建方法,其中,预先存储多种事务类型,当所述数据库或文件中不存在对应于所述订单类型的自动机时,根据商户或用户的需求创建订单类型,然后按照商户所需交易流程选择事务类型来构建交易流程,并与所述订单类型相关联后储存到所述数据库或文件中,基于该新构建的自动机来执行交易流程。
本发明还涉及一种交易流程控制装置,包括管理模块和交易模块,
所述交易模块采集来自商户或用户的订单,并分析订单类型,查找数据库或文件中是否存在对应于所述订单类型的自动机,所述自动机中包含交易流程的控制,如果存在,则基于已存在的自动机来执行交易流程;如果不存在,则由所述管理模块构建交易流程,所述交易模块将所述交易流程构建为自动机,与所述订单类型相关联后储存到所述数据库或文件中,基于该新构建的自动机来执行交易流程。
本发明的交易流程控制装置,其中,所述交易模块具有订单接收模块、订单查询模块、订单关联模块、事务执行模块、以及终止判定模块,
所述订单接收模块接收来自商户或用户的订单,所述订单查询模块查找数据库或文件中是否存在对应于所述订单类型的自动机,存在时,所述订单关联模块将所述订单与所述自动机关联,并存储到所述数据库或文件中,当商户或用户需要执行某项事务操作时,所述事务执行模块取出与所述订单相关联的自动机,执行事务操作,执行完毕后,所述终止判定模块判断所述订单的状态为终止状态时结束交易流程,否则将所述订单的状态返回给商户或用户。
本发明的交易流程控制装置,其中,所述管理模块具有流程定义模块,所述交易模块还具有事务定义模块、流程验证模块及订单关联模块;
所述事务定义模块中预先存储有多种事务类型,当所述数据库或文件中不存在对应于所述订单类型的自动机时,所述流程定义模块根据商户或用户的需求创建订单类型,然后按照商户所需交易流程选择事务类型来构建交易流程,并将所述交易流程提交给所述流程验证模块,所述流程验证模块验证所述交易流程的可行性,如果验证成功,则所述订单关联模块将所述交易流程构建为自动机并和订单类型相关联并储存到所述数据库或文件中;如果验证失败,则所述流程定义模块从新构建并提交所述交易流程。
此外,本发明还涉及一种采用上述任一交易系统构建方法构建的第三方交易平台。
本发明的效果如下:
(1)通过分析自动机原理将所有订单类型的交易流程进行抽象分析并将所有的处理事务提供给管理模块,管理模块就可以自定义不同的交易流程,通过该方法可以很大程度的解决现有交易系统中的缺点。
(2)能够提高交易的安全性,通过自动机来实现交易流程控制,自动机是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机,是一种应用非常广泛的软件设计模式。自动机已经被证明是绝对安全的,是由事件驱动的,广泛应用于计算机领域的系统开发,通过状态转换来实现不同的事务处理。
(3)能够降低交易系统的复杂性,对于交易系统来说,它只要提供自动机的构建和实现不同事件的处理逻辑就行了,不用使用一般的流程处理方式,使得处理逻辑清晰,交易系统只需要定义不同的事件处理事务,并暴露给管理模块,管理模块针对不同的订单类型可以定义不同的交易流程,从而提高交易系统的可扩展性和灵活性。
附图说明
图1是本发明的交易系统构建方法的流程图。
图2是是本发明的交易流程控制装置的构成图。
图3是本发明实施例的交易模块进行订单交易处理的流程图。
图4是本发明实施例的管理模块构建交易流程的流程图。
附图标记说明
1 交易流程控制装置
2 交易模块
3 管理模块
21 事务定义模块
22 流程验证模块
23 订单关联模块
24 订单接收模块
25 订单查询模块
26 事务执行模块
27 终止判定模块
31 流程定义模块
M 商户或用户
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的交易系统构建方法、交易流程控制装置及第三方交易平台进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的交易系统构建方法如图1所示,该方法可用于生成第三方交易平台,其基于自动机原理,通过将交易流程控制交由自动机来执行,也就是说一个创建的自动机代表一个交易流程控制,借助自动机理论并按照不同的订单类型来自定义不同的交易流程,再将所述交易流程构建为自动机,基于该新构建的自动机来执行交易流程。
本发明中,需要为商户或用户提供下单的接口,当用户通过商城下单后,商城通过下单接口提交订单,交易系统检查是否存在和此订单类型相关的自动机文本编码,如果存在,则获取此自动机文本编码的副本并和订单相关联储存到数据库或文件中。
本发明中,需要交易系统对外提供一个接口来实现交易流程的执行,当商城或用户需要执行某项事务时(一个交易流程是由一些事务组成的),通过调用此接口来执行一项事务处理,此过程会将需要执行事务处理订单的自动机文本编码从数据库或文件中取出来,对此文本编码进行反序列化,从新构建为一个自动机实例,并执行一次事务操作,执行完后,将当前状态返回给接口的调用者并将此自动机实例序列化,存储到数据库或文件中,一次事务操作结束。当返回的状态为终止状态时,则表示交易流程结束。
交易系统中预先存储有多种事务类型,当商城管理员需要某类订单的交易流程时,商城管理员可以向交易系统提出说明,交易系统可以根据预先提供的交易事务定义交易流程(其中每个事务都包含开始状态和结束状态,开始转态和结束状态可以是初始转态和终止转态),并会验证整个交易流程的可行性(所提交到交易模块的所有事务中必须包含一个初始转态和一个终止转态),如果验证成功,则将交易流程构建为自动机实例并序列化为文本编码,和订单类型相关联并储存到数据库或文件中。如果验证失败,则需要从新定义交易流程。
本发明的交易系统构建方法的整体流程分为两个部分,一个是数据库或文件中存在着对应于用户所提交的订单类型的自动机的情况,即订单的交易流程处理,一个是数据库或文件中不存在对应于用户所提交的订单类型的自动机的情况,即交易系统根据订单类型构建交易流程的步骤。他们之间的关系属于生产和消费的关系。交易系统针对不同的订单类型创建不同的交易流程,其中交易流程是由自动机来实现和控制的,而订单类型所对应的自动机则是通过交易系统提供的事务类型来组成的。(一个交易流程是由一些事务组成的,而一个交易流程代表一个自动机实例。)
通过将上述的两个流程结合起来,就可以构成本发明的交易系统构建方法,通过使订单所需的交易流程由自动机来实现和规范,并由交易系统来定义交易流程,则根据不同的订单类型就可以定义不同的交易流程,从而实现交易流程的自定义和可扩展。
本发明的交易系统构建的具体方法,如下所述。
步骤1,采集订单。交易系统会给商户或用户提供一个下单接口,商户或用户按照接口所需的格式(包括数字签名)和参数补齐后,提交给交易系统,交易系统接收订单后会对参数及格式进行验证,如果验证成功则接收订单,如果验证失败则返回错误代码;
步骤2,查找数据库或文件中是否存在对应于所述的订单类型的自动机,当数据库或文件中存在对应于所述的订单类型的自动机时,执行如下步骤:
步骤21,获取自动机交易流程副本,通过检查接收到的订单类型从交易系统的数据库或文件中获取相应的自动机副本,也就是此自动机的文本编码,此自动机中包含交易流程的处理,如果不存在则返回错误代码。
步骤22,将订单与自动机相关联,从数据库或文件中按照订单类型取出相关序列化后的文本编码副本,将此副本和此订单向关联并保存到数据库或文件中。
步骤23,交易系统会对外提供一个接口,当商户或用户需要进行某项事务操作时,会调用此接口,此接口需要一个参数,来通知自动机需要执行的事务,通过此接口就可以实现交易流程的事务操作。
具体操作流程如下所示:
步骤231,根据当前的订单号从数据库或文件中取出订单所对应自动机的文本编码,然后进行反序列化将其还原为自动机实例;
步骤232,检查自动机当前状态转向下一状态的(下一个状态可以有多个)事务类型(当下一状态有n个时,那么对应的事务也必须有n个),其中是否包含接口传过来的事务类型,如果有则,通过自动机执行一次事务处理,如果没有则,返回错误代码;
步骤233,再次将自动机反序列化为文本编码,并根据订单号将此自动机文本编码存储到数据库或文件中。
步骤234,给商户或用户返回订单当前状态,当返回的状态为终止状态是则说明自动机所定义的交易处理流程结束,如有错误则返回错误码。
步骤235,当商户或用户需要再次进行事务处理时跳转到步骤231。
在上述交易系统构建方法中,当数据库或文件中不存在对应于所述的订单类型的自动机时,则需要构建交易流程,并将所述交易流程构建为自动机,与所述订单类型相关联后储存到所述数据库或文件中,基于该新构建的自动机按照上述操作步骤来执行交易流程。
交易事务类型可以由交易系统开发者预先定义,并存于交易系统中,其中一个事务代表一个交易处理流程中某项操作如确认付款,确认收货等。并且事务中必须包括一个开始状态和一个结束状态。然后通过预先定义的事务类型来构建交易流程自动机,可通过选择不同的事务类型(至少需要包含初始状态和终止状态)来组织交易流程,之后验证该交易流程的可行性,当验证成功后,构建合适的自动机用来执行具体的交易流程。构建交易流程的具体步骤如下:
步骤10,创建一个根据商户的需求创建订单类型,此类型需在交易系统中唯一。
步骤20,根据交易系统所提供的事务类型按照商户所需交易流程来选择事务类型,并和订单类型相关联,他们之间的关系是一一对应的。
步骤30,验证此系统是否为可以构建为一个有向图,如果验证成功则跳转到步骤40,如果失败则跳转到步骤20。
步骤40,验证有向图中每个节点是否可以到达终止状态节点,如果验证成功跳转到步骤50,如果失败则跳转到步骤20.
步骤50,通过此有向图来构建自动机实例,(此自动机实例为所有此订单类型的初始实例,当交易系统接收到的订单为此订单类型时,会将此订单和此初始实例的拷贝相关联),将自动机实例和订单关联后,保存到数据库或文件中,通过序列化和反序列化的方式来完成。
此外,本发明还提供一种交易流程控制装置1,如图2所示,该交易流程控制装置包括交易模块2和管理模块3。交易模块2采集来自商户或用户的订单,并分析订单类型,查找数据库或文件中是否存在对应于所述订单类型的自动机,所述自动机中包含交易流程的控制,如果存在,则基于已存在的自动机来执行交易流程;如果不存在,则由管理模块3构建交易流程,交易模块2将该交易流程构建为自动机,与订单类型相关联后储存到数据库或文件中,基于该新构建的自动机来执行交易流程。
本发明的交易流程控制装置1中,交易模块2具有订单接收模块24、订单查询模块25、订单关联模块23、事务执行模块26、以及终止判定模块27;订单接收模块23接收来自商户或用户的订单,订单查询模块25查找数据库或文件中是否存在对应于所述订单类型的自动机,存在时,订单关联模块23将所述订单与所述自动机关联,并存储到所述数据库或文件中,当商户或用户需要执行某项事务操作时,事务执行模块26取出与所述订单相关联的自动机,执行事务操作,执行完毕后,终止判定模块27判断所述订单的状态为终止状态时结束交易流程,否则将所述订单的状态返回给商户或用户。具体流程图如图3所示。
本发明的交易流程控制装置中,管理模块3具有流程定义模块31,交易模块2还具有事务定义模块21及流程验证模块22;事务定义模块21中预先存储有多种事务类型,当所述数据库或文件中不存在对应于所述订单类型的自动机时,流程定义模块31根据商户或用户的需求创建订单类型,然后按照商户所需交易流程选择事务类型来构建交易流程,并将该交易流程提交给流程验证模块22,流程验证模块22验证该交易流程的可行性,如果验证成功,则订单关联模块23将该交易流程构建为自动机并和订单类型相关联并储存到所述数据库或文件中;如果验证失败,则流程定义模块31从新构建并提交所述交易流程。具体流程如图4所示。
另外,本发明还提供一种第三方交易平台,其通过将交易流程构建为自动机并与订单类型相关联来执行交易流程。
以下为本发明的一实施例,如下所示:
商户向管理模块提出需求:商户向管理模块提出对于某种新的订单类型需要一种新的交易流程时,管理模块根据交易系统提供的事务类型来选择合适的交易流程,当管理模块选定交易流程后提交给交易模块,交易模块会验证此交易流程的可行性,如果验证成功则构建相应的自动机并将此自动机序列化为文本编码和订单类型相关联存储在交易系统的数据库或文件中;如果验证失败则让管理模块从新提交。
商户提交订单给交易模块:当交易系统中存在某个订单类型相对应的自动机处理流程时,交易模块根据订单的交易类型从交易模块的数据库或文件中取出相应的自动机文本编码副本并和订单向关联存储到数据库或文件中。
交易系统处理交易流程:交易模块会给交易的参与者提供统一的接口,当某个商户或用户需要实现某项事务时,通过向该接口传递相关的事务类型来进行事务操作。如:用户对某个订单需要进行付款时,该用户只需要调用该接口并传递相应的付款事务类型即可。当完成某项事务操作时,该接口会将订单当前状态和错误码返回给调用者,如果执行事务之前的状态和之后的状态一致则说明此项事务操作失败,通过错误码可以获得失败原因,如果不一致则说明操作成功,则当前状态为某项事务执行完后的状态,当状态为终止状态时则表示该订单的交易流程结束。