首页 / 专利库 / 计算机网络 / 服务器 / 实现基于区块链的工作流

实现基于链的工作流

阅读:828发布:2020-05-08

专利汇可以提供实现基于链的工作流专利检索,专利查询,专利分析的服务。并且本文公开了用于实现基于 区 块 链 的工作流的方法、系统和装置,包括编码在计算机存储介质上的 计算机程序 。所述方法之一包括维护用于识别区块链网络中记录的一个或多个状态的数据,所述一个或多个状态作为将由位于所述区块链网络之外的参与工作流的一个或多个客户端设备执行的一个或多个客户端服务方法的触发状态;从所述第一客户端设备接收用于在区块链网络上执行交易的 请求 ;指示所述区块链网络执行所述交易;所述网络 服务器 监测执行所述交易之后区块链网络上的状态;识别所述状态是参与工作流的第二客户端设备的客户端服务方法的触发状态;以及向所述第二客户端设备发送关于达成所述触发状态的通知。,下面是实现基于链的工作流专利的具体信息内容。

1.一种计算机实现的方法,包括:
网络服务器维护用于识别链网络中记录的一个或多个状态的数据,所述一个或多个状态作为待由在所述区块链网络外参与工作流的一个或多个客户端设备执行的一个或多个客户端服务方法的触发状态;
所述网络服务器从第一客户端设备接收用于在区块链网络上执行交易的请求
所述网络服务器指示所述区块链网络执行所述交易;
所述网络服务器监测所述交易执行之后所述区块链网络上的状态;
所述网络服务器识别所述状态是参与所述工作流的第二客户端设备的客户端服务方法的触发状态,其中,所述客户端服务方法能够由位于所述区块链网络之外的所述第二客户端设备执行;以及
所述网络服务器向所述第二客户端设备发送关于达成所述触发状态的通知。
2.如权利要求1所述的计算机实现的方法,还包括:
所述网络服务器从所述第二客户端设备接收对所述触发状态的订阅,其中,当在所述区块链网络上出现所述触发状态时,所述网络服务器向所述第二客户端设备发送关于所述触发状态的通知。
3.如权利要求1或2所述的计算机实现的方法,其中,所述网络服务器监测所述交易执行之后所述区块链网络上的状态,包括:
检索所述交易执行之后存储在所述区块链网络上的日志数据。
4.如权利要求3所述的计算机实现的方法,还包括:
将所述日志数据存储在所述网络服务器上。
5.如权利要求3所述的计算机实现的方法,其中,
所述日志数据既不被存储在所述第一客户端设备中也不被存储在所述第二客户端设备中。
6.如前述任一权利要求所述的计算机实现的方法,其中,用于在所述区块链网络上执行所述交易的请求是对所述第一客户端设备的第一客户端服务方法的响应,所述第一客户端服务方法已经由位于所述区块链网络之外的所述第一客户端设备执行。
7.如前述任一权利要求所述的计算机实现的方法,其中,所述网络服务器指示所述区块链网络执行所述交易,包括:
调用部署在所述区块链网络上的智能合约以在所述区块链网络上执行状态转换方法,其中,所述智能合约是由所述网络服务器生成的。
8.如前述任一权利要求所述的计算机实现的方法,还包括:
所述网络服务器从所述第二客户端设备接收关于在位于所述区块链网络之外的所述第二客户端设备执行所述客户端服务方法之后达成第二状态的通知;以及所述网络服务器指示所述区块链网络将所述区块链网络的状态更新为所述第二状态。
9.如权利要求8所述的计算机实现的方法,其中,所述网络服务器指示所述区块链网络将所述区块链网络的状态更新为所述第二状态,包括:
调用部署在所述区块链网络上的智能合约以在所述区块链网络上执行状态转换方法,其中,所述智能合约是由所述网络服务器生成的。
10.如前述任一权利要求所述的计算机实现的方法,其中,所述区块链网络是第一区块链网络,并且所述网络服务器还与第二区块链网络通信地链接,所述方法还包括:
所述网络服务器监测所述第二区块链网络上的第二当前状态;
所述网络服务器识别所述第二当前状态是参与所述工作流的第三客户端设备的第三客户端服务方法的触发状态,其中,所述第三客户端服务方法能够由位于所述第二区块链网络之外的所述第三客户端设备执行;以及
所述网络服务器向所述第三客户端设备发送关于达成所述第三客户端设备方法的触发状态的通知。
11.一种用于实现基于区块链的工作流的装置,所述装置包括用于执行如权利要求1至
10中任一项所述的计算机实现的方法的多个模块。
12.一种用于实现基于区块链的工作流的系统,包括:
一个或多个处理器;和
耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行权利要求1至10中任一项所述的计算机实现的方法。

说明书全文

实现基于链的工作流

技术领域

[0001] 本文涉及实现基于区块链的工作流。

背景技术

[0002] 分布式账本(DLS),也可以被称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,DLS通常被称为区块链网络。区块链网络的示例类型可以包括公有区块链网络、私有区块链网络和联盟区块链网络。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。
[0003] 工作流通常包括用于完成任务的一系列活动。可以使用软件工具将工作流自动化,这些软件工具应用规则来确定一个步骤是否已成功完成以及何时可以开始下一步骤。在一些情况下,工作流系统可以被设计为组成并执行一系列计算或数据操纵步骤。然而,实现工作流系统的复杂性可导致工作流系统的处理效率低下。因此,需要用于提高工作流系统效率的解决方案。
发明内容
[0004] 本文描述了用于实现基于区块链的工作流的技术。这些技术通常涉及实现基于区块链网络的工作流系统。工作流可用于公路建设、飞机制造、造船、电子商务或任何其他应用。在一些实施例中,将工作流与区块链网络集成可以帮助简化工作流的实现并提高工作流系统的安全性和效率。
[0005] 本文还提供了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
[0006] 本文还提供了用于实施本文提供的所述方法的系统。所述系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
[0007] 应了解,依据本文的方法可以包括本文描述的方面和特征的任意组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任意组合。
[0008] 以下在附图和描述中阐述了本文的一个或多个实施例的细节。根据说明书和附图以及权利要求书,本文的其他特征和优点将显现。

附图说明

