CN105094758A - 用于避免事务回滚的方法和装置 - Google Patents
用于避免事务回滚的方法和装置 Download PDFInfo
- Publication number
- CN105094758A CN105094758A CN201410178265.0A CN201410178265A CN105094758A CN 105094758 A CN105094758 A CN 105094758A CN 201410178265 A CN201410178265 A CN 201410178265A CN 105094758 A CN105094758 A CN 105094758A
- Authority
- CN
- China
- Prior art keywords
- service
- flow process
- disabled
- affairs
- follow
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/407—Cancellation of a transaction
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开一种用于避免事务回滚的方法和装置,该方法包含:在当前执行的事务所在的业务流程中的预定检查点,确定该检查点的后继流程中包含的至少一个服务;查询所述后继流程中包含的至少一个服务中的至少一个不可用的服务;根据所述至少一个不可用的服务,判断该事务是否能被履行;响应于该事务不能被履行的判定,使该事务的执行停止。
Description
技术领域
本发明涉及计算机网络应用,尤其涉及运用计算机网络进行执行的业务流程。
背景技术
计算机网络应用中越来越复杂的业务流程,往往包含多个独立的服务。业务流程的一个执行实例,也即一个事务处理过程中需要调用多个这样的独立服务。这些服务可能是企业的内部***提供的服务,也可能是企业的外部***提供的服务。当一个事务处理所调用的某个服务不可用时,将导致该事务处理前面已经成功调用的服务需要被回滚。服务的回滚是需要付出很大代价的,外部***所提供的服务回滚的代价更高;某些外部***提供的服务甚至是不支持回滚的,需要人工干预。例如某些支付网关,对已经“支付”的服务,只能再次发起另一个“退款”的补偿服务,这样就会导致商家产生两次支付交易的费用。某些***只能通过人工的手段来让外部***的数据恢复到一致性的状态,这就增加了人工的成本。
发明内容
本发明的一个目的是提供一种避免事务回滚的方法和装置。
一方面,提供一种用于避免事务回滚的方法,包含:
在当前执行的事务所在的业务流程中的预定检查点,确定该检查点的后继流程中包含的至少一个服务;
查询所述后继流程中包含的至少一个服务中的至少一个不可用的服务;
根据所述至少一个不可用的服务,判断该事务是否能被履行;
和
响应于该事务不能被履行的判定,使该事务的执行停止。
另一方面,提供一种用于避免事务回滚的装置,包含:
服务确定单元,被配置用于在当前执行的事务所在的业务流程中的预定检查点,确定该检查点的后继流程中包含的至少一个服务;
服务状态查询单元,被配置用于查询服务确定单元确定的后继流程中包含的服务中的至少一个不可用的服务;
事务可执行性判定单元,被配置用于根据服务状态查询单元查询的所述至少一个不可用的服务,判断该事务是否能被履行;和
事务执行控制单元,被配置用于响应于事务可执行性判定单元对该事务不能被履行的判定,使该事务的执行停止。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图;
图2A例示一个购物网站的业务流程;
图2B-2G示意性地表示执行图2A所示的业务流程的过程中用户浏览器上显示的截图;
图3更详细地表示图2A所示的业务流程的一部分;
图4示意性表示按照发明实施例的避免事务回滚的方法的流程图;
图5示意性表示按照发明实施例的避免事务回滚的装置的简略框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图。图1显示的计算机***/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
图1显示的计算机***/服务器12,适于用来实现本发明各种实施方式。
首先参看图2A-2G,说明本发明各实施例涉及的业务流程的相关概念。图2A示意性表示一个购物网站的“网络购物”业务流程的业务流程图200。图2B-2G示意性表示用户在图2A所示的网站购物的过程中网站响应用户的操作在用户的浏览器上显示的页面的截图。
参看图2A,图中的左侧代表用户,右侧代表购物网站。用户与网站之间的箭头表示用户与网站的交互,其中,从用户指向网站的箭头代表用户的操作,从网站指向用户的箭头代表网站的操作。
图2A所示的“网络购物”过程如下。
S1.用户例如通过输入电商网站的网址,进入电商网站。
S2.显示商品详情,如图2B所示。用户可以点击该页面上的按钮221,把商品加入购物车。
S3.用户把商品加入购物车。网站得到有关用户选择的商品的参数,例如商品编号、数量。
S4.显示商品被成功地加入购物车,如图2C所示。用户可以点击该页面上的按钮231,表示要去购物车。
S5.用户点击按钮231。
S6.显示购物车中的所有商品,如图2D所示。用户可以点击该页面上的按钮241,表示要去结算。
S7.用户点击按钮241。
S8.显示配送信息、支付信息输入页面,如图2E所示。
S9.用户输入配送信息和支付信息,诸如使用***还是储蓄卡付款、发卡银行等,如图2E所示。然后,点击页面上的按钮251,进入下一步。
S10.显示订单确认页面,如图2F所示。用户可以点击该页面上的按钮261,表示要进入“提交订单”的业务流程。
S11.用户点击按钮261。此时,订单中的信息包括商品编号、数量,配送信息、支付信息等。
S12.显示订单提交成功页面,如图2G所示。
图2B-2G例示了业务流程200的一个实例。应当明白,在同一时间,电商网站上可以运行业务流程200的多个实例。
以上示意性地说明了一个电商网站的业务流程的执行过程。
业务流程(businessprocess):业务流程定义了处理某个业务逻辑所要调要的一系列服务以及调用顺序与调用条件。描述业务流程的业务流程图,通常包含多个子模块,每个子模块更详细地描述一个子业务流程。子业务流程也是业务流程。图2A所示的业务流程图200,包含子模块201、202、203、204、205、206。
图3示意性地描述了子模块206的“提交订单”业务流程300。如图3所示,业务流程300的完成,需要调用定价(Pricing)***提供的服务“CalculateOrder”(金额计算)361、库存(,Inventory)***提供的服务“allocateInventory”(分配库存)、支付(Payment)***提供的服务“AuthorizePayment”(支付审核)365、以及仓储***提供的服务“FullfilOrder”(履行订单)366;判断框363的“Y”出口表示,如果Amount(订单金额)大于1000($),还需要调用CRM***提供的服务“CheckLoyalty”(验证可信度)364。
业务流程所定义的“服务”(service),此处也可称为“网络服务”(webservice),指一个***完成一个具体业务逻辑的单元。
按照服务提供商的不同,可以将服务划分为“内部服务”和“外部服务”。例如,对于业务流程200来说,“CalculateOrder”361是购物网站内部的定价***所提供的服务,属于内部服务;“AuthorizePayment”365是与购物网站集成的外部支付***提供的服务,属于外部服务。
下面的表1(服务注册表),记录了“提交订单”业务流程300中包含的所有服务。
表1:服务注册表
第1个记录的服务是“CalculateOrder”361,其功能是计算订单的价格,提供服务的是“Pricing”子***,输出(output)参数是“amount”(订单金额)。
第2个记录的服务是“All0cateInventory”362,其功能是,在库存***中,根据该订单购买的数商品量分配相关商品的库存数目,把该订单所需的商品按照所需的数量从库存***中扣除。提供服务的是“Inventory”***,输出(input)参数是“fulfillmentCenterId”(履行中心标识符)。
第3个记录的服务“CheckLoyalty”364的功能是,在CRM***中检查该用户的信用,从而降低恶意下单的商业风险。提供服务的是“CRM”子***。
第4个记录的服务“AuthorizePayment”365的功能是完成支付验证业务逻辑。提供服务的是“Payment”子***,输入参数是“paymentType”(支付方式)和“cardBrand”(发卡银行)。
第5个记录的服务“FulfillOrder”366的功能是,把订单信息发送到相应的仓储中心以便于后续的分拣、打包、发货。提供服务的是“Warehouse”子***,输入参数是“fulfillmentCenterId”。
应当明白,“提交订单”业务流程300中包含的所有服务,其是业务流程200中包含的服务的一个子集。此外,表1的数据结构中,只包含了“服务标识符”、“服务提供商”、“参数”这三种数据。在实际应用中,表1可以包含更多的内容,并且可以预先确定。
图3所示的业务流程图和表1,构成子模块206的业务流程的定义。所属技术领域的技术人员知道,可以采用上述以及其它各种数据结构,以计算机可读的形式,将业务流程的定义存储在数据库中。
可以以同样的方式,定义和存储业务流程200的其它子模块201、202、203、204、205的业务流程,由此可以定义整个业务流程200,存储整个业务流程200的定义。
下面举例说明本发明方法的各种实施方式。
参看图4,该图示意性表示按照本发明一个实施例的用于避免事务回滚的方法的流程图。如图所示,该方法400包含步骤410、420、430和440。
所属技术领域的技术人员知道,在业务流程应用领域,“事务”(transaction)指业务流程的一个实例。例如,参看图2A,当某个用户例如通过输入电商网站的网址进入电商网站(S1)时,就启动了业务流程200的一个实例,这将触发业务流程200所定义的一系列的相关服务的实际调用和执行;如果用户点击按钮261(S11),就启动了“提交订单”业务流程300的一个实例,将触发业务流程300所定义的一系列的相关服务的实际调用和执行。
“事务回滚,,(transactionrollback)是事务管理(Transactionmanagement)领域中的一个术语,指的是当事务执行到业务流程的某个节点时,由于出现了异常,把该节点之前所有的执行状态恢复到事务执行之前的状态,从而保持整个事务的原子性与一致性。
方法400始于步骤410。在步骤410,在当前执行的事务所在的业务流程中的预定检查点,确定该检查点的后继流程中包含的至少一个服务。
“检查点,,(Checkpoint),指业务流程中需要进行事务可执行性判断的点。一般来说,可以将检查点设置在业务流程的开始、重要逻辑分支节点之前、各个服务节点之前。可以预先在业务流程中的任何节点设定检查点,并且根据业务流程的实际运行环境,重新设置检查点的位置。检查点的后继流程,指检查点之后的所有业务流程。
作为例子,假设在业务流程200中的业务流程300的开始位置,预先设置了检查点。
通过查询业务流程的定义,可以确定业务流程300的开始位置之后的流程中包含的服务。例如,根据图3和表1,可以确定业务流程300的开始位置之后的流程中包含服务361、362、364、365和366。应当明白,业务流程的定义,确定了后继流程中包含服务361、362、364、365和366,也就确定这些服务相关信息,例如某服务属于外部服务还是内部服务,后继流程中各个路径上的位置,并且,可以根据服务标识符,从运行事务的***中获取服务的相关实时参数。
确定了检查点的后继流程中包含的服务(例如服务361、362、364、365和366)后,本方法的过程前进到步骤420。
在步骤420,查询所述后继流程中包含的至少一个服务中的至少一个不可用的服务。
服务是否可用或服务“可用性”(availability),是指一个服务当前是否可用。业务流程的执行所需调用的内部或外部服务,可能会由于各种原因而变得不可用的状态,也可能从不可用的状态恢复到可用的状态。按照本发明一个实施例,可以用下面的表2(服务可用性状态表)所示的数据结构,实时地记录关于服务可用性的信息。
表2:服务可用性状态表
表2所示的记录包含4个属性数据。属性“服务标识符”的含义与表1的相同;属性“可用性”(Availability)指示一个服务是否可用:“Y”表示可用,“N”表示不可用,由此可以表示不可用的服务;属性“故障相关参数”(failureassociatedparameter)表示服务发生故障时的相关参数,由此可以表示不可用的服务与相关参数的关联关系;属性“故障信息”(ErrorMessage)给出故障的简单描述。
表2中,针对服务CalculateOrder361有一条记录,该记录的属性“可用性”的值是“Y”,表示该服务是可用的。
同样,AllocateInventory362和CheckLoyalty364也是可用的。
针对服务AuthorizePayment365有三条记录:
--针对服务AuthorizePayment365的第1条记录的“可用性”的值为“N”,故障信息为“Communicationerror”(通信故障)。该记录的属性“故障相关参数”的值为“paymentType=Unipay&cardBrand=ICBC”。如前文所述,“paymentType”和“cardBrand”是服务“AuthorizePayment”的两个输入参数,paymentType=UniPay的意思是“支付方式是银联”,cardBrand=ICBC的意思是“发卡银行是工商银行”。该记录表明,如果支付方式(paymentType)是银联(UniPay),并且发卡银行(cardBrand)是工商银行(ICBC),则服务AuthorizePayment365不可用。
--针对服务AuthorizePayment365的第2条记录的“可用性”的值为“N”,故障信息为“notavailable”(无服务)。该记录的属性“故障相关参数”是“paymentType=UniPay&cardBrand=BOC”,其中,cardBrand=BOC意思是“发卡银行是中国银行”。该记录表明,如果支付方式(paymentType)是银联(UniPay),并且发卡银行(cardBrand)是中国银行(BOC),则服务AuthorizePayment365不可用。
--针对服务AuthorizePayment365的第3条记录的“可用性”的值为“Y”。该记录表明,除了上述两种情况,服务AuthorizePayment365是可用的。
针对服务FulfillOrder366有二条记录:
--针对服务FulfillOrder366的第1条记录的“可用性”的值为“N”,故障信息为“notavailable”(无服务)。该记录的属性“故障相关参数”为“fulfillmentCenterId=Beijing”。如前文所述,“fulfillmentCenterId”是服务“FulfillOrder”的输入参数,fulfillmentCenterId=Beijing的意思是“履行地是北京”。该记录表明,如果“履行地是北京”,则服务FulfillOrder366不可用。
--针对服务FulfillOrder366的第2条记录的“可用性”的值为“Y”。该记录表明,除了上一种情况,服务FulfillOrder366是可用的。
表2例示的内容表明,在实际应用中,有些服务的可用性状态是与运行时的特定参数的相关的。例如,支付***的AuthorizePayment服务与运行时的参数(PaymentType,CardBrand)相关。这种参数被称为“相关参数”或“故障相关参数”。因此,可以在表2所示的关于服务可用性的信息中,设置不可用的服务与相关参数的关联关系。这样,就可以根据事务运行过程中服务的实时相关参数的值,查询到与实时相关参数相关联的不可用的服务。
返回图4,如方框450所示,按照本发明一个实施例,本发明方法可以响应于该事务的执行过程中任何服务发生故障,更新关于服务可用性的信息。这样,在同一业务流程的多个事务执行的情况下,在任何一个事务在执行过程中,发现服务出现故障,都可以实时地更新关于服务可用性的信息。例如,当银联与工商银行之间的通讯出现问题,导致AuthorizePayment服务不可用时,本发明实时地更新关于服务可用性的信息,其中设置故障相关参数“paymentType=UniPay&cardBrand=ICBC”,而不是仅仅向用户显示故障信息“CommunicationERROR”。可以在一个数据库中,按照表2的数据结构,为业务流程包含的所有服务,实时地记录和维护关于服务可用性的信息。
本例中,在步骤410中已经确定了检查点的后继流程中包含的服务361、362、364、365和366。从表2可以获知,服务361、362和364都是可用的;而服务365是否可用,取决于当前的实时相关参数paymentType和cardBrand;服务366是否可用,取决于当前的实时相关参数fullfilmentCenterId。
按照本发明一个实施例,所述查询所述后继流程中包含的服务中至少一个不可用的服务的步骤420可以包含以下步骤:
获取所述后继流程中包含的至少一个服务的实时相关参数;
查询与所述实时相关参数相关联的不可用的服务。
一般情况下,根据一个服务的服务标识符,就可以在表2中定位到与服务标识符匹配的记录,由此获取关于该服务的可用性状态的信息。按照本实施例,可以针对任何一个特定服务,获取该特定服务的相关参数的当前的值,即实时相关参数,根据相关参数的当前值,在表2中定位到与服务标识符及其相关参数都匹配的记录,由此获取关于该特定服务的可用性状态,即该特定服务当前是否可用。
参看图2A,本例中,假设用户在步骤S9在图2F的页面上输入的配送信息和支付信息,规定了特定的服务“AuthorizePayemnt”365的参数的值,即paymentType=Unipay,cardBrand=ICBC,该买时参数在步骤S11之前已经被存储起来。由于paymentType和cardBrand都是服务“AuthorizePayemnt”365的故障相关参数,因此,可以首先根据服务AuthorizePayemnt365的名称,获取相关参数paymentType和cardBrand的实时值,即paymentType=Unipay,cardBrand=ICBC;然后,在服务可用性状态表(表2)中查找与该特定服务及其故障相关参数的值匹配的记录,由该记录的可用性的值“N”,可以获知AuthorizePayemnt365当前不可用。
以类似方式,可以获取服务366的可用性状态。
然后,在步骤430,根据所述至少一个不可用的服务,判断该事务是否能被履行。
判断事务是否能被履行,是指根据对事务对应的业务流程定义,所依赖的服务的运行时可用性,来判断该事务在某个检查点后会不会必然失败。
显然,如果检查点的后继流程中只包含一个路径,而该路径上有服务不可用,则可以判定该事务不能被履行。
在实际应用中,检查点的后继流程中往往包含多个路径。例如,本例中,可以从图3获得所确定的服务361、362、364、365和366后继流程中的位置,确定检查点的后继流程中包含两个路径。第一个路径是361->362->364->365->366;第二个路径是361->362->365->366。
按照本发明一个实施例,所述根据所述至少一个不可用的服务判断该事务是否能被履行包含:
判断是否所述后继流程中的每个路径上都有不可用的服务;
如果所述后继流程中的每个路径上都有不可用的服务,则判定该事务不能被履行。
就是说,如果后继流程包含n个路径,则如果这n个路径上的流程都不能执行,则可以判定当前事务不能被履行。
本例中,可以先判断第一个路径(361->362->364->365->366)上的流程中是否有服务不可用,如果有服务不可用,则判定第一个路径的流程不能执行;然后,判断第二个路径(361->362->365->366)上的流程中是否有服务不可用,如果有服务不可用,则判定第二个路径的流程不能执行。
按照本发明一个实施例,所述判断是否所述后继流程中的每个路径上都有不可用的服务包含:
判断该检查点的后继流程中的关键路径上是否有不可用的服务,关键路径是所述后继流程中的所有路径的共同路径;
如果所述后继流程中的关键路径上有不可用的服务,则判定所述后继流程中的每个路径上都有不可用的服务。
本例中,路径361->362是第一个路径(361->362->364->365->366)和第二个路径(361->362->365->366)的共同路径,因此是关键路径;同理,路径365->366也是关键路径。需要指出的是,单一的节点也可被视为一个路径,即服务节点361、362、365和365分别都可被视为一个路径。
由于在步骤420中已经确定服务365当前不可用,而服务365位于关键路径365->366上,因此,后继流程中的关键路径上有不可用的服务,由此可以判定所述后继流程中的每个路径上都有不可用的服务。
由此可以进一步判定,判定当前事务不能被履行。
在步骤430后,执行步骤440,响应于该事务不能被履行的判定,使该事务的执行停止。例如,向执行当前事务的业务流程的主控程序返回一个表示要停止当前事务的参数,由主控程序停止当前事务的执行。
否则,可以返回步骤410,针对业务流程中的下一个预定的检查点,循环地执行步骤410至440的过程。
以上以设置在业务流程300的开始位置的检查点为例,描述了本发明方法各种实施例。显然,上述检查点可以设置在业务流程200的任何一个或多个选定位置,由此可以尽早判定当前事务是否可以被履行,使得能够及时停止执行不能被履行的当前事务。
前面已经参考附图描述了实现本发明的方法的各个实施例。本领域技术人员可以理解的是,上述方法既可以以软件方式实现,也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相结合的方式实现上述方法中的各个步骤,可以提供一种基于相同发明构思的用于避免事务回滚的装置。即使该装置在硬件结构上与通用处理设备相同,由于其中所包含的软件的作用,使得该装置表现出区别于通用处理设备的特性,从而形成本发明的各个实施例的装置。
图5示意性表示按照发明实施例的用于避免事务回滚的装置的简略框图。
如图所示,按照本发明一个实施例的用于避免事务回滚的装置500,包含:服务确定单元510、服务状态查询单元520、事务可执行性判定单元530和事务执行控制单元540。
按照本发明一个实施例,服务确定单元510被配置用于在当前执行的事务所在的业务流程中的预定检查点,确定该检查点的后继流程中包含的至少一个服务;服务状态查询单元520被配置用于查询服务确定单元确定的后继流程中包含的至少一个服务中的至少一个不可用的服务;事务可执行性判定单元530被配置用于根据服务状态查询单元查询的所述至少一个不可用的服务,判断该事务是否能被履行;事务执行控制单元540,被配置用于响应于事务可执行性判定单元对该事务不能被履行的判定,使该事务的执行停止。
按照本发明一个实施例,事务可执行性判定单元包含:用于判断是否所述后继流程中的每个路径上都有不可用的服务的单元;用于如果所述后继流程中的每个路径上都有不可用的服务,则判定该事务不能被履行的单元。
按照本发明一个实施例,所述用于判断是否所述后继流程中的每个路径上都有不可用的服务的单元包含:
用于判断所述后继流程中的关键路径上是否有不可用的服务的单元,关键路径是所述后继流程中的所有路径的共同路径;
用于如果所述后继流程中的关键路径上有不可用的服务,则判定所述后继流程中的每个路径上都有不可用的服务的单元。
按照本发明一个实施例,所述服务状态查询单元进一步包含:参数获取单元,被配置用于获取所述后继流程中包含的至少一个服务的实时相关参数,所述服务状态查询单元进一步被配置用于查询与所述实时相关参数相关联的不可用的服务。
按照本发明一个实施例,装置500进一步包含:
服务可用性信息更新单元550,被配置用于响应于该事务的执行过程中服务的状态变化,更新关于服务可用性的信息,所述关于服务可用性的信息包含不可用的服务。
按照本发明一个实施例,所述关于服务可用性的信息进一步包含:不可用的服务与相关参数的关联关系。
以上说明了本发明的用于避免事务回滚的装置的实施例。在对用于避免事务回滚的装置的实施例的描述中,省略了与对用于避免事务回滚的方法的描述中重复的内容,或者能够从上述描述中导出的内容。
采用本发明各实施例的***,能够尽早发现事务处理的不可执行性,尽早终止事务处理的执行,从而避免事务处理所调用的服务的回滚。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种用于避免事务回滚的方法,包含:
在当前执行的事务所在的业务流程中的预定检查点,确定该检查点的后继流程中包含的至少一个服务;
查询所述后继流程中包含的至少一个服务中的至少一个不可用的服务;
根据所述至少一个不可用的服务,判断该事务是否能被履行;
响应于该事务不能被履行的判定,使该事务的执行停止。
2.如权利要求1所述的方法,其中,所述根据所述至少一个不可用的服务判断该事务是否能被履行包含:
判断是否所述后继流程中的每个路径上都有不可用的服务;
如果所述后继流程中的每个路径上都有不可用的服务,则判定该事务不能被履行。
3.如权利要求2所述的方法,其中,所述判断是否所述后继流程中的每个路径上都有不可用的服务包含:
判断该检查点的后继流程中的关键路径上是否有不可用的服务,关键路径是所述后继流程中的所有路径的共同路径;
如果所述后继流程中的关键路径上有不可用的服务,则判定所述后继流程中的每个路径上都有不可用的服务。
4.如权利要求1-3的任何之一所述的方法,其中,所述查询所述后继流程中包含的至少一个服务中的至少一个不可用的服务包含:
获取所述后继流程中包含的至少一个服务的实时相关参数;
查询与所述实时相关参数相关联的不可用的服务。
5.如权利要求1所述的方法,进一步包含:
响应于该事务的执行过程中服务状态的变化,更新关于服务可用性的信息,所述关于服务可用性的信息包含不可用的服务。
6.如权利要求5所述的方法,所述关于服务可用性的信息进一步包含不可用的服务与相关参数的关联关系。
7.一种用于避免事务回滚的装置,包含:
服务确定单元,被配置用于在当前执行的事务所在的业务流程中的预定检查点,确定该检查点的后继流程中包含的至少一个服务;
服务状态查询单元,被配置用于查询服务确定单元确定的后继流程中包含的至少一个服务中的至少一个不可用的服务;
事务可执行性判定单元,被配置用于根据服务状态查询单元查询的所述至少一个不可用的服务,判断该事务是否能被履行;和
事务执行控制单元,被配置用于响应于事务可执行性判定单元对该事务不能被履行的判定,使该事务的执行停止。
8.如权利要求7所述的装置,其中,事务可执行性判定单元包含:
用于判断是否所述后继流程中的每个路径上都有不可用的服务的单元;
用于如果所述后继流程中的每个路径上都有不可用的服务,则判定该事务不能被履行的单元。
9.如权利要求8所述的装置,其中,所述用于判断是否所述后继流程中的每个路径上都有不可用的服务的单元包含:
用于判断所述后继流程中的关键路径上是否有不可用的服务的单元,关键路径是所述后继流程中的所有路径的共同路径;
用于如果所述后继流程中的关键路径上有不可用的服务,则判定所述后继流程中的每个路径上都有不可用的服务的单元。
10.如权利要求7-9所述的装置,其中,所述服务状态查询单元进一步包含:参数获取单元,被配置用于获取所述后继流程中包含的至少一个服务的实时相关参数,
所述服务状态查询单元进一步被配置用于查询与所述实时相关参数相关联的不可用的服务。
11.如权利要求7所述的装置,进一步包含:
服务可用性信息更新单元,被配置用于响应于该事务的执行过程中服务状态的变化,更新关于服务可用性的信息,所述关于服务可用性的信息包含不可用的服务。
12.如权利要求11所述的装置,所述关于服务可用性的信息进一步包含:不可用的服务与相关参数的关联关系。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410178265.0A CN105094758A (zh) | 2014-04-29 | 2014-04-29 | 用于避免事务回滚的方法和装置 |
US14/676,875 US20150310437A1 (en) | 2014-04-29 | 2015-04-02 | Avoiding transaction rollback |
US14/697,992 US20150309836A1 (en) | 2014-04-29 | 2015-04-28 | Avoiding transaction rollback |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410178265.0A CN105094758A (zh) | 2014-04-29 | 2014-04-29 | 用于避免事务回滚的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105094758A true CN105094758A (zh) | 2015-11-25 |
Family
ID=54335145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410178265.0A Pending CN105094758A (zh) | 2014-04-29 | 2014-04-29 | 用于避免事务回滚的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150310437A1 (zh) |
CN (1) | CN105094758A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056116A (zh) * | 2023-10-11 | 2023-11-14 | 荣耀终端有限公司 | 一种流程管理方法和电子设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169768B (zh) * | 2016-03-07 | 2021-07-27 | 阿里巴巴集团控股有限公司 | 异常交易数据的获取方法和装置 |
JP7147347B2 (ja) * | 2018-08-09 | 2022-10-05 | 日本電信電話株式会社 | 原子性保証装置および原子性保証方法 |
CN110995791B (zh) * | 2019-11-18 | 2023-06-06 | 上海联众网络信息股份有限公司 | 交互式医疗信息管理方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783132A (zh) * | 2004-11-22 | 2006-06-07 | 微软公司 | 通过工作流事务的批处理来同步运行库和应用状态 |
CN101763591A (zh) * | 2008-12-22 | 2010-06-30 | 国际商业机器公司 | 面向服务的架构中的智能调解*** |
CN101809563A (zh) * | 2007-09-26 | 2010-08-18 | 微软公司 | 分布式、可扩展应用程序的创建和部署 |
CN102929709A (zh) * | 2011-08-08 | 2013-02-13 | 阿里巴巴集团控股有限公司 | 任务流异常的处理方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7516361B2 (en) * | 2005-06-27 | 2009-04-07 | Sun Microsystems, Inc. | Method for automatic checkpoint of system and application software |
US7778882B2 (en) * | 2006-03-03 | 2010-08-17 | Mukesh Chatter | Method, system and apparatus for automatic real-time iterative commercial transactions over the internet in a multiple-buyer, multiple-seller marketplace, optimizing both buyer and seller needs based upon the dynamics of market conditions |
US8214451B2 (en) * | 2007-01-19 | 2012-07-03 | Alcatel Lucent | Network service version management |
US10061464B2 (en) * | 2010-03-05 | 2018-08-28 | Oracle International Corporation | Distributed order orchestration system with rollback checkpoints for adjusting long running order management fulfillment processes |
-
2014
- 2014-04-29 CN CN201410178265.0A patent/CN105094758A/zh active Pending
-
2015
- 2015-04-02 US US14/676,875 patent/US20150310437A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783132A (zh) * | 2004-11-22 | 2006-06-07 | 微软公司 | 通过工作流事务的批处理来同步运行库和应用状态 |
CN101809563A (zh) * | 2007-09-26 | 2010-08-18 | 微软公司 | 分布式、可扩展应用程序的创建和部署 |
CN101763591A (zh) * | 2008-12-22 | 2010-06-30 | 国际商业机器公司 | 面向服务的架构中的智能调解*** |
CN102929709A (zh) * | 2011-08-08 | 2013-02-13 | 阿里巴巴集团控股有限公司 | 任务流异常的处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
于万钧等: "基于OWL的工作流异常处理建模方法", 《吉林大学学报(工学版)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056116A (zh) * | 2023-10-11 | 2023-11-14 | 荣耀终端有限公司 | 一种流程管理方法和电子设备 |
CN117056116B (zh) * | 2023-10-11 | 2024-04-02 | 荣耀终端有限公司 | 一种流程管理方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20150310437A1 (en) | 2015-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4677188B2 (ja) | 統合サプライチェーンシステム中の管理、資金供給および供給方法と装置 | |
KR20210050525A (ko) | 분할 가능한 증권형 토큰 | |
US20140244315A1 (en) | Systems and methods for managing mobile device life cycle | |
CN105447734B (zh) | 订单信息处理方法及*** | |
KR20140090088A (ko) | 콘텍스트 기반 키보드 | |
CN105224536A (zh) | 划分数据库的方法和装置 | |
US20230229161A1 (en) | Methods and apparatus for controlling autonomous vehicles | |
CN113312116B (zh) | 用于从应用托管基础设施卸载应用扩展脚本执行的***和方法 | |
CN105321065A (zh) | 交易的多目的地路由 | |
CN105094758A (zh) | 用于避免事务回滚的方法和装置 | |
CN103942714A (zh) | 支付方法及装置 | |
US8655775B1 (en) | Method and system for merchant debit routing table change detection | |
CN101206737A (zh) | 用于确定组织使用信息技术资源的准备性的方法和*** | |
US20150356575A1 (en) | Methods and systems for predicting online and in-store purchasing | |
US20210142316A1 (en) | Gift card management system | |
US20200126105A1 (en) | System and method for assisting customers achieve purchase goals | |
CN110580259A (zh) | 基于流程管理大数据的客户需求挖掘方法和设备 | |
US20170076367A1 (en) | Systems, Methods, and Software For Lien Payoff and Transfer of Title | |
US20230359984A1 (en) | Methods and systems for inventory management for blockchain-based transactions | |
US11797526B2 (en) | Data structures and methods for electronically recording events | |
US10970702B2 (en) | Systems and methods for facilitating multi-party payment transactions | |
US20170200176A1 (en) | Systems and methods for tracking consumer spend behaviors | |
US20150046232A1 (en) | Systems and methods for order attribute tracking | |
AU2019365846A1 (en) | Microcomponents for data integration and methods thereof | |
US11941589B2 (en) | System and method for associating a successful second transaction with a first failed transaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151125 |
|
RJ01 | Rejection of invention patent application after publication |