[0009] 图1是示出了可用于执行本文的实施例的环境的示例的图。
[0010] 图2是示出根据本文的实施例的架构的示例的图。
[0011] 图3是示出根据本文的实施例的工作流系统的示例的图。
[0012] 图4是示出了可以根据本文的实施例执行的处理的流程图
[0013] 图5是说明可根据本文的实施例执行的另一处理的流程图。
[0014] 图6描绘了根据本文的实施例的装置的模块的示例。
[0015] 各附图中相同的附图标记和名称表示相同的元件。具体实施例
[0016] 本文描述了用于实现基于区块链的工作流的技术。这些技术通常涉及实现基于区块链网络的工作流系统。工作流可用于公路建设、飞机制造、造船、电子商务或任何其他应用。在一些实施例中,将工作流与区块链网络集成可以帮助简化工作流的实现并提高工作流系统的安全性和效率。
[0017] 本文中描述的技术产生若干技术效果。在一些实施例中,为了实现基于区块链的工作流,提供工作流规范以用于生成在区块链网络上执行的智能合约和要在区块链网络之外执行的用于一个或多个客户端设备的可配置的客户端服务逻辑。本文描述的技术可以将客户端侧的客户端服务逻辑与区块链侧的智能合约集成以实现工作流。在一些实施例中,智能合约包括一个或多个状态转换方法,并且可配置的客户端服务逻辑包括一个或多个客户端服务方法。基于区块链的工作流可以包括智能合约中的一个或多个状态转换方法,以及可配置的客户端服务逻辑中的一个或多个客户端服务方法。
[0018] 在一些实施例中,智能合约将指示状态改变的工作流的状态和事件存储到区块链网络上的日志文件中。通过将状态和事件存储在区块链网络上的日志文件中,由于区块链网络上的日志文件是不可篡改的,因此有关工作流处理状态(即工作流的状态)的信息可以更加安全且更可靠。在一些实施例中,区块链网络中记录的状态和事件的改变可以自动触发要在区块链网络之外执行的一个或多个客户端服务方法。恶意行为者不能篡改有关工作流的状态和事件的信息,以危害网络或干扰工作流的正常操作。这样,所描述的技术可以提高工作流系统的安全性。
[0019] 在一些实施例中,工作流可以是多个参与者之间的联合或协作工作流,其中每个参与者可以与客户端设备(例如,执行客户端服务逻辑的客户端设备)或区块链网络上的网络节点(例如,能够执行智能合约的共识节点或非共识节点)相关联。在一些实施例中,网络节点可以包括与一个或多个区块链网络和一个或多个客户端设备通信链接的服务提供商(也称为云服务器)。云服务器可以充当工作流的协调节点。云服务器可以是中间节点或中间软件,其向一个或多个区块链网络和一个或多个客户端设备提供相应的接口
[0020] 在一些实施例中,可以根据工作流规范实现基于多方区块链的工作流以促进智能合约的自动生成(例如,存储区块链网络的状态、生成状态转换方法以及为状态转换方法提供许可控制)。在一些实施例中,多方协作工作流的参与者可以根据个人需要定义工作流规范的对应部分,并且单独执行客户端服务逻辑的客户端服务方法。在一些实施例中,多方协作工作流可以为多方协作工作流的每个参与者提供定义的接口以与区块链网络交互,从而减轻客户端设备设计或协商彼此间的兼容接口中的负担。在一些实施例中,工作流的客户端设备可以专注于客户端服务方法的实现,而无需在客户端设备和智能合约如何彼此交互的细节上花费太多精
[0021] 在一些实施例中,所描述的技术可以帮助降低客户端设备上的处理和存储要求。在一些实施例中,云服务器可以执行繁重的操作并为基于区块链的多方协作工作流存储包括与工作流相关的状态和事件的大量数据。这样,客户端设备可以是例如用户设备或手持设备的轻设备,其无需大型处理和存储容量来实现和参与区块链交易。此外,客户端设备可以很容易地被配置,例如,通过下载、同步、编译或以其他方式接收客户端服务逻辑以及来自云服务器的任何更新或指令,且客户端设备无需开发复杂且兼容的客户端服务逻辑。在一些实施例中,多方协作工作流可以具有更好的可扩展性以适应更多客户端设备并且对参与者更加用户友好。
[0022] 在一些实施例中,所描述的技术可以帮助降低整个工作流系统的存储要求。在一些实施例中,云服务器可以用作用于协调多个客户端设备和多个区块链网络之间的多方协作工作流的中心化节点。在一些实施例中,基于区块链的多方协作工作流的数据的仅一个或几个副本可以被存储在云服务器上,而不是被存储在每个客户端设备中。所描述的技术有助于简化多方协作工作流的实现并提高工作流系统的效率。
[0023] 为本文实施例提供进一步的背景,并且如上所述,分布式账本系统(DLS),又可以被称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易和存储数据。尽管术语“区块链”通常与特定网络和/或用例相关联,但是在不参考任何特定用例的情况下,本文使用“区块链”来一般地指代DLS。
[0024] 区块链是以交易不可篡改的方式存储交易的数据结构。因此,区块链上记录的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包含在链中紧邻其之前的前一区块的加密哈希值(cryptographic hash)链接到该前一区块。每个区块还包括时间戳、自身的加密哈希值以及一个或多个交易。已经被区块链网络中的节点验证的交易经哈希处理并编入默克尔(Merkle)树中。Merkle树是一种数据结构,在该树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值在该分支的根处级联(concatenated)。此处理沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。通过确定哈希值是否与树的结构一致而可快速验证该哈希值是否为存储在该树中的交易的哈希值。
[0025] 区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等来管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。本文中参考联盟区块链网络进一步详细描述了本文的实施例。然而,可以预期,本文实施例可以在任何适当类型的区块链网络中实现。
[0026] 通常,联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识处理由经授权的一组节点控制,所述节点可以被称为共识节点,一个或多个共识节点由各自的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体可以操作联盟区块链网络中的至少一个节点。
[0027] 在一些示例中,在联盟区块链网络内,全局区块链被提供作为跨所有节点复制的区块链。也就是说,对于全局区块链,所有共识节点处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在联盟区块链网络内实施共识协议。例如,联盟区块链网络可以实现实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)共识,下面将进一步详细描述。
[0028] 图1是示出了可用于执行本文的实施例的环境100的示例的图。在一些示例中,环境100使得实体能够参与联盟区块链网络102。环境100包括计算设备106,108以及网络110。在一些示例中,网络110包括局域网(LAN)、广域网(WAN)、因特网或其组合,并且连接网络站点、用户设备(例如,计算设备)和后台系统。在一些示例中,可以通过有线和/或无线通信链路来访问网络110。在一些示例中,网络110使得与区块链网络102通信以及在联盟区块链网络102内部进行通信成为可能。通常,网络110表示一个或多个通信网络。在一些情况下,计算设备106、108可以是云计算系统(未示出)的节点,或者每个计算设备106、108可以是包括通过网络互连的多个计算机并且充当分布式处理系统的单独的云计算系统。
[0029] 在所描绘的示例中,计算设备106、108可以各自包括能够作为节点参与至联盟区块链网络102中的任何适当的计算系统。计算设备的示例包括但不限于服务器、台式计算机、膝上型计算机、平板计算设备以及智能电话。在一些示例中,计算设备106、108承载一个或多个由计算机实施的服务,用于与联盟区块链网络102进行交互。例如,计算设备106可以承载第一实体(例如,用户A)的由计算机实施的、例如交易管理系统的服务,第一实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。计算设备108可以承载第二实体(例如,用户B)的由计算机实施的、例如交易管理系统的服务,例如,第二实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。在图1的示例中,联盟区块链网络102被表示为节点的点对点网络(Peer-to-Peer network),且计算设备106、108分别提供参与联盟区块链网络102的第一实体和第二实体的节点。
[0030] 图2是示出根据本文的实施例的架构200的示例的图。示例性概念架构200包括分别对应于参与者A、参与者B和参与者C的参与者系统202、204、206。每个参与者(例如,用户、企业)参与到作为点对点网络提供的区块链网络212中,该点对点网络包括多个节点214,至少一些节点将信息不可篡改地记录在区块链216中。如图中进一步详述,尽管在区块链网络212中示意性地描述了单个区块链216,但是在区块链网络212上提供并维护了区块链216的多个副本。
[0031] 在所描绘的示例中,每个参与者系统202、204、206分别由参与者A、参与者B和参与者C提供或代表参与者A、参与者B和参与者C,并且在区块链网络中作为各自的节点214发挥作用。如这里所使用的,节点通常是指连接到区块链网络212且使相应的参与者能够参与到区块链网络中的个体系统(例如,计算机、服务器)。在图1的示例中,参与者对应于每个节点214。然而,可以预期,一个参与者可以操作区块链网络212内的多个节点214,和/或多个参与者可以共享一个节点214。在一些示例中,参与者系统202、204、206使用协议(例如,超文本传输协议安全(HTTPS))和/或使用远程过程调用(RPC)与区块链网络212通信或通过区块链网络212进行通信。
[0032] 节点214可以在区块链网络212内具有不同的参与程度。例如,一些节点214可以参与共识处理(例如,作为将区块添加到区块链216的矿工节点),而其他节点214不参与此共识处理。作为另一示例,一些节点214存储区块链216的完整的副本,而其他节点214仅存储区块链216的一部分的副本。例如,数据访问特权可以限制相应的参与者在其相应系统内存储的区块链数据。在图2的示例中,参与者系统202、204和206存储区块链216的相应的完整副本216'、216'’和216”'。
[0033] 区块链(例如,图2的区块链216)由一系列区块组成,每个区块存储数据。所述数据的示例包括表示两个或更多个参与者之间的交易的交易数据。尽管本文通过非限制性示例使用了“交易”,但是可以预期,任何适当的数据可以存储在区块链中(例如,文档、图像、视频、音频)。所述交易的示例可以包括但不限于有价物的交换(例如,资产、产品、服务、货币)。交易数据不可篡改地存储在区块链中。也就是说,交易数据不能改变。
[0034] 在将交易数据存储在区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供)转换为固定长度哈希值(也作为字符串数据提供)的处理。不可能对哈希值进行去哈希处理(un-hash)以获取交易数据。哈希处理可确保即使交易数据轻微改变也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括但不限于输出256位哈希值的安全哈希算法(SHA)-256。
[0035] 多个交易的交易数据被哈希处理并存储在区块中。例如,提供两个交易的哈希值,并对它们本身进行哈希处理以提供另一个哈希值。重复此处理,直到针对所有要存储在区块中的交易提供单个哈希值为止。该哈希值被称为Merkle根哈希值,并存储在区块的头中。任何交易中的更改都会导致其哈希值发生变化,并最终导致Merkle根哈希值发生变化。
[0036] 通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并执行将区块添加到区块链中的操作。这种节点被称为共识节点。如上介绍的PBFT用作共识协议的非限制性示例。共识节点执行共识协议以将交易添加到区块链,并更新区块链网络的整体状态。
[0037] 进一步详细地,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将所得的哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(Merkle根哈希值)。将此哈希值添加到区块头中。共识节点还确定区块链中最近的区块的哈希值(即,添加到区块链中的最后一个区块)。共识节点还向区块头添加随机数(nonce)和时间戳。
[0038] 通常,PBFT提供容忍拜占庭故障(例如,故障节点、恶意节点)的实际拜占庭状态机复制。这通过假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的操纵消息)而在PBFT中实现。在PBFT中,以包括主共识节点和备共识节点的顺序提供共识节点。主共识节点被周期性地改变,交易由区块链网络内达成关于区块链网络的世界状态的协议的所有共识节点添加到区块链中。在此处理中,在共识节点之间传输消息,并且每个共识节点证明从指定的对等节点接收消息,并验证在传输期间所述消息未被修改
[0039] 在PBFT中,在多个阶段提供共识协议,所有共识节点以同一状态开始。首先,客户端向主共识节点发送请求以调用服务操作(例如,在区块链网络内执行交易)。响应于接收所述请求,主共识节点将所述请求多播到备共识节点。所述备共识节点执行所述请求,并且每个节点都向客户端发送回复。客户端等待直到收到阈值数量的回复。在一些示例中,客户端等待接收f+1个回复,其中f是区块链网络内可以容忍的故障共识节点的最大数量。最终结果是,足够数量的共识节点对于要添加到区块链的记录的顺序达成一致,并且所述记录被接受或拒绝。
[0040] 在一些区块链网络中,用密码学来维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能看出交易的细节,则这两个节点可以对交易数据进行加密处理。加密处理的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既进行加密(从明文生成密文)又进行解密(从密文生成明文)的加密处理。在对称加密中,同一密钥可用于多个节点,因此每个节点都可以对交易数据进行加密/解密。
[0041] 非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何或所有其他节点是已知的。节点可以使用另一个节点的公钥来加密数据,并且该加密的数据可以使用其他节点的私钥被解密。例如,再次参考图2,参与者A可以使用参与者B的公钥来加密数据,并将加密数据发送给参与者B。参与者B可以使用其私钥来解密该加密数据(密文)并提取原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥解密。
[0042] 非对称加密用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以根据参与者A的该数字签名来确认该消息是由该节点发送的。数字签名也可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者A将向参与者B发送消息。参与者A生成该消息的哈希值,然后使用其私钥加密该哈希值以提供为加密哈希值的数字签名。参与者A将该数字签名附加到该消息上,并将该具有数字签名的消息发送给参与者B。参与者B使用参与者A的公钥解密该数字签名,并提取哈希值。参与者B对该消息进行哈希处理并比较哈希值。如果哈希值相同,参与者B可以确认该消息确实来自参与者A且未被篡改。
[0043] 图3是示出根据本文的实施例的系统的示例的图。示例性系统300基于区块链网络实现工作流。在一些实施例中,工作流可以是多个参与者之间的接合点或多方工作流,并且每个参与者可以与区块链网络的客户端设备或网络节点相关联(例如,执行客户端服务逻辑的客户端设备和执行智能合约的区块链网络节点)。作为示例,系统300包括一个或多个区块链网络(例如,区块链网络A 302和区块链网络B 352)、云服务器(或云服务提供商)304、以及一个或多个客户端设备(例如,客户端设备A 370和客户端设备B 375)。在一些实施例中,所述区块链网络302或352可以是联盟区块链网络。云服务器304和客户端设备370或375可以包括例如被编程为执行本文描述的方法的任何合适的计算机、模块、服务器或计算元件。在一些实施例中,客户端设备可以包括用户设备,诸如个人计算机、智能电话、平板电脑或其他手持设备。
[0044] 在一些实施例中,系统300基于区块链网络实现联合工作流,使得工作流中涉及的每个参与者(例如,客户端设备370或375)可以处理工作流的至少一部分并且经由区块链网络A 302(例如,使用区块链网络302上执行的智能合约(例如,智能合约310))和/或区块链335(例如,使用区块链网络352上执行的智能合约(例如,智能合约315))与其他参与者交互。在一些实施例中,云服务器304、以及客户端设备370和/或375可以包括用于存储用于实现工作流逻辑的状态、事件和其他数据的数据存储(例如,数据库)。在一些实施例中,云服务器304存储用于实现工作流逻辑的状态314、事件316和其他数据342并将这些数据提供给客户端设备370或375,而客户端设备370或375可以是轻设备并且不需要具有大的处理和存储能力。
[0045] 在一些实施例中,工作流可以包括用于完成任务的一系列活动。在一些实施例中,除了第一步骤和最后一步之外,工作流中的每个活动或步骤可以具有在其之前的具体步骤和在其之后的具体步骤。工作流可以线性工作流,其中第一步通常是由外部事件触发的,也可以是循环结构,其中第一步是由完成最后一步触发的。可以使用软件工具将工作流自动化,这些软件工具应用预定规则来确定一个步骤何时功完成以及何时可以开始下一步骤。例如,可以专设计工作流系统以基于区块链网络(例如,区块链网络302或352)构成和执行一系列计算或数据操纵步骤。计算机化工作流的示例包括调用数据、程序和其他输入并产生可包括可视化和分析结果的输出的计算机脚本。可以使用例如C/C++、JAVA、R或MATLAB的任何合适的编程语言,或者使用诸如PYTHON或PERL的脚本语言和命令行界面在程序中实现这些工作流程。可以基于视觉流程图、逻辑图表或程序编码来开发工作流程系统,以描述由工作流程参与者执行的工作流逻辑或引擎。
[0046] 在一些实施例中,云服务器304可以用作多方工作流的参与者之间的中间节点或协调节点。例如,云服务器304可以为不同的工作流参与者(例如,客户端设备370和375)识别或分配任务(例如,客户端服务方法362a-c和364a-c),并且与每个参与者以及区块链网络(例如,区块链网络A 302和区块链网络B 352)进行通信。在一些实施例中,云服务器304可以包括工作流配置引擎340(例如,用于生成客户端服务逻辑和/或智能合约逻辑)、交易处理引擎350(例如,用于处理来自客户端设备的交易请求和来自区块链网络客户端设备的响应)和状态转换引擎360(例如,用于监测和维护状态转换以及与客户端设备和区块链网络交互)。在一些实施例中,云服务器304可以包括用于实现多方工作流的附加或不同组件。
[0047] 在一些实施例中,工作流配置引擎340可以生成可由一个或多个计算机执行的一个或多个工作流逻辑。工作流逻辑可以包括一个或多个处理中定义的操作;管理和监测工作流中的活动或方法362a-c的状态;以及根据定义操作确定要转换到哪个新活动,从而促进信息、任务和事件流动。在一些实施例中,工作流逻辑可以包括例如以下的功能:(1)验证当前处理状态(例如,检查在给定当前状态或多个状态下执行任务是否有效),(2)确定执行参与者的权限(例如,检查请求执行任务的参与者是否被允许或被授权执行任务)以及(3)执行任务(例如,通过在先前验证通过之后执行条件脚本,工作流逻辑继续执行任务,如果执行成功完成,则返回结果;如果不成功,则向任务的触发者或请求者报告错误)。
[0048] 在一些实施例中,可以定义状态、事件、角色、转换方法、客户端服务方法和上下文中的一个或多个,以实现工作流。
[0049] 在一些实施例中,工作流的状态可以指示工作流的处理状态。在一些实施例中,状态可以被配置为记录一个或多个计算机系统事件和/或用户交互。在一些实施例中,状态由区块链系统或网络中存储的工作流中定义的一个或多个参数或变量的一个或多个值(例如,作为字符串、一个或多个数字等)表示。电子商务工作流中的状态示例包括“开始Start”、“项目可用Item Available”、“报价已提交Offer Placed”或“已接受Accepted”。可以在例如在公路建设、飞机制造、造船或任何其他应用的其他工作流中定义不同的状态。
[0050] 在一些实施例中,事件可以对包括工作流状态转换的指示。例如,事件可以指示工作流状态已经改变为目标状态。在一些实施例中,事件由区块链系统或网络中存储的工作流中定义的一个或多个参数或变量的一个或多个值(例如,作为字符串、一个或多个数字等)表示。事件的示例包括“现在开始is Start Now”、“项目现在可用is Item Available Now”、“报价现在提交is Offer Placed Now”、“现在接受is Accepted Now”和“现在拒绝is Rejected Now”等。在这些示例中,事件“现在开始”可以指示工作流已更改为“开始”状态,事件“现在项目可用”可以指示工作流已更改为“项目可用”状态。
[0051] 在一些实施例中,状态和事件是在区块链网络中部署的智能合约与客户端设备的工作流逻辑之间使用的公共变量。可以在智能合约和工作流逻辑之间共同定义和使用状态和事件,以促进客户端设备的工作流逻辑与区块链网络的集成以及工作流的参与者之间的工作流的状态和事件的通信。
[0052] 在一些实施例中,例如,通过调用状态转换方法,工作流中的状态转换可以被记录在区块链中。在一些实施例中,状态转换方法包括可以例如由执行智能合约的区块链节点执行以将工作流的状态改变为目标状态的计算机程序或处理。在一些实施例中,状态转换方法可以记录智能合约中的当前状态、事件和其他数据。在一些实施例中,状态转换方法可以指定以下中的至少一个:状态转换方法的名称、允许访问状态转换方法的一个或多个角色、包括可以改变为另一状态的状态的状态列表、一个或多个目标状态,一个或多个事件或一些可选参数。状态转换方法的示例包括“初始项目”、“做出报价make Offer”、“接受报价accept Offer”和“拒绝”等。在这些示例中,状态转换方法“做出报价”可以将名称指定为“报价offer price”,将类型指定为“32位整型量unit 32”,将角色指定为“买方”,将状态指定为“项目可用”,将目标状态指定为“报价已提交”,以及将事件指定为“报价现在提交”。
[0053] 在一些实施例中,客户端服务方法可以是被配置为通过从区块链网络中检索区块链区块来检测工作流的当前状态的计算机程序或处理。在一些实施例中,如果检测到的状态与预定义状态匹配,则可以执行客户端服务方法以向客户端提供特定服务并生成目标状态。在一些实施例中,客户端服务方法指定触发状态、触发事件和目标状态。在一些实施例中,可以在客户端服务方法中可选地定义目标状态。在一些实施例中,响应于确定工作流的当前状态是触发状态并且检测到导致从触发状态到目标状态的改变的触发事件,客户端服务方法可以生成目标状态。客户服务方法的示例包括“初始化项目函数Init Item Fun”、“做出报价函数Make Offer Fun”、“接受函数Accept Fun”等。在这些示例中,客户服务方法“做出报价函数”可以将触发状态指定为“项目可用”、将触发事件指定为“项目现在可用”、将目标状态指定为“报价已提交”以及将函数指定为“做出报价函数。如果确定检测到的状态和事件分别与触发状态“项目可用”和触发事件“项目现在可用”相匹配,则可以执行函数“做出报价函数”以对项目做出报价并相应地生成目标状态“报价已提交”。
[0054] 在一些实施例中,智能合约的使用可以提供对状态转换方法的更好的访问控制。例如,可以定义角色以提供对状态转换方法的访问控制。在一些实施例中,工作流的每个参与者与角色相关联。在具有多个参与者的工作流中,状态转移方法可以指定具有执行状态转移方法的权限的某些角色。电子商务系统中的角色示例包括“买方”、“卖方”和递送方”。
在一些实施例中,角色由区块链系统或网络中存储的工作流中定义的一个或多个参数或变量的一个或多个值(例如,作为字符串、一个或多个数字等)表示。例如,角色可以包括区块链账户的账户身份(例如,账户名称的哈希值)。
[0055] 在一些实施例中,上下文可以包括客户端服务方法的输入数据。在一些实施例中,上下文可以存储在客户端设备的本地数据库中。在一些实施例中,上下文可以是由远程过程调用(RPC)返回的结果。在一些实施例中,客户端设备可以从区块链区块解析智能合约的日志数据并初始化上下文输入,使得客户端服务方法可以获得智能合约返回的数据。在一些实施例中,上下文包括客户端名称、账户名称、智能合约名称和补充数据。补充数据的示例包括项目的价格和质量以及价格和质量的数据类型(例如,整数等)。
[0056] 在一些实施例中,工作流规范可用于设计基于区块链的工作流系统并生成工作流逻辑。在一些实施例中,工作流规范可以定义状态、事件、角色、转换方法、客户端服务方法和上下文中的一个或多个。在一些实施例中,所述工作流规范指示将由区块链网络上的智能合约执行的一个或多个状态转换方法,以及将由位于区块链网络外的参与工作流的一个或多个客户端设备执行的一个或多个客户端服务方法。在一些实施例中,工作流规范可以由基于区块链的工作流系统的协调者(例如,区块链网络的所有者或运营商,或用于提供基于区块链的工作流系统的第三方服务提供商)获得。在一些实施例中,工作流规范可以由工作流的参与者协商和预先确定。例如,工作流的参与者可以提供他们各自的客户端服务方法(例如,通过填写规范表或表格)、参与者之间的数据交换或交互,并确定参与者之间的整体工作流。
[0057] 在一些实施例中,基于工作流规范,可以由,例如,基于区块链的工作流系统的协调者,生成将由对应于工作流的参与者的一个或多个客户端设备在区块链网络外执行的一个或多个客户端服务逻辑,并将其提供给对应于工作流参与者的各个客户端设备。
[0058] 在一些实施例中,一个或多个客户端服务逻辑可以由相应的客户端设备配置。例如,一个或多个客户端服务逻辑可以采取SDK的形式,使得一个或多个客户端设备可以填写或修改其各自的作为整体工作流一部分的方法。在一些实施例中,一个或多个客户端服务逻辑可以包括在客户端服务逻辑之中或之间或者在客户端服务逻辑与区块链网络之间(例如,经由智能合约)定义的应用接口,其可以提供统一且一致的框架,以促进工作流的所有参与者与区块链网络之间的交互,并改善工作流系统的兼容性、可扩展性、灵活性和效率。
[0059] 在一些实施例中,基于工作流规范,可以例如由基于区块链的工作流系统的协调者来生成要在区块链网络上执行的一个或多个智能合约。所述一个或多个智能合约可以包括一个或多个状态转换方法。在一些实施例中,可以基于一个或多个智能合约模板来生成一个或多个智能合约,该模板具有与基于工作流规范而填写的客户端服务方法有关的功能。替代地或附加地,与客户端服务方法有关的功能可以由工作流的一个或多个参与者来填写。可以将一个或多个智能合约部署在区块链网络上,并由区块链网络的网络节点或客户端设备调用。一个或多个智能合约可以包括定义的至基于区块链的工作流系统的协调者和/或要在区块链网络之外执行的一个或多个客户端服务逻辑的接口。
[0060] 作为图3中所示的示例,工作流配置引擎340可以例如基于工作流规范生成将由客户端设备370或375中的一个或多个部署和执行的一个或多个工作流逻辑。在一些实施例中,工作流配置引擎340可以将对应的工作流逻辑分别发送到客户端设备370和375,如327和329所示。如图所示,客户端设备370的工作流逻辑包括客户端服务方法362a-c;并且客户端设备375的工作流逻辑包括客户端服务方法364a-c。应注意,示出了工作流逻辑包括三个客户端服务方法仅用于说明目的。客户端设备370或375的工作流逻辑可以具有任何合适数量的客户端服务方法。
[0061] 在一些实施例中,客户端设备370或375的工作流逻辑可以是可配置的客户端服务逻辑,并且客户端服务方法362a-c或364a-c可以包括由计算元件执行的计算处理。例如,客户端设备370的工作流逻辑可以是客户端设备370上存储的编程逻辑,并且可以包括将由客户端设备370执行的客户端服务方法362a-c,以执行某些计算操作并实现特定功能(例如,生成某个输出)。在一些实施例中,工作流逻辑可以包括可由位于区块链网络302或352之外的客户端设备370或375配置的软件开发工具包(SDK)。在一些实施例中,客户端设备370和375中的每一个可以被配置为执行工作流逻辑。在一些实施例中,客户端设备370和375中的每一个可以被配置为执行工作流逻辑的一部分。例如,客户端设备370和375中的每一个可以被配置为执行方法362a-c的子集。
[0062] 在一些实施例中,客户端服务方法362a-c和364a-c可以被配置为改变工作流的状态。在一些实施例中,可以在客户端服务方法362a-c和364a-c中的每个中定义触发状态、触发事件、目标状态或它们的组合。在一些实施例中,可以在客户端服务方法中可选地定义目标状态。在一些实施例中,响应于确定工作流的当前状态是触发状态并且检测到导致从触发状态到目标状态的改变的触发事件,客户端服务方法可以生成目标状态。
[0063] 在一些实施例中,客户端设备370和375的工作流逻辑包括与云服务器304的一个或多个应用接口,例如,用于请求将在区块链网络302或352上执行的交易。例如,客户端设备370和375的工作流逻辑可以包括用于调用智能合约310中定义的一个或多个状态转换方法312和/或智能合约315中定义的一个或多个状态转换方法313的定义的接口,以改变并记录客户端设备370和375的工作流的状态。
[0064] 作为图3中所示的示例,工作流配置引擎340可以生成将由区块链网络302和352执行的一个或多个智能合约(例如,智能合约310和315)。在一些实施例中,工作流配置引擎340可以将对应的智能合约310和315分别发送到区块链网络302和352,如317和387所示。智能合约310和315可以分别被保存为区块链网络302和352的网络节点的智能合约逻辑318和
358。智能合约310和315可以分别由区块链网络302和352的网络节点部署和执行。
[0065] 在一些实施例中,智能合约310和315可以分别包括一个或多个状态转换方法312和362。在一些实施例中,可以分别调用智能合约310和315以执行状态转换方法312和313中的一个以将区块链网络302和352中(例如,日志文件320和325和/或区块链330和335中)存储的当前状态改变到另一个状态。在一些实施例中,可以执行智能合约310或315以将多个状态(例如,状态314a-b、状态354a-b等)和事件(例如,事件316、事件356等)存储在区块链网络302和352的网络节点的日志文件或数据(例如,日志文件320和325)中。日志文件320和325还可以被分别记录在区块链网络302和352上的区块链330和335中。
[0066] 在一些实施例中,智能合约310或315可以包括工作流系统的一方或多方或一个或多个参与者与区块链网络(例如,云服务器304)之间的定义的接口。在一些实施例中,智能合约310或315可以包括可以由工作流系统的一方或多方或一个或多个参与者执行的功能或操作。例如,所述功能或操作可以包括用于客户端设备370或375调用智能合约310或315以执行状态转换方法312或313之一的功能。在一些实施例中,所述智能合约310或315可以定义用于执行某些功能的授权实体。智能合约可促进实行参与实体和区块链网络之间的可跟踪的且可信的交互。
[0067] 在一些实施例中,智能合约310和315可以分别指定被配置为向状态转换方法312和313提供访问控制的一个或多个角色。电子商务系统中的角色的示例包括“买方”和“卖方”等。在一些实施例中,每个角色包括区块链账户的账户身份(例如,账户名称的哈希值)。在一些实施例中,角色被配置为向状态转换方法312和313提供访问控制,使得与所述角色之一相关联的区块链账户可以被允许访问状态转换方法312和/或313。
[0068] 在一些实施例中,云服务器304可以例如通过交易处理引擎350来处理与工作流相关的交易。例如,交易处理引擎350可以从客户端设备370或375接收交易请求,对交易请求进行分析,并将交易请求发送到区块链网络302或352。在一些实施例中,交易处理引擎350可以从区块链网络302或352接收交易响应,对交易响应进行分析,并将交易响应发送到客户端设备370或375。
[0069] 作为示例,客户端设备370执行工作流逻辑中的第一客户端服务方法(例如,“方法A1”)362a。在一些实施例中,第一客户端服务方法362a具有触发状态、触发事件和目标状态。在一些实施例中,客户端设备370例如通过从区块链网络302的最新区块链块330检索状态来检测触发状态,并执行第一客户端服务方法362a,从而产生目标状态(例如,“状态A1”)372a。在一些实施例中,客户端设备370可以发送用于在区块链网络302上记录目标状态
372a的交易请求。
[0070] 在一些实施例中,在347处,客户端设备370向交易处理引擎350发送交易请求,以请求将目标状态372a记录在区块链网络302上。在从客户端设备370接收到交易请求时,在357处,交易处理引擎350可以对区块链网络302上部署的智能合约310进行合约调用,以例如执行状态转换方法312,从而将状态314b更新为目标状态(例如,“状态A1”)372a。
[0071] 在一些实施例中,区块链网络302(例如,区块链网络302的共识节点)接收对智能合约310的合约调用以执行状态转换方法312。区块链网络302可以执行对合约调用的共识处理,然后执行状态转换方法312以将状态314b更新为第一客户端服务方法362a的目标状态(例如,“状态A1”)372a。在一些实施例中,在执行智能合约时,区块链网络302确定与客户端设备370相关联的区块链账户是否被授权进行这样的合约调用以执行状态转换方法312。例如,可以定义智能合约中的状态转换方法,使得一个或多个角色被授权访问状态转换方法,而不允许其他角色访问该状态转换方法。
[0072] 在一些实施例中,状态转换方法312可生成指示智能合约310的当前状态到目标状态(例如,“状态A1”)372a的改变的事件316。在执行状态转换方法312之后,目标状态变为新当前状态。在一些实施例中,新当前状态和事件被存储到区块链网络302。在一些实施例中,所述状态和事件被存储到智能合约310中的日志文件320。在一些实施例中,日志文件320被进一步记录在区块链网络302上存储的区块链330中。
[0073] 在一些实施例中,客户端设备370可以请求在附加或不同的区块链网络上记录状态转换。例如,客户端设备370可以向交易处理引擎350发送交易请求,以请求将目标状态372a记录在区块链网络352上。在一些实施例中,交易处理引擎350可以对交易请求进行分析,以确定将交易请求发送到何处,并对部署在相应区块链网络上的智能合约对应地进行合约调用。
[0074] 在一些实施例中,交易处理引擎350可以确定与客户端设备370相关联的区块链账户是否被授权对所请求的区块链网络的智能合约中定义的方法进行这样的合约调用。如果未被授权,则交易处理引擎350可以拒绝客户端设备370的交易请求。
[0075] 在一些实施例中,云服务器304可以监测来自区块链网络302和352的工作流的当前状态和/或事件。例如,云服务器304(例如,经由状态转换引擎360)可以不断地或定期地分别从区块链网络302的区块链330或区块链网络352的区块链335中检测、检索、拉取或以其他方式确定工作流的当前状态和事件,例如,如367和387所示。在一些实施例中,云服务器304可以订阅区块链中存储的信息(例如,与联合工作流有关的状态和/或事件)。在一些实施例中,区块链网络302和/或352可以不断地或定期地(例如,周期性地)将区块链中存储的信息推送或以其他方式发送到云服务器304。这样,云服务器304可以获得区块链的最新信息。
[0076] 在一些实施例中,云服务器304可以维护状态363、事件366以及与联合工作流有关的其他数据368的本地副本。例如,云服务器304可以不断地或有定期地拉取区块链网络302中的区块链330或区块链网络352中的区块链335并与区块链网络302中的区块链330或区块链网络352中的区块链335同步。在一些实施例中,状态转换引擎360可以访问在云服务器304上存储的状态363、事件366和其他数据368,例如,以确定是否检测到客户端设备方法的一个或多个触发状态和/或事件。
[0077] 在一些实施例中,云服务器304可以接收客户端设备370和375的客户端设备方法的一个或多个触发状态和/或事件的订阅或注册。例如,如337和339所示,客户端设备370和375可以将客户端设备370和375的客户端设备方法的一个或多个触发状态和/或事件的订阅或注册请求发送到状态转换引擎360,使得在区块链网络上出现触发状态和/或事件时,状态转换引擎360分别向客户端设备370和375通知或警告触发状态和/或事件。
[0078] 在一些实施例中,状态转换引擎360可以分别确定区块链网络302和352中记录的当前状态和/或事件,并分别将其与云服务器304上订阅或注册的触发状态和/或触发事件进行比较。在确定存在针对触发状态和/或事件的匹配时,状态转换引擎360可以将通知发送到对应的客户端设备370或375。
[0079] 例如,如图3所示,客户端设备375的工作流逻辑中的客户端服务方法“方法B2”364b具有触发状态“状态A1”372a和目标状态“状态B2”374b。云服务器304确定区块链网络
302中记录的当前状态是“状态A1”372a,其与客户端设备375的客户端服务方法“方法B2”
364b的触发状态匹配。作为响应,在377处,云服务器304向客户端设备375发送通知,以警告触发状态“状态A1”372a的出现。在从云服务器304接收到关于触发状态“状态A1”372a的通知后,客户端设备375可以继续执行客户端设备375的工作流逻辑中的下一个客户端方法“方法B3”364c。
[0080] 在一些实施例中,客户端设备375执行客户端服务方法“方法B3”364c,并且生成指示目标状态“状态B3”374c的输出。客户端设备375可以向云服务器304(例如,交易处理引擎350)发送交易请求,以请求将目标状态“状态B3”374c记录在区块链网络302上。
[0081] 在接收到来自客户端设备在370的交易请求时,交易处理引擎350可以对区块链网络320上部署的智能合约310进行合约调用,以例如执行状态转换方法312,从而将状态314b更新为目标状态“状态B3”374c。在一些实施例中,在对智能合约310进行合约调用之前,云服务器304确定与客户端设备375相关联的区块链账户是否被授权进行这样的合约调用以执行状态转换方法312。如果云服务器304确定与客户端设备375相关联的区块链账户未被授权进行这样的合约调用以执行状态转换方法312,则云服务器304可以丢弃来自客户端设备375的交易请求或可以向客户端设备375发送通知。
[0082] 在一些实施例中,区块链网络302(例如,区块链网络302的共识节点)接收对智能合约310的合约调用以执行状态转换方法312。区块链网络302可以执行对合约调用的共识处理,然后执行状态转换方法312以将状态314b更新为第一客户端服务方法364c的目标状态“状态B3”374c。在一些实施例中,在执行智能合约时,区块链网络302确定与客户端设备375相关联的区块链账户是否被授权进行这样的合约调用以执行状态转换方法312。在一些实施例中,状态转换方法312还可以生成指示将状态314a(例如,状态“状态A1”372a)改变为状态314b(例如,在该示例中,状态“状态B3”374c)的事件316。状态314b可以与事件316一起被存储到日志文件320。日志文件320可以进一步记录在区块链网络302中的区块链330中。
[0083] 在一些实施例中,状态“状态B3”374c可以是客户端设备370或375的另一客户端服务方法(例如,客户端设备375的客户端服务方法“方法B2”364c)的触发状态。一旦客户端设备的触发状态出现并被记录在区块链网络上,云服务器304就可以监测和维护区块链网络302上的状态并警告相应客户端设备。
[0084] 图4是示出可以根据本文的实施例执行的处理400的示例的信号流。信号流表示用于生成用于实现基于区块链的工作流的工作流逻辑的处理400。为方便起见,处理将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当地编程的图3的系统300可以执行该处理。
[0085] 首先,可以根据工作流规范生成智能合约,并将其部署在区块链网络(例如,区块链网络302或352)上。
[0086] 在402处,接收工作流规范。在一些实施例中,工作流是由工作流的中间节点或协调节点(例如,云服务器304)、区块链网络(例如,区块链网络的共识节点或非共识节点)和/或位于区块链网络之外的客户端设备接收的。在一些实施例中,工作流规范可以是相对于图3描述的工作流程规范。例如,工作流规范指示将由区块链网络上的智能合约执行的一个或多个状态转换方法,以及将由位于区块链网络之外的参与工作流的一个或多个客户端设备进行的一个或多个客户端服务方法。
[0087] 工作流规范可以指定多个状态转换方法,并且可以用于生成智能合约,以使智能合约包括多个状态转换方法。工作流规范还可以指定由参与该工作流的客户端设备(例如,客户端设备370或375)进行的一系列客户端服务方法(例如,客户端服务方法362a-c和364a-c)。可以根据工作流规范来生成工作流逻辑,以使工作流逻辑包括一个或多个客户端服务方法。每个客户端设备可以被配置为执行工作流逻辑或工作流逻辑的一部分(例如,工作流逻辑的客户端服务方法的子集)。
[0088] 在404处,根据工作流规范生成一个或多个智能合约。在一些实施例中,一个或多个智能合约是由工作流的协调节点(例如,云服务器304的工作流配置引擎340)生成的。在一些实施例中,一个或多个智能合约将在一个或多个区块链网络上被执行。在一些实施例中,智能合约可以包括一个或多个状态转换方法和一个或多个状态。在一些实施例中,一个或多个状态中的至少一个状态自动触发由位于区块链网络之外的客户端设备执行的一个或多个客户端服务方法。例如,针对可由指定客户端设备执行的指定客户端服务方法,智能合约可以将状态定义为触发状态,将事件定义为触发事件。在一些实施例中,如相对于图3所描述的,如果智能合约的执行导致触发状态和触发事件,则工作流的协调节点可以自动向指定客户端设备发送信号或指令,以引起由位于区块链之外的指定客户端设备执行指定客户端服务方法。在一些实施例中,智能合约和指定客户服务方法包括识别用于执行指定客户服务方法的触发状态和触发事件的对应的接口和逻辑。
[0089] 在406处,根据用于一个或多个客户端设备的工作流规范来生成一个或多个可配置的客户端服务逻辑。在一些实施例中,一个或多个可配置的客户端服务逻辑是由工作流的协调节点(例如,云服务器304的工作流配置引擎340)生成的。在一些实施例中,一个或多个可配置的客户端服务逻辑将由位于区块链网络之外的一个或多个客户端设备执行。
[0090] 在一些实施例中,客户端服务逻辑包括一个或多个客户端服务方法。在一些实施例中,工作流规范指定通常在智能合约的状态转换方法和可配置的客户端服务逻辑的客户端服务方法之间定义的针对指定客户端服务方法的一个或多个状态和事件(例如,针对指定客户服务方法的触发状态和触发事件)。在一些实施例中,一个或多个客户端服务方法中的至少一个客户端服务方法改变智能合约中的一个或多个状态。例如,如相对于图3所描述的,在执行导致更新状态(例如,客户端服务方法的目标状态)的客户端服务方法之后,可配置的客户端服务逻辑可以包括用于发送交易请求以在区块链上上传或以其他方式记录更新状态和/或触发工作流中指定的后续方法(例如,将由所述客户端服务或其他客户端服务执行的)的接口和逻辑。在一些实施例中,客户端服务可以将交易直接发送到区块链网络或工作流的协调节点,以进行智能合约调用,从而引发在智能合约中定义的一个或多个状态转换方法来更新状态。
[0091] 在408处,将一个或多个智能合约部署到一个或多个区块链网络。在一些实施例中,一个或多个智能合约由工作流的协调节点发送并由一个或多个区块链网络接收。在一些实施例中,智能合约被部署在区块链网络的每个共识节点处。在一些实施例中,将智能合约部署到区块链网络包括:编译智能合约的脚本;利用智能合约的信息(例如,智能合约的字节代码等)创建部署交易;以及将部署交易发送到区块链网络的共识节点。接收到部署交易的共识节点可以发起共识程序,并将部署交易分发到区块链网络的其他共识节点。每个共识节点都可以验证该部署交易,如果共识节点之间达成共识,则智能合约可以被成功地部署到区块链网络。
[0092] 在410处,将一个或多个可配置的客户端服务逻辑部署到对应的一个或多个客户端设备。在一些实施例中,一个或多个可配置的客户端服务逻辑从工作流的协调节点被发送,并且被对应的一个或多个客户端设备接收。客户端设备可以扩展、填充、完成、编译或以其他方式配置客户端服务逻辑,使得客户端服务逻辑准备好在位于区块链网络之外的客户端服务上被执行。
[0093] 在一些实施例中,在一个或多个智能合约被部署到区块链网络并且客户端服务逻辑被对应的客户端设备部署之后,如相对于图5所描述的,可以进行处理500以实现工作流规范中指定的工作流。
[0094] 图5是示出了可以根据本文的实施例执行的用于实现工作流的处理500的示例的流程图。处理500可以是由图3的上下文中的工作流系统执行的处理。为方便起见,处理500将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当地编程的图3的系统300可以进行处理500。
[0095] 在502处,例如由网络服务器(例如,云服务器304),从客户端设备(例如,客户端设备370或375)接收对触发状态的订阅。触发事件可以是将由位于区块链网络之外的参与工作流的客户端设备执行的客户端服务方法的触发事件。在一些实施例中,在给定订阅的情况下,在区块链网络上出现触发状态时,网络服务器将触发状态的通知发送给客户端设备。
[0096] 在一些实施例中,网络服务器可以用作工作流的中间节点或协调节点。在一些实施例中,网络服务器可以通信地链接到一个或多个客户端设备和一个或多个区块链网络。在一些实施例中,工作流可以是一个或多个客户端设备和一个或多个区块链网络的子集或全部都参与其中的工作流。例如,工作流可以是由单个客户端设备和单个区块链网络参与的工作流。作为另一个示例,工作流可以是由多个客户端设备和多个区块链网络参与的多方工作流。在一些实施例中,网络服务器可以接收对将由位于区块链网络之外的参与工作流的一个或多个客户端设备执行的一个或多个客户端服务方法的触发状态的多个订阅。
[0097] 在504处,例如由网络服务器(例如,云服务器304),维护用于识别区块链网络中记录的一个或多个状态的数据,所述一个或多个状态作为将由位于区块链网络之外的参与工作流的一个或多个客户端设备执行的一个或多个客户端服务方法的触发状态。例如,如相对于图3所描述的,云服务器304可以从参与工作流存储的一个或多个区块链网络(例如,从日志文件320或325和/或区块链330或335)接收与工作流有关的数据(例如,状态和/或事件)。在一些实施例中,网络服务器将与工作流有关的数据存储在网络服务器上,而与工作流有关的数据不被存储在参与工作流的任何客户端设备上,从而减轻了参与工作流存储的客户端设备上的处理和存储需求并允许客户端设备为轻设备。
[0098] 在506处,例如由网络服务器,从第一客户端设备接收用于在区块链网络上执行交易的请求。在一些实施例中,用于在区块链网络上执行交易的请求是对第一客户端设备(例如,云服务器304)的第一客户端服务方法(例如,客户端服务方法“方法A1”362a)的响应,第一客户端服务方法已经由位于区块链网络(例如,区块链网络302)之外的第一客户端设备执行。在一些实施例中,用于在区块链网络上执行交易的请求包括用于在区块链网络中记录与第一客户服务方法的执行相关联的一个或多个状态和/或事件(例如,目标状态“状态A1”372a)的请求。
[0099] 在508处,例如由网络服务器,指示区块链网络执行交易。在一些实施例中,网络服务器指示区块链网络执行交易包括调用部署在区块链网络上的智能合约以在区块链网络上执行状态转换方法。例如,网络服务器可以进行智能合约调用,以执行智能合约中定义的一个或多个状态转换方法。在一些实施例中,执行智能合约导致与第一客户服务方法的执行相关联的一个或多个状态和/或事件被记录在区块链网络中。在一些实施例中,智能合约是由网络服务器(例如,云服务器304的工作流配置引擎340)生成的。
[0100] 在510处,例如由网络服务器,监测交易执行之后的区块链网络上的状态。在一些实施例中,监测交易执行之后区块链网络上的状态包括检索交易执行之后区块链网络上存储的日志数据(例如,从日志文件320或区块链330中检索)。在一些实施例中,监测区块链网络上的状态可以包括不断地或定期地检测、拉取或以其他方式从区块链网络302或352接收状态和/或事件。例如,网络服务器可以通过订阅区块链中存储的信息(例如,与联合工作流有关的状态和/或事件)来监测区块链网络上的状态,使得区块链网络可以不断地或定期地(例如,周期地)将区块链中存储的信息推送或以其他方式发送到网络服务器。
[0101] 在512处,例如由网络服务器,识别该状态是参与工作流的第二客户端设备(例如,客户端设备375)的客户端服务方法(例如,客户端服务方法“方法B2”364b)的触发状态,其中客户端服务方法可由位于区块链网络之外的第二客户端设备执行。在一些实施例中,将监测的状态与在网络服务器上注册的一个或多个客户端服务方法的触发状态进行比较,以确定该状态是否是客户端服务方法的触发状态。如果确定该状态不是网络服务器上注册的任何客户端服务方法的触发状态,则网络服务器可以返回到510处,以继续监测区块链网络上的状态。
[0102] 在514处,例如由网络服务器,向第二客户端设备发送关于达成触发状态的通知。在一些实施例中,通知可以包括触发状态的标识、时间戳或其他信息。
[0103] 在一些实施例中,网络服务器从第二客户端设备接收关于在位于区块链网络之外的第二客户端设备执行客户端服务方法之后达成第二状态的通知;并指示区块链网络将区块链网络的状态更新为第二状态。
[0104] 在一些实施例中,区块链网络是第一区块链网络,并且网络服务器进一步与第二区块链网络通信地连接。在一些实施例中,网络服务器监测第二区块链网络上的第二当前状态;网络服务器识别出第二当前状态为参与该工作流的第三客户端设备的第三客户端服务方法的触发状态,其中第三客户端服务方法可以由位于第二区块链网络之外的第三客户端设备执行,并且网络服务器向第三客户端设备发送关于达成第三客户端设备方法的触发状态的通知。
[0105] 图6描绘了根据本文的实施例的装置600的模块的示例。装置600可以是被配置为实现基于区块链的工作流的网络服务器的实施例的示例。装置600可以对应于上述实施例,装置600包括以下:维护模块602,用于维护用以识别区块链网络中记录的一个或多个状态的数据,所述一个或多个状态作为将由位于区块链网络之外的参与工作流的一个或多个客户端设备执行的一个或多个客户端服务方法的触发状态;接收模块604,用于从第一客户端设备接收用于在区块链网络上执行交易的请求;指示模块606,用于指示区块链网络执行交易;监测模块608,用于监测交易执行后区块链网络上的状态;识别模块610,用于识别所述状态是参与所述工作流的第二客户端设备的客户端服务方法的触发状态,其中,所述客户端服务方法可由位于区块链网络外的第二客户端设备执行;发送模块612,用于向第二客户端设备发送达成触发状态的通知。
[0106] 在可选实施例中,装置600还包括接收模块,用于从第二客户端设备接收触发状态的订阅,其中,在区块链网络上出现触发状态时,网络服务器向第二客户端设备发送关于触发状态的通知。
[0107] 在可选实施例中,监测交易执行之后区块链网络上的状态包括检索交易执行之后存储在区块链网络上的日志数据。
[0108] 在可选实施例中,装置600还包括存储模块,用于将日志数据存储在网络服务器上。
[0109] 在可选的实施例中,用于在区块链网络上执行交易的请求是对第一客户端设备的第一客户端服务方法的响应,所述第一客户端服务方法已经由位于区块链网络之外的第一客户端设备执行。
[0110] 在可选实施例中,网络服务器指示区块链网络执行交易包括调用区块链网络上部署的智能合约以在区块链网络上执行状态转换方法,其中,所述智能合约是由网络服务器生成的。
[0111] 在可选实施例中,装置600还包括:接收模块,用于从第二客户端设备接收关于在位于区块链网络之外的第二客户端设备执行客户端服务方法之后达成第二状态的通知;指示模块,用于指示区块链网络将所述状态更新为第二状态。
[0112] 在可选实施例中,网络服务器指示区块链网络将区块链网络的状态更新为第二状态包括:调用区块链网络上部署的智能合约,以在区块链网络上执行状态转换方法,其中,所述智能合约是由网络服务器生成的。
[0113] 在可选的实施例中,区块链网络是第一区块链网络,并且网络服务器进一步与第二区块链网络通信地连接。装置600还包括:监测模块,用于监测第二区块链网络上的第二当前状态;识别模块,用于识别第二当前状态是参与工作流的第三客户端设备的第三客户端服务方法的触发状态,其中第三客户端服务方法可由位于第二区块链网络之外的第三客户端设备执行;发送模块,用于向第三客户端设备发送关于达成第三客户端设备方法的触发状态的通知。
[0114] 在先前实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实现,或者可以通过使用具有特定功能的产品来实现。典型的实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或这些设备的任意组合。
[0115] 对于装置中每个单元的功能和角色的实施例处理,可以参考前一方法中相应步骤的实施例处理。为简单起见,这里省略了细节。
[0116] 由于装置实施例基本上对应于方法实施例,对于相关部分,可以参考方法实施例中的相关描述。先前描述的装置实施例仅是示例。被描述为单独部分的模块可以是或不是物理上分离的,并且显示为模块的部分可以是或不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文方案的目标。本领域普通技术人员无需付出创造性劳动就能理解和实现本申请的实施例。
[0117] 再次参考图6,其可以被解释为示出内部功能模块和基于区块链的工作流实现装置的结构。基于区块链的工作流实现装置可以是被配置为实现基于区块链的工作流的区块链网络节点的示例。本质上,执行主体可以是电子设备,电子设备包括:一个或多个处理器;被配置为存储一个或多个处理器的可执行指令的一个或多个计算机可读存储器。在一些实施例中,一个或多个计算机可读存储器耦接到一个或多个处理器,并且具有其上存储的可由一个或多个处理器执行以执行算法、方法、功能、处理、流程和程序的编程指令,如本文中所述。
[0118] 本文中描述的技术产生若干技术效果。在一些实施例中,工作流可以是多个参与者之间的联合工作流,并且每个参与者可以与区块链网络的客户端设备或网络节点相关联(例如,执行客户端服务逻辑的客户端设备和执行智能合约的区块链网络节点)。本文描述的技术将客户端侧的客户端服务逻辑与区块链侧的智能合约相关联,以形成完整的工作流。在一些实施例中,多方协作工作流的参与者可以根据个体需求定义工作流规范的对应部分,单独地实现客户服务逻辑的客户服务方法,并完成工作流的框架。因此,提出了参与者之间的多方协作,以通过区块链智能合约和客户服务逻辑实现多方协作工作流。
[0119] 在一些实施例中,可以根据工作流规范实现基于多方区块链的工作流以促进智能合约的自动生成(例如,存储区块链网络的状态、生成状态转换方法以及为状态转换方法提供角色许可控制)。在一些实施例中,工作流的客户端或用户可以专注于客户端服务方法的实现,而在客户端设备和智能合约如何彼此交互的细节上花费太多精力。这样,所描述的技术解决了多方协作工作流的复杂性并提高了工作流系统的效率。
[0120] 此外,在一些实施例中,智能合约将指示状态改变的工作流的状态和事件存储到区块链网络上的日志文件中。通过将状态和事件存储在区块链网络上的日志文件中,由于区块链网络上的日志文件是不可篡改的,因此有关工作流的处理状态(即,工作流的状态)的信息可以更安全且更可靠。例如,恶意行为者无法篡改关于工作流的状态和事件的信息以破坏网络。这样,本文描述的技术提高了实现这些技术的计算机系统、网络和数据库系统的安全性。
[0121] 所描述的主题的实施例可以包括单独或组合的一个或多个特征。例如,在第一实施例中,一种用于实现基于区块链的工作流的方法,包括:网络服务器维护用于识别区块链网络中记录的一个或多个状态的数据,所述一个或多个状态作为将由位于区块链网络之外的参与工作流的一个或多个客户端设备执行的一个或多个客户端服务方法的触发状态;网络服务器从第一客户端设备接收用于在区块链网络上执行交易的请求;网络服务器指示区块链网络执行交易;网络服务器监测交易执行之后区块链网络上的状态;网络服务器识别所述状态是参与所述工作流的第二客户端设备的客户端服务方法的触发状态,其中所述客户端服务方法可由位于区块链网络之外的第二客户端设备执行;网络服务器向第二客户端设备发送关于达成触发状态的通知。
[0122] 在其他实施例中,提供了用于实现本文提供的方法的一种或多种装置、非暂时性计算机可读存储介质和系统。例如,装置可以是用于实现本文提供的方法的网络服务器或区块链网络的网络节点。作为另一示例,系统可以包括用于实现本文提供的方法的网络服务器、一个或多个客户端设备以及一个或多个区块链网络。例如,网络服务器与一个或多个客户端设备和一个或多个区块链网络通信地链接。网络服务器被配置为实现如第一实施例中所述的方法。一个或多个客户端设备之一可以被配置为用作第一客户端设备,所述第一客户端设备例如响应于第一客户端设备的第一客户端服务方法已由位于区块链网络之外的第一客户端设备执行,向网络服务器发送用于在区块链网络上执行交易的请求。一个或多个客户端设备之一可以被配置为用作第二客户端设备,所述第二客户端设备从网络服务器接收关于参与该工作流的第二客户端设备的客户端服务方法的触发状态的通知,然后由位于区块链网络之外的第二客户端设备执行客户端服务方法。
[0123] 前述和其他描述的实施例可以各自可选地包括以下特征中的一个或多个:
[0124] 第一特征,可与以下特征中的任一项组合,指定该方法进一步包括:网络服务器从第二客户端设备接收对触发状态的订阅,其中,在区块链网络上出现触发状态时,网络服务器向第二客户端设备发送关于触发状态的通知。
[0125] 第二特征,可与前述或以下特征中的任一项组合,指定网络服务器监测交易执行之后区块链网络上的状态包括检索交易执行之后在区块链网络上存储的日志数据。
[0126] 第三特征,可与前述或以下特征中的任一项组合,指定该方法进一步包括将日志数据存储在网络服务器上。
[0127] 第四特征,可与前述或以下特征中的任一项组合,指定日志数据既不被存储在第一客户端设备中也不被存储在第二客户端设备中。
[0128] 第五特征,可与前述或以下特征中的任一项组合,指定用于在区块链网络上执行交易的请求是对第一客户端设备的第一客户端服务方法的响应,所述第一客户端服务方法已经由位于区块链网络之外第一客户端设备执行。
[0129] 第六个特征,可与前述或以下特征中的任一项组合,指定网络服务器指示区块链网络执行交易包括调用区块链网络上部署的智能合约以在区块链网络上执行状态转换方法,其中所述智能合约是由网络服务器生成的。
[0130] 第七特征,可与前述或以下特征中的任一项组合,指定该方法进一步包括:网络服务器从第二客户端设备接收关于在位于区块链网络之外第二客户端设备执行客户端服务方法之后达成第二状态的通知;所述网络服务器指示区块链网络将区块链网络的状态更新为第二状态。
[0131] 第八特征,可与前述或以下特征中的任一项组合,指定网络服务器指示区块链网络将区块链网络的状态更新为第二状态包括调用区块链网络上部署的智能合约以在区块链网络上执行状态转换方法,其中所述智能合约是由网络服务器生成的。
[0132] 第九特征,可与前述或以下特征中的任一项组合,指定所述区块链网络是第一区块链网络,并且所述网络服务器进一步与第二区块链网络通信地链接,所述方法还包括:网络服务器监测第二区块链网络上的第二当前状态;网络服务器识别第二当前状态是参与工作流的第三客户端设备的第三客户端服务方法的触发状态,其中所述第三客户端服务方法可以由位于第二区块链网络之外的第三客户端设备执行;网络服务器向第三客户端设备发送关于达成第三客户端设备方法的触发状态的通知。
[0133] 本文中描述的主题、动作以及操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本文中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施例可以实现为一个或多个计算机程序,例如,一个或多个计算机程序指令模块,编码在计算机程序载体上,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括具有编码或存储在其上的指令的一个或多个计算机可读存储介质。所述载体可以是有形的非暂态计算机可读介质,例如磁盘、磁光盘或光盘、固态驱动器随机存取存储器(RAM)、只读存储器(ROM)或其他类型媒体。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成来编码信息用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或部分是机器可读存储设备、机器可读存储基板、随机或串行访问存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。
[0134] 计算机程序也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或演绎性语言、说明或程序性语言;它可以配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可包括由通信数据网络互联的在一个或多个位置的一台或多台计算机。
[0135] 计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件;或者多个协调文件,例如,存储一个或多个模块、子程序或代码部分的多个文件。
[0136] 用于执行计算机程序的处理器包括,例如,通用和专用微型处理器两者,和任意种类数码计算机的任意一个或多个处理器。通常,处理器将接收用于执行的计算机程序的指令以及来自耦接到所述处理器的非暂态计算机可读介质的数据。
[0137] 术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或者多处理器或计算机。数据处理装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPU(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统操作系统或者它们中的一个或多个的组合的代码。
[0138] 本文中描述的处理和逻辑流程可由一台或多台计算机或处理器执行一个或多个计算机程序来进行,以进行通过对输入数据进行运算并生成输出的操作。处理和逻辑流程也可以由例如FPGA、ASIC、GPU等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。
[0139] 适合于执行计算机程序的计算机可以基于通用和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理器将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可包括用于执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。
[0140] 通常,计算机还将包括或可操作地耦接至一个或多个大容量存储设备,以从一个或多个大容量存储设备接收数据或将数据传输到一个或多个存储设备。存储设备可以是例如磁盘、磁光盘或光盘,固态驱动器或任何其他类型的非暂态计算机可读介质。但是,计算机不需要具有这样的设备。因此,计算机可以耦接到本地和/或远程的一个或多个存储设备,例如一个或多个存储器。例如,计算机可以包括作为计算机的组成部分的一个或多个本地存储器,或者计算机可以耦接到云网络中的一个或多个远程存储器。此外,计算机可以嵌入在另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
[0141] 组件可以通过可交换地彼此“耦接”,例如直接地或通过一个或多个中间组件彼此电连接或光学连接。如果组件中的一个组件集成到另一个组件中,组件也可以彼此“耦接”。例如,存储组件集成到处理器(例如,L2高速缓存组件)中即“耦接到”处理器中。
[0142] 为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,LCD(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标轨迹球触摸板等的指针设备。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过向用户设备上的web浏览器发送web页面以响应从web浏览器收到的请求,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)进行交互。此外,计算机可以通过向个人设备(例如,运行消息应用的智能手机)轮流发送文本消息或其他形式的消息并接收来自用户的响应消息来与用户交互。
[0143] 本文使用与系统、装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。
[0144] 虽然本文包括许多具体实施细节,但是这些不应被解释为由权利要求书本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文多个单独实施例的上下文中描述的多个特定特征也可以在单个实施例中的组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下,可以从要求保护的组合中删除来自该组合的一个或多个特征,并且可以要求保护指向子组合或子组合的变体。
[0145] 类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在一些情况下,多任务并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品或者打包成多个软件产品。
[0146] 已经描述了主题的特定实施例。其他实施例在以下权利要求书的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的处理无需要求所示的特定顺序或次序来实现期望的结果。在一些情况下,多任务并行处理可能是有利的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