首页 / 专利库 / 资料储存系统 / 复杂事件处理 / 用于创建和执行数据驱动法律合同的系统和方法

用于创建和执行数据驱动法律合同的系统和方法

阅读:533发布:2020-05-17

专利汇可以提供用于创建和执行数据驱动法律合同的系统和方法专利检索,专利查询,专利分析的服务。并且一种系统和方法,所述方法包括:提供合同管理平台;通过以下方式构建具有一组可编程条款的数据驱动合同:接收可编程条款的规范;配置所述可编程条款的可编程逻辑;将一组整合映射到所述可编程条款,其中,至少一个整合是 区 块 链 / 分布式账本 整合;以及添加具有自然语言内容的至少一个条款;以及执行所述数据驱动合同。,下面是用于创建和执行数据驱动法律合同的系统和方法专利的具体信息内容。

1.一种方法,包括:
●提供合同管理系统;
●通过所述合同管理系统构建具有一组可编程条款的数据驱动合同,所述构建包括至少:
■接收可编程条款的规范,所述接收包括配置可编程逻辑以及将至少一个整合映射到所述可编程条款,以及
■添加具有自然语言内容的至少一个条款,以及
●执行所述数据驱动合同。
2.如权利要求1所述的方法,其中,将至少一个整合映射到所述可编程条款包括:映射至少一个外部输入整合和至少一个外部输出整合,其中,执行所述数据驱动合同包括:通过所述至少一个外部输入整合接收数据输入;部分地基于所述数据输入处理可编程条款;以及执行由对所述可编程条款的所述处理产生的动作。
3.如权利要求2所述的方法,其中,执行动作包括:第一可编程条款更新外部整合端点;
第二可编程条款更新并非所述第二可编程条款的至少一个可编程条款;以及第三可编程条款使用至少一个分布式账本系统来执行事务。
4.如权利要求1所述的方法,其中,所述至少一个整合为外部整合,所述外部整合将外部资源建立为可编程条款的输入或输出。
5.如权利要求4所述的方法,其中,所述外部整合为到网络连接设备。
6.如权利要求4所述的方法,其中,所述至少一个外部整合建立到第一外部分布式账本系统的连接。
7.如权利要求6所述的方法,进一步包括:使得至少一个第二外部整合与第二外部分布式账本系统相映射,其中,所述第一外部分布式账本系统和所述第二外部分布式账本系统为不同的系统。
8.如权利要求6所述的方法,其中,配置可编程逻辑包括:配置分布式账本脚本,所述分布式账本脚本被配置成通过所述外部整合部署至所述第一外部分布式账本系统。
9.如权利要求1所述的方法,其中,到所述可编程条款的至少一个整合是与第二可编程条款的内部整合,其中,执行所述数据驱动合同包括:所述第一可编程条款通过所述内部整合更新所述第二可编程条款。
10.如权利要求1所述的方法,其中,所述可编程逻辑包括合同规则;并且其中,执行所述数据驱动合同包括:存储通过所述整合连接的事件数据流的版本化数据记录;根据所述合同规则对所述事件数据流执行复杂事件处理;以及存储合同状态的变化的版本化数据记录。
11.如权利要求1所述的方法,进一步包括:接受至少两个当事人的执行授权;以及将所述两个当事人的电子签名应用于所述数据驱动合同。
12.如权利要求1所述的方法,其中,配置可编程逻辑包括:配置导入来自法律参考的数据的法律逻辑。
13.如权利要求1所述的方法,进一步包括:呈现与所述数据驱动合同相关的分析的看板。
14.一种方法,包括:
●提供合同管理系统;
●在所述合同管理系统处,构建包括一组可编程条款的数据驱动合同,其中,构建所述数据驱动合同包括至少:
■配置所述一组可编程条款的可编程逻辑和自然语言内容,
■将网络连接设备的第一外部整合映射到所述数据驱动合同的第一可编程条款,■将基于API的平台的第二外部整合映射到所述数据驱动合同的第二可编程条款,■将分布式账本整合映射到所述数据驱动合同的第三可编程条款,
■在第四可编程条款与第五可编程条款之间映射内部整合,
■在所述数据驱动合同中配置至少一个自然语言条款,所述自然语言条款包括自然语言内容;以及
●接受至少两个当事人的执行授权;以及将所述两个当事人的电子签名应用于所述数据驱动合同;
●在接受执行授权之后,执行所述数据驱动合同,所述执行包括:
■通过所述第一外部整合接收设备数据并且基于所述设备数据处理所述第一可编程条款的可编程逻辑,
■响应于处理所述第二可编程条款的可编程逻辑而通过所述第二外部整合将通信传输至所述基于API的平台,
■处理所述第三可编程条款并且通过所述分布式账本整合与分布式账本系统交互,以及
■响应于处理所述第四可编程条款的可编程逻辑而更新所述第五可编程条款。
15.如权利要求14所述的方法,其中,所述第一可编程条款、所述第二可编程条款、所述第三可编程条款、所述第四可编程条款和所述第五可编程条款中的两个为相同的可编程条款。
16.一种系统,包括:
●合同管理系统;
●在所述合同管理系统内创建和管理的数据驱动合同,所述数据驱动合同包括一组可编程条款,其中,可编程条款包括自然语言内容、可编程逻辑和至少一个整合;
●其中,所述一组可编程条款的至少一个子集包括与分布式账本的整合;以及●处理引擎,所述处理引擎执行所述数据驱动合同并且促进可编程条款与资源之间的交互。
17.如权利要求16所述的系统,其中,所述合同管理系统包括合同编辑器接口
18.如权利要求16所述的系统,其中,所述一组可编程条款包括到网络连接设备的至少一个整合和到基于API的平台的至少一个整合。
19.如权利要求16所述的系统,其中,所述一组可编程条款包括具有分布式账本整合的第一可编条款,并且所述第一可编程条款的所述可编程逻辑包括在所述处理引擎执行所述第一可编程条款期间通过所述分布式账本整合部署至第一分布式账本系统的分布式账本脚本。
20.如权利要求19所述的系统,其中,所述第一可编程条款包括到第二分布式账本系统的至少第二分布式账本整合,其中,所述第二分布式账本系统与所述第一分布式账本系统不同。
21.如权利要求16所述的系统,其中,所述一组可编程条款包括:
●第一可编程条款,所述第一可编程条款与第一外部整合相映射并且在由所述处理引擎执行期间通过所述第一外部整合接收设备数据并且部分地基于所述设备数据处理所述第一可编程条款的可编程逻辑,
●第二可编程条款,所述第二可编程条款与第二外部整合相映射并且在由所述处理引擎执行期间响应于所述第二可编程条款的可编程逻辑而通过所述第二外部整合将通信传输至基于所述API的平台,
●第三可编程条款,所述第三可编程条款与分布式账本整合相映射并且在由所述处理引擎执行期间响应于所述第三可编程条款的可编程逻辑而通过所述分布式账本整合与链系统交互,以及
●第四可编程条款,所述第四可编程条款与内部整合相映射并且在由所述处理引擎执行期间响应于处理所述第四可编程条款的可编程逻辑而更新第五可编程条款。
22.如权利要求16所述的系统,其中,所述处理引擎是包括复杂事件处理引擎的事件流处理系统。
23.如权利要求16所述的系统,进一步包括状态转换系统。
24.如权利要求16所述的系统,所述合同管理系统包括分布式账本系统。

说明书全文

用于创建和执行数据驱动法律合同的系统和方法

[0001] 相关申请的交叉引用
[0002] 本申请要求于2016年3月31日提交的美国临时申请号62/316,442以及于2016年9月27日提交的美国临时申请号62/400,599的权益,所述美国临时申请两者均通过引用以其全文结合在此。

技术领域

[0003] 本发明总体上涉及数字合同管理领域,并且更具体地涉及一种新型且有用的用于创建具有可编程条款的数据驱动合同的系统和方法。

背景技术

[0004] 合同是一种用于交换如商品、服务或财产等价值的具有法律效的协议。合同是用于协调经济活动的基本工具。缔约的四个基本阶段为:形成、履行、重新谈判和修正以及终止。书面合同典型地是对基于纸张的合同的基于纸张的或常常以PDF格式归档和存储的基于计算机的数字表示。合同由许多不同的条款构成,所述条款确立基本信息并且包含当事人的权利和义务。条款可以由单个句子或段落构成,并且按标题地、并且通常分层次地按章节组合在一起。合同通常被构造为使得条款在同一章节中或者跨不同章节进行文档内相互引用。现代合同通常由以下条款和章节构成:前言、当事人的身份、事实陈述、定义、价值交换和当事人的其他义务(包括当事人应当和不应当采取的动作)、陈述、保证、条件以及若干样板条款,如法律选择、转让和完整的协议(合并)条款。还可以使用其他条款。合同文件通常通过引用将其他文件、法律和标准结合到协议中。
[0005] 合同条款目前是静态表达。虽然外部环境和当事人根据合同的行为可能会随着时间的推移而发生变化,但条款的条款和条件在合同形成之后不会发生变化,除非存在合法修改(修正)。合同修改可能需要双方同意;但其也可能是单方面的。因此,根据现有技术和实践,合同在执行之日起充当协议的静态文件记录。
[0006] 而且,法律合同通常无法利用数据,尤其是:(a)来自边缘计算设备,数据库、‘物联网’、API、链/分布式账本的数据;并且(b)无法实时利用数据。商业和商业活动的计算机化意味着可获得越来越多的数据并且所述数据用于所有业务方面。随着‘物联网’的出现和成熟、特别是在工业中,这可能会显着增加,物联网提供了关于商业活动状态的实时或近实时数据。以书面形式储存的法律合同与数据隔离/分离是因为不存在固有的方式将所述法律合同连接至任何形式的电子存储信息或计算。以电子形式撰写和存储的合同同样无法利用数据;尽管这种合同采用电子形式,但是其与基于纸张的合同一样是静态的,因为不存在电子方式使所述合同在形成之后对数据进行响应、对数据起作用、接收数据或发送数据。
[0007] 可以使用各种电子系统来汇编、管理和分析法律合同。电子文档汇编程序提供标准化模板,用户使用合同的特定条款来完成所述标准化模板以生成可执行协议。软件还分析合同条款和条件,以确保一致性以及协议是否包含某些合同权利或实现特定业务目标。合同生命周期管理(Contract Lifecycle Management,CLM)或合同管理软件创建集中的文档库,所述文档库通常从基于纸张的文档中捕获/提取与用户在每个法律合同下的义务相关的数据。所述数据用于监督履行义务、管理业务里程碑并为业务分析提供某种基础。CLM软件创建与CLM系统辅助管理的实际合同分开的系统和软件和数据层。CLM软件的任何方面本身都不具有构成或修改具有法律效力的合同权利、义务或参数的能力-与管理的基础合同不同。管理在很大程度上由CLM软件的用户手动执行。
[0008] 也正在进行各种各样的创新以通常通过使用分布式账本实施方式、有时被称为“智能合同”来自动化和执行合同履行的方面。分布式账本(也被称为“共享账本”、“复制账本”或在具体实施方式中为“区块链”)是一种数据库架构,在所述数据库架构中,单个数据记录散布遍及多个实体并可由多个实体查看,并且通常根据稳健的共识协议/算法更新。尽管取得了这些最近发展中的许多发展,但是法律合同仍然在其静态状态下执行和管理(具有与法律合同最初形成时相同的条款和条件)。此外,尽管使用了术语‘合同’,但是“智能合同”通常是简单编码的脚本(通常具有状态),所述脚本在区块链或分布式账本上执行过程或事务并且与任何具有法律效力的合同和任何当事人的合同权利和义务分离。因此,前述意义上的术语‘合同’可能有些用词不当。
[0009] 因此,在数字合同管理领域中需要创建用于可以使用数据并且对数据做出响应的数据驱动法律合同的新的且有用的系统和方法。本发明提供了这种新的且有用的系统和方法。附图说明
[0010] 图1A和图1B是优选实施例的系统的变体的示意性表示;
[0011] 图2至图5是数据驱动合同的要素的方框示意性表示;
[0012] 图6是示例性图形用户接口的示意性表示;
[0013] 图7A至图7E是优选实施例和变体的方法的流程图表示;
[0014] 图8是合同事件处理实施例的示意性表示;
[0015] 图9和图10是事件流处理系统的优选默克尔(Merkle)DAG实施方式的示意性表示;
[0016] 图11和图12是执行合同规则的所产生动作的变体的示意性表示;
[0017] 图13A和图13B是用于利用事件处理系统来执行数据驱动合同的方法的流程图表示;
[0018] 图14A和图14B是实施合同状态变化的变体的流程图表示;
[0019] 图15是数据驱动合同的示例性用例的示意性表示;
[0020] 图16是数据驱动合同的示例性GUI看板的图形表示;
[0021] 图17是自然语言合同中的可编程组件的示意性表示;
[0022] 图18是展示数据驱动合同的‘自我管理’功能的示意性表示;
[0023] 图19是使用状态转换系统对条款进行形成后示例更新的示意性表示;
[0024] 图20是系统的层的示意性表示;
[0025] 图21是形成前的示意性表示;并且
[0026] 图22A至图22C是可编程条款的示例性图形表示的截图表示。

具体实施方式

[0027] 以下对本发明实施例的描述并非旨在将本发明限制于这些实施例,而是使本领域技术人员能够制作和使用本发明。
[0028] 1.组件
[0029] 用于使用优选实施例的可编程条款来创建、执行和管理数据驱动合同的系统和方法可以包括多个组件,包括(但不限于):可编程条款;复杂事件处理引擎(‘CEP引擎’);事件流版本化系统;状态转换和存储系统;以及合同管理平台。
[0030] 前述组件可以以任何合适的组合互换使用。并非所有组件都可以在给定的实施方式或实施例中使用。还可以使用附加组件。
[0031] ‘可编程条款’是数据驱动合同的至少部分地定义数据驱动合同的动态操作并且另外可以充当法律合同条款的组件。可编程条款可以拥有多种核心属性,包括但不限于以下内容。
[0032] 第一,可能将可编程条款形成、表达、编程、编写或以其他方式配置为使用各种编程范例或语言。可能的编程范例或语言实施例可以包括(但不限于)面向对象语言、元编程、函数式语言、过程语言或宣告式语言;使用领域特定语言或高级(通用)语言(包括高级语言的扩展)。以宣告式语言编写的可编程条款可以使用规则引擎的可废止推理过程来确定履行、执行或实施合同动作和操作所采取的步骤。优选地在面向对象的范例(例如,或如元编程等其他选项)中,可编程条款主要由可编程逻辑形成。可编程条款还与IoT平台、互联网连接(或其他网络连接)设备(例如,IoT设备)API、外部系统、应用、协议、边缘计算设备、CEP数据/引擎、数据和其他资源进行交互/整合以驱动根据合同的和/或外部系统上的动作。
[0033] 第二,可编程条款另外可以以各种方式与分布式账本接口连接。可编程条款可以通过以下方式与区块链/分布式账本交互:嵌入BDL脚本的代码(例如,“智能合同”代码)和BDL脚本的操作或以其他方式将所述代码和操作与可编程条款的操作整合;调用区块链/分布式账本上存在的BDL脚本;将可编程逻辑编译为区块链/分布式账本(例如,编译为虚拟机字节码);或分布式账本/区块链(以及其他类似数据库和架构)的其他适当应用。此外,可编程条款可以具有在区块链/分布式账本上运行的相关规则引擎,或者具有与存储在区块链/分布式账本上的条款的动作或操作相关的规则引擎的结论。可替代地,可编程条款的状态仅可以在当事人之间对等的基础上更新,其中,仅特定事务记录在分布式账本并且更具体地区块链上。本文中,区块链/分布式账本(BDL)在本文中用于指代分布式账本和/或更具体的基于共识的区块链解决方案,其中,可以使用这类系统的任何合适变体。对BDL系统、平台、整合、事务等的引用可以是分布式账本变体或区块链变体。另外地或可替代地,可以以与BDL组件类似的方式使用集中BDL实施方式、密码数据库和/或具有类似BDL特征的其他合适系统。
[0034] 第三,可编程条款本质上可以是动态的;意味着可编程条款可以响应数据、其他条款的变化和/或其他数据驱动合同而改变或更新其状态或另一可编程条款和/或数据驱动合同的状态。例如,如果商品(例如,农作物)的价格取决于天气条件,则价格条款可以响应于来自边缘计算设备的温度/湿度变化而改变其状态。另一个这种示例可以涉及:如果未满足履行要求(例如,服务级别协议中的服务信用),则下发信用/折扣。合同状态更新可以连续且实时或近实时地进行。可以改变/更新逻辑的状态,或者可以存储(多个)条款的逻辑所使用的数据以影响或以其他方式反映状态的变化。还可以使用其他合适的方法。‘CEP引擎’可以与可编程条款整合以使复杂事件能够输入至可编程条款和数据驱动合同中。
[0035] 第四,可编程条款赋予合同基本上‘自我管理’或至少部分地‘自我管理’的质量。这可以至少部分地通过以下方式实现:(a)‘动态’功能;以及(b)具有到外部和/或内部资源的输入和输出两者。例如,从边缘计算设备或API到可编程条款的数据输入可以更新合同逻辑(或以其他方式存储与变化有关的数据),如授予折扣/信用,并且这可以输出至另一外部系统(例如,会计系统上的发票)。这种情况的结果是合同在本质上基本上是“自我管理”的;
关于其状态以及使用外部系统/资源进行更新/协调两者,如图18所示。
[0036] 第五,可编程条款可以连接至任一当事人-‘当事方(party-side)’使用的外部服务、系统和/或应用。这意味着作为对影响当事人之间的合同状态的数据做出响应的数据驱动合同的替代或补充,当事人可以将外部系统连接至可编程条款(或一组可编程条款或数据驱动合同)以执行仅影响所述单独当事人的操作。以此方式,当事人可以使用数据驱动合同来驱动仅与所述当事人相关且独立于管理合同的系统。例如,缔约当事人可以连接至货币对冲系统以实时对冲货币险,或者连接至业务规则系统以基于预定义的规则自动执行有关合同的动作(例如,如果价格降低至给定平,则根据给定合同订购更多特定商品,或终止-如果可以终止的话-如果基于ERP或其他合适数据,超过最低库存水平度量/条件),或者连接至会计系统以更新账目、收入、发票或其他适当的记录。
[0037] ‘复杂事件处理引擎’(‘CEP引擎’)处理复杂事件,以便整合到“可编程条款”中或由“可编程条款”使用。通过使复杂事件能够形成合同义务的基础,数据驱动合同可用于详细程度、复杂程度和细化程度高得多的协议。‘合同规则’可用于向CEP引擎查询事件,所述事件可以直接整合到可编程条款中、形成可编程条款的基础或者将事件馈送至可编程条款。可替代地,可以使用任何其他合适的实施方式。可以在事件流处理系统内使用CEP系统来过滤CEP引擎要使用的事件和数据。CEP引擎可以在内部并入合同逻辑,使得规则引擎由合同规则构成。可替代地,规则引擎可以与合同逻辑不同,但仍然可以与体现规则的逻辑整合。
[0038] ‘状态转换引擎’提供了用于以安全和可验证的方式使每个合同版本化的系统。状态转换引擎优选地提供安全的无冲突复制数据类型(CRDT)结构的基础,所述结构可以使得能够跨网络中的多个计算机(例如,在本地或在如互联网等公共网络上)复制合同状态/数据;由此促进合同和有关合同履行和执行的数据的分布式/对等状态共享。状态转换引擎优选地采用有向无环图(DAG)的形式,所述DAG由复制法律合同的结构的对象构成。对象可以是条款的逻辑或者合同的条款、参数、输入或其他要素的逻辑的一部分。DAG优选地将在对象之间具有用于表达条款中的对象之间的关系的默克尔链路(例如,一个条款中的对象在另一个条款中引用,如价格)和/或存储与对象、对象变化历史等有关的数据(见图19)。DAG可以适用于形成前阶段(即,在合同执行之前)和形成后阶段(即,在合同执行之后)(见图21)。当可编程条款执行操作(例如,经由API将数据输出至外部系统/应用)或改变状态(例如,价格由于到法律合同的数据输入而降低)时,使用此数据/元数据来更新状态转换引擎。
可以通过以下方式更新状态转换引擎:(a)用户签署状态更新或(b)由状态转换引擎和/或合同的逻辑使此类更新自动化或基本自动化。以此形式,状态转换引擎为每个数据驱动合同提供密码上安全的主干,从而确保合同的状态在任何给定的时间点都是可验证的并且合同的所有历史变化都可由当事人或任何相关第三方审核。在合同的状态可能动态变化并且执行操作(特别是在外部系统、应用和资源上)的数据驱动合同中,这一点尤其重要。
[0039] 合同管理平台组件使当事人能够谈判、形成和管理数据驱动合同,包括(但不限于):可视地形成/编程数据驱动合同;选择和配置外部整合(例如,API、ERP/CRM和其他系统、分析服务、BDL等);将整合映射到可编程条款;将条款添加到合同中(例如,从条款库;使用模板和其他适当的方式);以及经由(多个)图形用户接口(GUI)看板、分析、通知、馈送、图形、图表和其他数据可视化技术来监测合同的形成后状态。所述平台还可以与外部平台、系统和资源整合以使用户可访问其他系统/资源上的模板条款和合同,以及将数据和通知推送至其他系统。更一般地,合同管理系统可以结合合同管理平台、支持系统和方法的操作的计算基础设施、对区块链/分布式账本系统的管理以及本文描述的其他方面。
[0040] 2.概述
[0041] 用于创建、执行和管理具有可编程条款的数据驱动合同的系统和方法用于使合同能够具有一系列动态、自主或‘自我管理’能力和/或与外部资源(例如,设备、服务等)接口连接。另外,数据驱动合同优选地是数据驱动法律合同。在充当法律合同时,数据驱动合同可以包括与表达条款和条件的协议相当的至少一种表现形式。数据驱动合同的次要或部分表现形式可以通过一个或多个可编程条款的配置规范实现。可编程条款优选地为数字本机合同条款,所述数字本机合同条款操作并体现为以高级语言(例如,JavaScript、Scala、Python等)、领域特定语言(专有或公共/开放来源)、这种语言的扩展、或(多种)任何合适的语言编写的软件代码。优选实施例利用面向对象的范例。可编程条款可以包括用于表达预期协议和执行合同中的法律条款的预期操作的各种要素或者可以通过所述要素进行定义。可编程条款可以包括构成规则引擎(如以复杂事件处理系统为基础的规则引擎)、与其整合和/或由其进行处理的合同规则;在BDL系统/平台上运行的BDL脚本;或其他计算逻辑。合同规则是体现合同的逻辑并且由规则引擎使用的规则。所述系统和方法优选地应用于具有法律效力的合同。
[0042] 在合同形成之后,数据驱动合同的条款和条件可以响应于数据和外部事件和/或算法而实时更新和变化。优选地,数据驱动合同可以充当能够在本质上是至少半自主或‘自我管理’的法律合同。此外,数据驱动合同可以与外部系统、应用、协议和平台接口连接以通过各种外部整合来驱动其他操作。外部整合可以用于建立数据源(即,输入)或数据目的地(即,输出)。这些系统和平台可以包括但不限于:API、‘物联网’(‘IoT’)平台、‘边缘计算设备’(例如,传感器致动器、RFID设备等)、事件溯源和事件处理系统/应用(包括ESP/CEP系统)、企业资源规划(ERP)和客户关系管理(CRM)软件、BDL(例如,用于执行事务)、其他数据库架构、合同内的其他条款、其他数据驱动合同和/或其他可访问资源。在一种示例性实施方式中,可编程条款可以根据来自IoT/边缘计算设备或服务的数据自动更新条款中的条件。在另一示例性实施方式中,可编程条款可以将数据引导至或用于将数据递送至外部设备、系统或服务。作为具有多种整合的示例,可以监测可通过BDL系统检索的信息,并且基于BDL系统的信息,对可编程条款的逻辑的执行可以指导基于BDL系统更新外部API端点。以此方式,组合数据驱动合同使用的BDL功能还可以用于驱动其他外部平台整合,这在其他基于共识的BDL系统中可能不容易实现。
[0043] 所述系统和方法的一个潜在益处是提供易于使用的接口来创建和管理数据驱动合同。在某些情况下,所述系统和方法可以使用户更容易创建更加动态、有状态并且具有增加的实用性的合同。所述系统和方法使用的接口可以包括用于形成和配置可编程条款的命令行接口/IDE、如“拖放”合同/条款建立工具等GUI。所述接口还可以包括用于形成、编程、配置和显示合同的可视编程语言。在这种方式中,合同条款(和/或其部分)和对应条件可以由任何数量的包括图形框在内的几何图形和形状表示,并且逻辑、输入/输出系统、关系、动作和操作符可以与下拉菜单、按钮、指针、连接器、单词和数字一起建立和显示。另外地或可替代地,接口可以包括任何数量的程序接口,所述程序接口可以实现基于脚本的接口、标记语言接口、命令行接口、应用程序接口(API)和/或任何合适类型的程序接口。
[0044] 在一种使用场景中,不熟悉合同法或缔约实践的人可能能够使用这些接口来简单地编制有约束力的合同,所述合同不仅符合法律实践而且还可以使用数据驱动方式来使合同成为关系可以围绕其运行的可靠构建物。
[0045] 在另一种使用场景中,律师和训练有素的专业人员可以轻松创建数据驱动合同。这可以减轻法律专业人员依赖于在编程BDL和其他系统上的(包括但不限于)BDL脚本方面训练有素的专家的程度。这对于创建数据驱动合同可能尤其有用,包括创建所连接条款以及建立数据驱动合同中使用的任何可编程条款之间的关系和/或相互关系,包括实例化新的可编程条款(例如,在BDL上或使用BDL),以及来往于外部资源的数据输入/输出。
[0046] 在又另一种使用场景中,服务、应用或设备可以利用程序接口来无缝地使用数据驱动合同。例如,外部计算平台可以使用系统的API来实例化新数据驱动合同,其中,数据驱动合同的至少部分是通过脚本语言或其他编程接口来定义或配置的。
[0047] 另一潜在的益处是,通过提供实时或近实时状态,数据驱动合同可以促进以下两个级别下的实时分析:(a)合同级别和(b)多合同/企业级别。在前一种情况下,合同的实时状态可以用于分析多组合同(例如,合同关系的状态的相互关系)。在后一种情况下,合同的实时状态可以与其他数据集(例如,ERP系统、IMS系统、SCM系统、CRM系统、会计系统等)结合使用以实时或近实时地提供对合同的状态变化对企业活动和管理的影响的见解。分析可以是预测性的(例如,通过使用机器学习技术)、实时进行的或批量处理的。所述系统和方法可以具有附加或可替代的益处,如促进合同管理、运营监管、符合性审计以及合同分析。
[0048] 所述系统和方法的另一潜在益处是能够实时管理每个合同本身,而不是使用传统的CLM软件系统‘间接’管理合同。在不使用单独的软件系统的情况下‘直接’管理、组织合同和以其他方式将合同整合到业务或业务流程中的能力潜在地可以大大降低成本、低效率(例如,手动管理合同和在合同管理者的所需第三方系统上对账)、复杂性以及运营风险。就这一点而言,合同逻辑可以充当企业使用或商业中使用的各种数据系统之间的一种形式的管理实体;从而使合同更接近管理法律关系和流程的实体。当与自然语言合同的NLP处理一起使用时,所述系统和方法在这方面可能尤其有益。
[0049] 所述系统和方法的另一潜在益处是实现多模式合同,所述多模式合同提供数据驱动合同的多个视图。所述系统和方法可以无缝地实现不同视图。例如,所述系统和方法可以提供条款/合同的高级的基于块的工作流程或图形表示或其他工作流程或图形表示、基础自然语言表示(可能类似于传统法律文件或混合数据/自然语言表示)以及程序表示(例如,数据对象表示,其可以包括智能合同语言脚本)。还可以使用其他表示。
[0050] 所述系统和方法的另一潜在益处包括输入、输出或与外部或不同服务、应用、平台、数据源和/或设备的其他整合。具体地,数据驱动合同的条款和其他特征可以利用大量数据源和软件应用和平台或与其接口连接,包括但不限于:API、HTTP客户端、边缘计算/网络连接设备、IoT平台、分析服务/平台、人工智能/认知系统、ERP、IMS、SCM和CRM系统、如BDL等各种数据库架构、事件存储、事件流处理系统等。越来越多的设备变为网络连接的(例如,IoT设备),并且越来越多的服务和应用变为API启用的。所述系统和方法可以利用来自物理世界和系统的数据的不断增加的可用性。所述系统和方法可以特别适用于以下使用场景:在执行数据驱动合同时可以利用来自这种外部资源的数据和/或对这种资源的控制。在一种实施方式中,数据驱动合同可以与数据聚合、事件处理或复杂事件处理系统交互以向数据驱动合同提供数据输入或以其他方式操作数据驱动合同。
[0051] 另外的潜在益处是,由于可以整合任何合适的数据源,所以数据驱动合同可以提供通用的、可互操作的、可扩展的/模块化的且面向未来的执行和管理法律合同的方法和手段。所述系统和方法使新技术和数据源能够在对缔约当事人有益时被整合。传统的法律合同和CLM系统可能无法以相同的方式容纳这些。
[0052] 另一潜在益处可能是,数据驱动合同提供了可以与通用/计算和特定(例如,贸易金融、供应链、起源)BDL交互的通用法律合同。具体地,数据驱动合同可以使数据驱动合同能够在链外(off-chain)运行,但与具有增强功能的BDL系统交互。这一点尤为重要,因为:(a)BDL部分地寻求释放筒仓式数据(siloed data);(b)BDL与法律合同可能不具有复合或通用接口,特别是使用多个BDL并采用数据驱动和/或动态方式;并且(c)BDL上的BDL脚本可能不具有法律环境。另外,传统BDL脚本的功能可能由于脚本语言和/或BDL输入/输出功能而受到限制。可以使用所述系统和方法的一些实施方式来应对这些现有挑战。
[0053] 作为相关潜在益处,数据驱动合同可能能够以标准化的方式使用“智能合同”或BDL脚本(例如,通过使用代码‘库’,而不是对链上的合同条款和条件进行编码(例如,资产转移等的代码,而不是在链上执行的实际条款和条件)。这可能会带来隐私益处、复杂性降低、扩展改进以及其他相关益处。另外的潜在益处是,当在BDL上使用“智能合同脚本”或与其接口连接时,数据驱动合同的动态方面还可以减轻可能导致僵化的不变性问题(即,一旦在BDL上执行BDL脚本,通常修正起来很困难或繁琐)。提供BDL脚本存在于其内且在其内运行的‘元级’数据驱动和法律框架可以减少这种困难。
[0054] 作为与BDL相关的另一潜在益处,数据驱动合同可以具有本地的‘链外’密码和状态转换功能,并且可以在需要如执行事务、共享状态等时进行缓解以与BDL交互(例如,通过编译为虚拟机字节码、嵌入合同的逻辑中以及各种其他方法)。因此,可以使用BDL的数据驱动合同在计算上可能更高效。
[0055] 又另一潜在益处是,数据驱动合同可以促进法律协议以弥合当前在实时物理世界状态与法律合同本身中所呈现的物理世界状态之间使用传统法律合同时可能存在的鸿沟。所述系统和方法为用户提供了用于将来自范围越来越大的零散服务和资源的数据和事件结合到完全或部分表示物理世界状态的法律合同中。这在IoT数据方面尤其适用。
[0056] 作为另一潜在益处,所述系统和方法可以包括数据驱动合同的条款和条件的自动重新谈判/修正。数据驱动合同的部分可以根据各种输入(例如,本文提到的数据源)、逻辑、规则和/或算法自动更新合同的条款和条件。例如,数据驱动合同的定价协议可以基于来自外部来源(例如,IoT设备或数据API)的履行数据、基于数据驱动合同中定义的条件是否满足实时改变价格。
[0057] 另外的潜在益处是,通过使数据驱动法律合同能够与数据源整合、特别是实时或近实时地,数据驱动法律合同可能潜在地引起无法通过使用传统法律合同产生的效率。这种效率的示例包括(但不限于):自动和条件动作,如终止、订购(其可以通过使用连接至合同管理平台或以其他方式连接至合同的业务规则系统等来实现);使用实时或近实时合同状态来自动地或以其他方式在如物流系统等外部系统上执行动作从而以编程方式安排货运/运输或购买货物(例如,通过使用JSON,或来自合同的其他合适输出);与第三方达成的协议可以用于反映基于数据的业务决策(例如,合同可以用于反映实时或近实时数据),这可能使法律协议更接近‘结果’合同(例如,合同规定了定义的结果而不是可能不反映预期结果的商品/服务);合同可以显示状态并响应于数据而更新,这意味着对履行、问题、进度等的了解和洞悉可能是已知的,这与静态的且无法拥有这些属性的传统合同不同;并且自动地或在人工干预减少的情况下更新与合同相关的其他合同。
[0058] 作为又另一潜在益处,所述系统和方法可以促进创建和管理与法律合同的执行相关的密码、可审计且当事人可访问的记录。在这种密码方式中,合同、条款、相关数据输入和其他元数据可以部分或全部通过BDL、对等计算基础设施或替代性计算基础设施管理。
[0059] 作为另一潜在益处,所述系统和方法可以实现数据驱动的定制以使用本文描述的数据驱动能力中的一个或多个,如与BDL整合、摄取来自外部数据源的数据、触发某个动作作为输出以及其他合适的选项。这种定制可以针对数据驱动合同要应对的特定挑战进行定做。
[0060] 所述系统和方法可以应用于各种各样的使用案例。所述系统和方法可以特别适用于合同、文档(包括与法律合同一起使用或作为其一部分使用的文档,如采购订单、时间表和附件)以及管理系统。所述系统和方法可以用于多个领域,如:如图15所示的供应链和物流协议、供应链金融、担保、农业、采购、营销和推广(例如,社交媒体)、资产融资/抵押品管理、就业和自由职业者/顾问协议、软件许可、保险合同和政策、服务水平协议、制造合同、贷款协议、抵押、贸易金融(例如,信用证和相关文件)和/或许多其他领域。在这些领域中,存在许多潜在用途。
[0061] 在一种示例性实施方式中,可编程条款和合同是模块化的,并且可以在彼此具有或不具有任何必要连接的情况下独立地实施、使用和互换。例如,在给定合同中,可编程条款可以不连接至其他可编程条款,和/或可以添加至其他条款是不可编程的自然语言合同中。在又另一示例性实施方式中,可以在边缘计算设备上执行和/或存储与这种合同或特定条款为基础且与其相关联的软件和数据,所述边缘计算设备本身可以为合同的主题,如供应或租赁协议中购买或租赁的设备。这些设备最终可以是缔约当事人的代理人或委托人,并且所述设备可以形成、谈判和履行合同。边缘计算设备使计算能够远离合同进行。如此,本实施例中的数据驱动合同可以作为IoT网络、网格网络等上的合同管理实体来操作。对于所连接设备的网络,这可以被视为类似于CLM。
[0062] 在一种示例性实施方式中,供应协议中的商品的合同价格将取决于实时数据的若干来源,如商品的性能、运输条件、估计的交货日期以及相对于行业基准的成本和性能。如果触发了有关数据的指定条件组合,则合同价格将会下降(见图15)。在另一示例性实施方式中,可以通过时间日志输入、来自启用IoT的雇员胸卡或类似物的数据以及与确定报酬和自动化付款的雇员/自由职业者输出、合同满足、遵守法律/监管义务等相关的其他数据测量结果来监测雇员/自由职业者的表现。在另外的示例性实施方式中,合同农业协议可以通过使用各种IoT数据(例如,土壤水分含量、氮含量、土壤组成以及不存在/存在某些化合物)和分析数据(例如,产量、田间使用以及土壤图等)进行数据驱动。
[0063] 在另一示例性实施方式中,可以组合可以进行非合同决策的数据驱动合同来定义业务逻辑规则。例如,数据驱动合同可以定义可编程条款,所述可编程条款取决于使合同能够在满足某些条件时有效终止的事件。业务规则系统可以与可编程条款进行交互并且基于给定的当事人特定规则自动发送通知电子邮件。例如,终止通知应自动发送,其中,“距离客户交货期>X天”并且“预计存货>Y单位”,或“存货水平>10,000单位”以及“购买率<500/天”。类似地,可以使用预测性或规范性分析。例如,只有在预计存货在未来30天内不会售完的情况下才可以使用业务规则来终止合同。在另一示例中,可以通过约务更替算法自动确定新的供应商。例如,在选择新供应商之前,如果合同可以有效终止,则业务逻辑可以定义如何查询和比较各潜在供应商。
[0064] 在一种可选变体中,用于创建、操作、执行和管理数据驱动合同的系统和方法可以包括组合使用事件流处理(ESP)来维护事件和合同版本化记录。所述系统和方法使复杂事件数据能够与法律合同的逻辑交互,因为在一个实施例中,合同逻辑定义并且驱动复杂事件处理系统使用的规则引擎的查询、动作和操作(见图12)或以其他方式使数据能够从复杂事件处理或事件流系统/引擎中提取至合同的逻辑中。所述系统和方法可以使事件流、简单或复杂事件、规则引擎和/或源自数据的推断能够用于或以其他方式实施合同的逻辑以及合同的合法权利和义务。例如,复杂事件处理系统可以遍历合同规则、选择外部事件条件为真的规则并且然后评估并采取相应的合同动作或操作,如付款或解除债务。可替代地,可编程条款本身可以实施与ESP系统接口连接的合同规则,而不使用外部规则引擎(例如,见图11)。
[0065] ESP系统和方法的一个潜在益处是提供所述设施在合同中使用无法以其他方式进行监测或者将产生显著的事务和监测成本的复杂事件和模式。例如,ESP可用于监测来自多个不同数据源的多个事件之间的关系,所述数据源传统上很难或无法进行符合性监测。ESP系统和方法可以响应于众多复杂的数据输入条件而管理合同。
[0066] 所述系统和方法的另一潜在益处是能够使用越来越精细化的事件作为指定、定制或制作高度事件相关的合同协议的基础。正如可以使用事件之间的复杂关系一样,作为合同协议的一部分监测以高频率、小值或小值变化发生的事件是不可能的或特别繁琐的,除非将其结合到能够处理复杂事件的数据驱动系统中。另外,ESP系统和方法可以使得能够围绕复杂事件建立协议,但是针对将被基本上实时地执行的那个合同。
[0067] 所述系统和方法的另一个潜在益处可能是能够形成数据驱动合同,所述数据驱动合同结合对将难以或不可能作为不是数据驱动的或动态的传统合同关系的一部分而实现的事件的复杂计算或操作。例如,所述系统和方法可以用于执行复杂的条件动作、检测事件模式、执行事件抽象化、过滤事件、聚合和转换事件、对事件层次结构进行建模、检测事件之间的关系(例如,因果关系、成员或计时)以及使事件驱动流程抽象化。
[0068] 所述系统和方法的另一潜在益处可以是,复杂计算可以不在合同本身的主体内发生,而是可以委托给事件处理引擎、外部系统和/或任何合适的实体。这在合同的逻辑可以全部或部分地通过BDL脚本的各种使用存在于BDL上时尤为重要,如本文所述。通过‘链外’执行计算,ESP系统和方法可以降低(多个)BDL脚本的陈述和操作的复杂性,并且可能降低使用BDL所需的任何计算成本。在提到用于表示或实施可编程条款的编程范例以及计算的哪些方面使用BDL(如果有的话)时,不同实施例可能有所区别。
[0069] 所述系统和方法的另一潜在益处可以是增强可用性。具有不同数据科学和分析经验水平的用户(包括几乎没有经验的用户)可以使用所述系统和方法将复杂数据和事件流处理整合到合同中。
[0070] 3.用于实施具有可编程条款的数据驱动合同的系统
[0071] 如图1A和图1B所示,用于实施具有可编程条款的数据驱动合同的系统优选地包括数据驱动合同120,所述数据驱动合同包括至少一个可编程条款122的配置。可编程条款120可以被配置成与BDL进行状态更新整合、与外部资源整合、与法律逻辑(例如,可以表征条件、规则、动作和/或与法律或基于规则的框架的符合性相关的其他方面的可编程逻辑的一部分)和/或其他组件。另外,用于实施数据驱动合同的系统可以使用各种处理引擎130,所述处理引擎可以包括用于分布式或对等处理的网络。本文描述的一种实施方式包括CEP引擎132。所述系统优选地与用于创建数据驱动合同的包括如本文所述的合同管理平台的系统组合使用。
[0072] 3.1可编程条款
[0073] 优选实施例的数据驱动合同充当定义缔约当事人与任何其他有关实体之间的法律关系的约定安排。在一种模式下的数据驱动合同可以充当传统/静态法律合同的替代和/或补充,并且在替代性或并发模式下,可以充当用于驱动和响应外部事件和数据的自动化机械过程。数据驱动合同可以用于基于对方当事人或其他来源提供的数据进行自动审计、符合性检查以及履行合同义务等。
[0074] 数据驱动合同优选地包括一组可编程条款,所述可编程条款可以使数据驱动合同的条款和条件能够在合同形成之后响应于数据和外部事件而实时更新和改变。另外地或可替代地,可编程条款和数据驱动合同可以包括可编程逻辑(例如,业务规则、业务逻辑、启发法、法律逻辑等)、法律参考、合同特性、BDL脚本接口、数据/资源接口和/或其他组件。数据驱动合同还可包括静态条款。静态条款可以是自然语言条款(例如,非动态条款或具有自然语言内容的条款的一部分)。另外地或可替代地,静态条款可以以可计算的形式表示(例如,不是自然语言格式。本文中,自然语言条款被引用为静态条款的主要形式。静态条款(无论是以可计算的形式还是以自然语言表达)。数据驱动合同可以包括配置文件或数据对象,所述配置文件或数据对象定义数据驱动合同的一组组件和其他特性,但是数据驱动合同可以以任何合适的格式表征。静态条款可以用于使传统合同规定能够结合到数据驱动合同中。合同特性可以包括账户或实体关联、合同名称、合同许可(例如,谁可以查看以及他们可以查看什么数据,谁以及何时可以编辑/修正,谁以及何时自行根据合同的某些操作,谁可以执行,谁可以更新一个或多个条款的状态等)和/或系统内的合同的其他合适特性。
[0075] 可编程条款可以包括可编程逻辑,所述可编程逻辑用于使得能够定义和执行反应性和动态操作。可编程逻辑可以基于输入数据、数据中的事件或条件检测、预定时间段来触发和/或设置为连续运行。还可以使用替代性和附加触发因素。可编程逻辑可以定义一般业务规则、合同规则、逻辑和/或过程。可编程逻辑可以为处理指令,所述处理指令可以包括条件语句、数据变换、资源交互或任何合适的处理逻辑。在一个实例中,可以由合同管理平台执行和实施可编程逻辑。在另一个实例中,可编程逻辑可以委托给BDL或其他类型的分布式计算系统。例如,馈送到BDL中的外部数据可以促进执行在执行/操作可编程条款时使用的可编程逻辑。在又另一种变体中,用户接口充当分布式计算系统的抽象层,并且数据驱动合同的至少一部分在BDL(例如,编译为VM字节码)或其他形式的分布式计算平台上执行。例如,可编程条款可以将由动态交互(例如,两个或更多个条款之间的交互)产生的数据输出至BDL上的(多个)BDL脚本以执行或进行动作,可编程条款可以编译为BDL虚拟机的字节码、经由API与BDL的应用二进制接口(ABI)交互、在BDL上部署代码和/或调用BDL上的代码(例如,从脚本库)或任何其他适当的交互方式。在又另一种变体中,系统通过部分或完全分布式计算系统、去中心化计算系统或任何合适的计算基础设施来实施。
[0076] 可编程条款可以优选地提供与可计算表示协调的自然语言合同表示(例如,使用自然语言生成或任何类似的替代方法),所述自然语言合同表示可以是数据驱动的。可编程条款优选地被整合到完整合同中,并且可以使用任何合适数量的可编程条款。另外,一个可编程条款可以包括一个或多个嵌套的可编程子条款和/或参考或者以其他方式链接至其他可编程条款。
[0077] 可编程条款优选地是可编程的且可配置的。另外,可编程条款可以基于对方当事人或其他来源(如本文所述)提供的数据自主监测和报告对方当事人对其合同义务的履行和遵守。条款的规则和其他方面可能取决于响应于外部数据而进行的改变或更新。这种改变可以是连续的,或可以响应于外部数据而实时进行。
[0078] 可编程条款和数据驱动合同可以使用各种方式来构造和制定。在提到用于表示或实施可编程条款的编程范例以及关于计算的哪些方面使用BDL(如果有的话)时,这些方式可能有所区别。在一种变体中,可以使用面向对象的编程方式。在另一种变体中,可以使用元编程和基于BDL的实施方式的混合。元编程出于两种原因而对动态的自我管理合同尤其有用。第一,元编程可以实现在可编程条款和/或合同之间创建链路。第二,元编程可以动态地创建、修改或更新条款和条件并且由此用于更新合同的状态。在一种变体中,可编程条款的一部分或全部可以使用元编程范例/语言来定义。在另一种变体中,可编程条款可以用领域特定语言(例如,Solidity、商业合同语言、合同描述语言或其他合适的语言)来编写。在另一种变体中,可编程条款可以用如JavaScript、Python、Scala、Go等高级语言来编写。在又另一种变体中,可编程条款可以通过自然语言定义有‘可编程组件’对象,如图17所示。‘可编程组件’是与可编程条款一样操作的数据对象,因为可编程组件被编程为响应于数据而以本文提到的方式进行响应,但嵌入在自然语言合同中(例如,被编程为响应于事件发生而变化的‘价格’对象,如在运输容器中的温度违反定义的范围的情况下)。‘可编程组件’可以嵌入到自然语言条款中或以其他方式由自然语言条款使用。自然语言条款优选地为静态条款或包括自然语言内容的条款的子章节。自然语言内容优选地为非动态的。例如,操作用于动态调整根据供应协议提供的商品的价格的‘价格’组件可以嵌入到定价自然语言条款中。可以将多个可编程组件添加到给定条款中,并且合同中的多个条款可以利用可编程组件。可编程组件可以采用与可编程条款相同的方式在同一条款中或跨多个条款彼此连接、相互依赖或以其他方式引用。例如,价格条款可以更新质保条款。使用可编程组件的潜在益处是可以将数据驱动功能(如本文所述)引入到数据驱动合同的自然语言内容中。对于某些用户来说,这种混合条款结构可能更容易访问且更简单。可以以至少两种方式使用可编程组件。第一,创建或利用使用数据驱动功能来增强的自然语言合同模板。在一个这种实施例中,可编程组件可以用于生成具有动态功能的数据驱动合同,用户能够使用数据来自动填充所述数据驱动合同并且能够配置所述自动填充。例如,用户可以根据边缘计算/IoT设备可测量的度量将‘价格’可编程组件设置为每单位1000美元以介于变量X与变量Y之间。可编程组件可以被配置成基于定义的条件更新另一个可编程组件(例如,每降低3%的价格,质保期延长2个月)。可编程组件可以通过拖放或其他合适的用户接口轻松嵌入自然语言合同中。第二,可编程组件可以与NLP功能结合使用。
[0079] 3.2可编程条款、状态更新和区块链/分布式账本
[0080] 可编程条款可以实施为BDL上的BDL脚本,包括一个或多个BDL脚本作为要素,引用BDL脚本和/或编译为一个或多个BDL(例如,虚拟机字节码),生成/管理数据或将数据传递至BDL上的一个或多个BDL脚本,部署和/或调用BDL脚本(例如,从库中)。可替代地,可以使用用于与BDL上的BDL脚本交互或利用BDL上的BDL脚本的其他整合机制。每个条款/合同可以使用多个BDL脚本和/或BDL。另外,可以整合多种类型的BDL系统/协议,使得可编程条款不限于一种BDL类型或协议或BDL的一种实施方式(例如,每个条款/合同可以使用多个BDL实例)。BDL的用途可以包括:推送要存储在BDL上的数据(例如,将如价格变化等状态更新,一个条款、多个条款或合同的状态推送至BDL);从一个或多个BDL中提取数据(例如,如事务数据、所存储数据);根据合同在BDL上执行事务,如转移标记化资产;以及许多其他应用。
[0081] 与BDL的整合或交互可以与外部BDL系统一起进行。然而,BDL可以不是外部的。例如,所述系统和方法可以包括运行具有VM、编译器和其他合适组件的BDL系统以编译为VM字节码并且通过“内部”/管理BDL系统执行。
[0082] 当在BDL上实施时,与实施、使用、执行或改变可编程条款的事务相关联的数据可以使用编码和解码数据的特定方法。在一种可能的实施方式中,应用二进制接口(ABI)可以用于充当用于通过创建编译合同的变量、事件和方法的JSON化(JSON-ified)表示来将数据编码到事务中和从事务中解码出数据的机制。在优选实施方式中,ABI可与BDL系统/虚拟机互操作和/或与其整合。
[0083] 如上所述,在一种变体中,BDL上的一个或多个BDL脚本的生成和管理可以是数据驱动合同中的可编程条款的要素。在第二变体中,数据驱动合同的可编程条款可以完全实施为BDL上的BDL脚本或一系列脚本。另外或可替代地,BDL脚本可以是可编程条款到其他应用、平台或网络的输出。例如,可编程条款可以设置/部署和调用(invoke)BDL上的BDL脚本(例如,从脚本库或引擎)、调用(call)所述BDL脚本、将数据传递至所述BDL脚本、将所述BDL脚本编译为BDL虚拟机的字节码或者以其他方式将所述BDL脚本用于标记化资产转移。
[0084] 利用BDL可以包括使用(多个)BDL来启动、处理、记录、存储、传输、认证和/或验证如上详述的合同的法律条款和条件的数据驱动变化。这可以包括在BDL上保存或以其他方式存储整个合同或合同的一部分。可替代地,这可以包括在BDL上保存、执行或存储单独的可编程条款、BDL脚本、事件或输入数据或者其他方面。可以使用针对动态法律条款和条件的BDL实施方式的一些潜在方法。
[0085] 一种方式可以包括用于通过更新BDL上的相应代码来为合同的每次更新启动新的BDL记录/事务的过程。
[0086] 数据驱动合同的另一种可能的BDL实施方式是使可编程条款具有嵌入式功能,所述嵌入式功能用于在合同的任何条款或条件和/或BDL脚本更新时或以其他方式需要改变时自动创建BDL脚本(或多个脚本)的具有(多个)可更新地址参数的新版本。(多个)经更新的地址参数将反映数据驱动合同的经更新状态(例如,改变为一个或多个可编程条款的状态)。可替代地,可编程条款可以调用或部署这种脚本。还可以使用替代方案。
[0087] 相关方法可以使用版本化系统,在一个实例中,所述版本化系统使用将数据驱动合同的变化视为调用的入口通道脚本,并且转发所述调用,其方式为在合同保存在BDL上或在BDL上表示时更新所述合同。在那种情况下,转发所述调用以更新一个或多个可编程条款可以通过可更新地址参数来定义。
[0088] 反映使用了BDL的经更新条款和条件的另一种方法是通过连接单独的链上代码(例如,BDL脚本),使得BDL上的数据驱动合同的当前表示调用另一个合同,所述另一个合同然后变为分布式账本上的操作表示。实施这一点的一种示例性方法是在调用正在实施法律合同的条款和条件的函数时改变在BDL上执行的代码;在这种情况下,经更新的法律条款和条件将使所述函数调用BDL上反映新条款和条件的不同代码。又另一种方法是改变BDL合同引用的合同、脚本或代码。这些方法并非详尽无遗;还可以使用其他方法。
[0089] 3.3合同规则、规则引擎和‘链上/链外’区块链实施方式
[0090] 1.可编程条款优选地包括一个或多个合同规则或者通过一个或多个合同规则来实施,所述一个或多个合同规则可以通过上述方式之一来构造和制定。合同规则可以是过程合同脚本或宣告式合同脚本或其他任何合适类型的脚本。类似地,可以使用其他类型的合同规则。所述系统可以包括用于根据合同规则类型和系统的特定目标来实施合同规则的各种方式。单个可编程条款也可以使用多种类型的合同规则。类似地,数据驱动合同可以具有包括不同类型的合同规则的可编程条款和/或以各种方式实施。
[0091] 2.过程合同脚本是可以针对可编程条款设置的一种可选类型的合同规则。过程合同脚本可以利用过程逻辑,在程序逻辑中,定义的过程以定义的顺序执行。过程合同脚本可以利用BDL脚本(例如,通过引用、包括或如本文所述的方式等其他适当方式)。过程合同脚本可以定义逻辑状态的状态机以及那些状态之间的转换。
[0092] 3.宣告式合同脚本是一种优选类型的合同规则,所述合同规则可以通过待进行的动作来定义,而无需指定定义的顺序。规则引擎可以根据宣告式合同脚本定义的合同规则进行推理并且确定待执行的步骤的适当顺序。可以通过明确的正式声明来定义宣告式合同脚本。基于逻辑的编程语言可能尤其适用于宣告式合同脚本和实施法律合同,因为在事实的特定顺序和其他信息存储在知识库中时,它们并不会因为可废止推断过程能够确定缔约过程、操作和动作的适当顺序而具有相关性。
[0093] 4.在优选实施方式中,根据宣告式合同脚本进行的推断式推理的过程将有助于确定合同逻辑如何处理引起合同状态变化、操作、结果和其他结论的外部事件。可废止推断过程可以与使用宣告式合同脚本的合同规则一起使用以确定执行合同要采取什么合同(或相关)动作或操作以及以什么特定顺序采取这种动作或操作。使用可废止逻辑的合同规则的一个益处可能是可以减轻函数排序或多线程的问题,因为可以二维地定义代码的状态流。可废止逻辑规则引擎的示例可以是SPINdle或其他可废止逻辑框架和/或其他适当语言或领域特定语言。在合同逻辑的可废止表示中,可以通过辩证法证明来得出结论。用于进行推断的规则引擎可以在‘链上’(即,在BDL上)或在“链外”或以任何合适的替代方案或变体出现。
[0094] 5.可废止逻辑规则引擎可以在部署在BDL上或外。在一种变体中,可废止逻辑推断在BDL系统内进行(例如,‘链上’)。在另一种变体中,可废止逻辑推断在区块链系统之外进行(例如,‘链外’)。在BDL系统之外进行的可废止逻辑推断可以在集中式服务器(例如,第三方服务器)、分布式计算系统、对等系统和/或任何合适的系统上进行。一个‘链外’变体选项可以包括将合同逻辑和推断结论记录在BDL上。
[0095] 6.可编程条款的不同之处还可能在于可编程条款如何表示为规则引擎(如CEP规则引擎)中的规则或者如何与所述规则相关。在一种可能的实施方式中,可编程条款可以:(a)直接编写为复杂事件处理规则;或者(b)在混合逻辑/规则实施方式中充当复杂事件处理规则;以及(c)(a)或(b),与一个或多个BDL脚本接口连接或不与其接口连接。选项(a)优选地在规则在CEP引擎内操作的实施方式中使用。选项(b)优选地在规则和所触发动作与引擎分离(在其外部)的实施方式中使用。类似地,可以使用替代性方式,并且另外可以使用任何合适的组合。
[0096] 7.在另一种变体中,合同规则还可以或可替代地可以表示为层次状态机(HSM)。可以在纯粹的可废止弃逻辑中定义合同逻辑,所述可废止逻辑可以由层次状态机逻辑引擎解释和执行。HSM可以用于确保解释和执行环境在数学上是可证明的并且因此更安全和高效。
[0097] 如上所述,可编程条款可以采用各种方式来实施。至少有三个实施选项包括:(a)‘链上’宣告式和过程合同规则选项;(b)编译的合同逻辑选项;以及(c)‘链外’选项。如本文所述,所述系统和方法可以与事件处理系统(例如,与CEP引擎)组合使用。可编程条款的各种类型和实施方式可以与这种事件处理系统一起使用或不与其一起使用。
[0098] 在‘链上’宣告式和过程合同规则选项中,可以将推断结论存储在BDL上,并且可以在BDL上执行过程合同逻辑。在‘链上’变体的一种变体中,可以使用过程语言来编写元程序。规则引擎可以与合同规则一起使用以围绕知识库做出结论。过程合同规则的所产生动作可以作用于该知识。‘链上’解决方案可能使中介服务能够被消除,并且可以在BDL中建立规则引擎以获得更可靠的推断。
[0099] 在编译的合同规则选项中,可以将数据驱动合同全部或部分地编译到BDL上以供存储和执行。混合实施方式选项可以将知识库转换为较低级表示,所述较低级表示可以用于提高推断计算的速度。编译的代码或脚本可以是合同规则的一部分,所述一部分可以重新编译成在BDL系统的虚拟机(或类似组件)上运行。可以针对特定环境编译字节码。在一种变体中,多种类型的字节码用于利用多种不同种类的BDL。可以在‘链上’或'链外'生成编译的字节码。在‘链上’变体中,有关当事人可以检查编译器以建立信任。‘链外’变体可以利用第三方服务。在修改合同时,可以重新编译合同规则和/或相关部分。可替代地或另外地,当调用可编程条款的(多个)函数时,可以编译‘链上’代码。如果更新知识库,则可以在不中断相关过程的情况下更新合同规则。
[0100] 在‘链外’选项中,合同的当事人签署对合同的状态的更新。这些状态更新可以记录在状态版本化系统中。
[0101] 3.4网络和计算环境
[0102] 所述系统可以使用任何合适的计算环境来实施或者可使用多个计算环境。在一种变体中,系统(或其一部分)可以在虚拟机、容器或一系列容器或沙箱环境上运行。虚拟机优选地被配置成通过应用层协议或其他合适的通信信道实现与外部应用和服务交互。
[0103] 可以使用对等协议(例如,RPC over HTTP/2或其他适当的标准)来执行缔约当事人之间的合同(例如,发送对合同的状态更新、形成和管理合同等)。
[0104] 在一个特定的‘链外’计算环境中,服务器或虚拟机(VM)通信地连接在一起。每个服务器/VM可以被容器化(containerized)并且可以与多个客户端连接。每个服务器/VM可以是网络上的可能是联合的节点,并且可以被视为表示缔约实体、个体企业、公司、团体等。每个客户端可以是代表每个缔约实体行事的用户。替代性执行环境可以包括(但不限于):
(a)在可信第三方服务上运行合同,所述可信第三方服务代表并且独立于缔约当事人执行合同;以及(b)用于使缔约当事人或系统的所有用户之间的状态转换自动化以验证合同的状态变化的任意共识算法/逻辑(在适当情况下),包括(但不限于)实用拜占庭容错(PBFT)、PAXOS、RAFT。非缔约当事人可以进行验证。在一个实施例中,BDL可以用于使用共识算法/逻辑来存储和验证合同的所有状态变化。提交至BDL的数据可以使用复杂的密钥衍生函数或另一适当的机制来加密数据(例如,内容、函数、调用等),使得非缔约当事人和未经许可的当事人不可以查看从合同中提交至BDL的数据。
[0105] 3.5合同状态更新
[0106] ‘状态转换系统’提供用于在每个数据驱动合同或可编程条款的状态改变时(例如,条款更新、履行义务、执行来自合同的输出)以安全且可验证的方式使所述数据驱动合同或可编程条款版本化。合同状态转换系统充当合同的状态变化记录。合同状态转换系统优选地存储不同可编程条款的版本变化以及与对一个或多个合同的执行有关的其他数据。更具体地,由状态转换系统记录的合同状态对象可以包括:与数据驱动合同的任何变化或动作有关的元数据,包括用于驱动决策的数据输入;可编程条款的有效合同规则;条款和条件的实质性改变;和/或由某个条件产生的条件数据输出或动作。为此,合同状态转换系统可以与BDL一起起作用或与BDL一起使用。例如,BDL可以用于暴露非缔约当事人可以访问的数据(加密的或采用其他方式的)和/或可以得益于通过使用共识协议进行的验证。可以向状态转换系统添加附加组件以提供另外的功能或事件。
[0107] 状态转换系统可以包括数据建模系统,所述数据建模系统采用默克尔树的形式或优选地采用由复制法律合同的结构(如图19的示例所示)的对象(节点和边缘/链路)构成的有向无环图(DAG)的形式。节点可以表示与合同有关的任何数据片(例如,合同代码的对象;状态变化;当前状态;输入到或由合同/条款输出到包括BDL的外部资源的数据;在与合同相关的外部系统上执行的事务,如BDL上进行的资产转移或经由API进行的付款;等等)。每个节点优选地是不变的,通过其内容的密码散列来识别和进行内容寻址。DAG将在对象之间具有边缘/链路。当可编程条款或可编程组件执行操作(例如,向外部API输出数据)或改变状态(例如,价格降低)时,使用此数据/元数据来更新状态转换系统。优选地,为每个操作、更新、事件等添加新节点对象。每个改变优选地链接至表示之前状态的节点并且链接至输入改变所依赖的原子对象(以及与改变/新事件有关的元数据),由此提供在数据驱动合同随时间的推移而变化时数的状态的不变时间顺序记录。因此,缔约当事人能够验证并‘重现’合同状态的任何变化的原因。在给定实施例中,任何对象类型、数据、特性、与对象有关的元数据可以存储在DAG中。默克尔边缘/链路是引用或以其他方式定义与另一对象的关系并且通过目标对象的散列表示的密码图形边缘散列(例如,SHA-3、SHA-256)并且嵌入在源对象中。在替代性实施例中,可以使用其他类型的边缘。可以表示对象之间的任何合适形式的关系(例如,事务、修正、事件、输入、输出、状态更新等)。每种关系类型可以具有子类型(例如,‘事件’可以进一步划分为如终止等合同事件、如数据被推送至外部资源等处理事件等)。
‘默克尔化(Merkleized)’数据结构可以用于验证以分布式方式跨网络中的多个主机存储的数据的完整性(即,检测副本的不一致性)、用于减少传送以比较数据块的数据量(即,不需要在机器之间传送整个数据集以进行比较)并且用于有效地检查一组文件或一个非常大的文件未被修改(例如,在对等场景中,能够查询可信主机以确保从对等方接收到的数据尚未被修改)。
[0108] 优选地,DAG存储系统物理地存储在每个相关当事人可访问的位置。与无许可BDL的情况一样,存储可以是集中式、联合式或完全去中心化和复制式的。存储介质可以采用任何适当的形式,但可以包括(但不限于):数据库、图形数据库、星际文件系统(IPFS)等。DAG可以托管在集中式服务器、服务器集群上,或者可以使用去中心化的协议/架构(例如,IPFS)或任何其他适当的机制。优选地,DAG存储系统被配置成使得:所存储的数据可通过通用唯一识别码(UUID)或其他合适的唯一识别机制进行内容寻址;UUID在相关数据对象之间具有默克尔链路;并且相关当事人对数据存储介质具有相同或相似的访问权限。
[0109] 优选地,存储在默克尔DAG存储系统中的对象是静态且不变的。如此,优选地,版本化系统存储本质上具有原子性的对象(见图19),从而意味着所述对象表示与执行合同相关的最小的不可分割且持久的数据片(例如,用于执行合同和改变合同状态的定义逻辑和动作的输入)。当合同更新时,只有原子对象发生变化,而数据的其余部分保持不变。当合同更新时,版本化服务器会创建新的默克尔根,所述默克尔根链接至所有新的/经更新的对象。默克尔根是散列树中可以用于验证其他对象的完整性的节点。
[0110] 优选地,所有数据以‘只附加(append-only)的’方式添加。可以经由API(或任何其他适当的手段)查询数据,以便在合同管理平台看板上显示、由合同逻辑(例如,在需要当前和历史数据的情况下)使用并且用于其他应用。
[0111] 来自状态转换系统的数据(例如,状态更新对象、事务等)可以添加到一个或多个BDL中,以便与其他当事人/系统共享状态、以便执行事务(例如,通过将对象传递至BDL代码)或以便进行任何其他合适应用。可替代地,在给定实施方式中未使用状态转换系统的情况下,可以将数据传递添加至一个或多个BDL。
[0112] DAG结构使由于可编程条款与数据输入之间的交互而发生的‘事务’(例如,外部数据进行的函数调用、来自缔约当事人的状态更新、由另一条款触发的更新等)能够以‘实时’记录数据驱动合同的时间顺序历史的方式进行存储。所述系统可以使版本化取决于合同逻辑的原子对象自动改变和版本化。依赖于外部数据的对象(如API整合、BDL上的BDL脚本等)根据外部数据的提供者而改变和版本化。外部数据可以驱动内部合同数据变化。改变可以是自动化的,或者需要一个或多个缔约当事人和/或第三方的许可才能生效。事件流版本化系统可以充当用于确定合同状态的外部数据记录。在给定的状态转换系统实施方式中使用BDL的情况下,‘链外’选项可以通过以下方式操作:通过多重签名或‘链上’许可的形式或其他逻辑来定BDL状态的一部分,使得特定的一组参与者必须彼此同意才能更新BDL状态。然后,参与者通过构建和签署可以提交至BDL但相反暂时保留的事务和其他合同更新来相互更新其之间的状态。每次新的更新都可能覆盖之前的更新。参与者更新如存储在本文所述的存储在状态转换系统上的相应版本化合同数据。这可以用于合同与API(例如,web服务API、IoT平台等)之间的事务。然后,缔约当事人(或被允许这么做的任何其他第三方)将状态提交回到BDL,所述BDL再次解锁状态(通常采用与开始时不同的配置)。在图14A中示出了此过程的指示性示例,缔约当事人可以通过合同状态更新来密码地签署更新。合同状态更新可以充当发送至可编程条款并且充当用于执行操作的函数调用的消息。当事人签署状态或状态转换,所述状态或状态转换在根据状态更新的逻辑而有效时相应地更新状态转换系统,并且然后在适用的情况下对BDL采取任何动作。
[0113] 在图14B所示的另一种变体中,合同状态更新可以是可编程的。如果数据改变合同的状态,则合同状态更新可以自动和/或有条件地更新。当事人可能无需手动签署每个状态变化。合同状态更新实施合同的逻辑并且在必要时自动对BDL执行动作。经更新的状态在状态转换系统中反映。
[0114] 可以不授权或允许可访问合同的当事人或实体了解某一状态信息集和/或数据输入信息集。可以使用选择性状态共享,使得当事人共享有合适的信息,以及对数据驱动合同及其相关联数据输入、事件和动作的可见性。在一些变体中,可以请求当事人验证之前是否已经有悖于事务的有效性而消耗了给定事务(例如,在UTXO BDL模型中)消耗的状态,这可以实现设计的增强隐私性和可扩展性。输入至数据驱动合同的外部数据可以通过使用零知识证明(或类似物)来验证,当事人(证明者)可以通过所述零知识证明向另一当事人(验证者)证明给定陈述为真,而无需传达除了所述陈述确实为真的事实之外的任何信息。使用零知识证明的过程可以起到防止与合同的其他当事人共享敏感数据的作用。
[0115] 在一种实施方式中,外部数据可以借助于实现流数据的实时智能的事件流过程和/或复杂事件处理(‘CEP’)与数据驱动合同整合,从而使得易于识别原子事件的复杂序列,如聚合、派生、模式、抽象、关系(例如,因果关系)。
[0116] 3.6可编程条款和法律逻辑
[0117] 可编程逻辑可以部分地还包括法律逻辑,所述法律逻辑可以表征与法律或基于规则的框架的符合性相关的条件、规则、动作和/或其他方面。法律逻辑可以利用法律参考。可编程逻辑和/或法律参考可以用于确保合同不仅基于当事人之间的协议来维持,而且合同的条款和条件保持符合相关法律和法规。例如,一个可编程条款的改变可能导致更新或以其他方式改变其他可编程条款。一个或多个条款的增强可以基于预定义条件或动态检测到的条件(例如,来自事件流引擎)。合同的改变、更新可以被视为状态更新,并且因此可能:(a)被许可(例如,要求n个当事人中的m个当事人签字);(b)可以为此而使用BDL;并且(c)还可以将与法律逻辑有关的状态更新推送至BDL。法律和/或业务逻辑可以用于验证符合性并且更新合同或单独的条款。合同的条件和功能可能受到系统基于公司内部批准、适用法律(例如,来自法规和/或判例法的标准)以及通过法律逻辑嵌入条款中的其他外部标准的预设要求的限制。例如,可编程条款可以包括对美国破产法(U.S.Bankruptcy Code)的法律逻辑参考以判定合同是否应当基于来自整合到可编程条款中的会计API的数据来通知当事人执行某种动作终止。当事人可以通过状态更新来反映变化(例如,指定新的适用利率)。可编程逻辑的更新然后可以在合同的逻辑中反映(例如,法律允许的利率的变化在被当事人签署时可以更新在可编程条款中计算的并且根据合同例如经由付款API付款或推送至外部系统的付款。
[0118] 在一种变体中,可编程条款可以包括法律逻辑,所述法律逻辑被配置成导入来自从法律参考的语言或数据,其中所导入的语言可以响应于法律的变化而变化。用于处理法律逻辑的机制可以通过各种方式实现。在一种变体中,可以通过可编程条款的可编程逻辑来实施法律逻辑。例如,数据驱动合同的(多个)创建者可以将可编程条款的可编程逻辑设置为从一个或多个外部管理源(例如,经由API、法律逻辑引擎等)拉出数据或信息。在另一种变体中,合同管理平台可以促进用于指定法律逻辑的更易访问的机制。在此版本中,更新可以更加无缝地应用于平台上的所有合同。例如,合同管理平台可以提供模块化组件,如果所述模块化组件在可编程条款内使用,则在可编程条款存在于合同账户中(例如,针对相关当事人以及可选地在其他用户账户的其他合同中)时,当法律或法规发生变化时,所述模块化组件将自动(在具有或不具有当事人签名的情况下)更新所述可编程条款。法律参考可以用于导入和更新数据驱动合同的适当部分。类似地,第一数据驱动合同的部分可以在第二数据驱动合同中得到参考。
[0119] 3.7外部资源接口
[0120] 类似地,可编程条款的方面可以导致外部资源的更新。例如,当条款的状态改变时,可以通过合同(例如,经由API或其他适当的方法或手段)更新外部第三方服务。在另一示例中,可以在数据驱动合同中的价格/值改变时更新会计和/或发票系统。外部数据的改变还可以自动引起将新条款或其他对象添加到合同中、被编辑或从合同中移除,包括改变合同的当事人(约务更替)。一个条款的改变可能引起其他条款或对象根据预定关系的改变。
[0121] 另外或可替代地,可编程条款可以包括如图2所示的资源接口,所述资源接口用于参考或链接至服务或计算资源。资源可以是外部服务、设备、BDL、API、网络、系统、应用、网络连接设备(例如,IoT传感器)或其他适当的资源。可替代地,资源可以是数据驱动合同的另一个可编程条款或组件。资源接口可以是数据输入,所述数据输入可以获取、检索或以其他方式接收外部数据。外部数据可以是来自(多个)BDL、(多个)所连接条款、网络连接设备(例如,IoT/边缘计算设备)、第三方服务或应用、软件平台或任何合适的数据源的数据(例如,事务)。可以经由API、通知服务、应用层协议请求-响应事务(例如,基于HTTP的请求)访问或者以任何合适的方式访问数据源。TLSnotary(或密码证明机制的类似形式)可以用于验证到数据驱动合同的数据输入。可以记录数据输入,以便提供对条款的规则和条件的符合性的验证。在一种变体中,数据可以被记录并安全存储在平台或外部数据仓储系统的可信数据库中。这种可信数据存储对于特别大的数据集可能是有用的。在另一种变体中,可以将数据记录到BDL,这样可以减少对实体信任的依赖。例如,可以将数据作为事务导出在BDL上。
[0122] 另外,资源接口可以是输出,其中,数据或指令可以传输至另一个资源。输出数据和/或指令可以传输至网络连接设备,经由API(例如,会计服务、付款服务、分析服务等)、BDL、数据库和/或任何合适的资源传输至第三方服务。例如,如果定价改变(例如,响应于交付条款或另一条款的改变),则确定付款的条款可以更新会计软件(例如,经由API)和/或可以经由付款服务发送付款(例如,见图15)。所述系统和方法可以利用基于自动更新和执行数据驱动合同来解决自动付款或其他动作的顾虑的各种方式,包括通过使用手动状态更新签名、可编程状态更新签名和使用状态转换系统。
[0123] 另外,资源接口可以将第一条款连接至至少第二条款。这种连接性可以实现如在静态的传统合同中可能完成的对其他条款的自然语言参考,而且还使一个条款的改变能够基于另一个条款的改变可能实时地自动更新和/或触发根据所述逻辑的操作。还可以使用连接至同一外部资源使得每个条款都响应于来自所述资源的新数据而更新的一组单独条款来有效地实现实时连接条款。
[0124] 可编程条款中的每一个都可以单独配置有不同的资源接口(例如,图3所示的各种数据输入和/或输出)、可配置组件和/或特性。另外,数据驱动合同可以配置有任何合适的一组条款类型。在数据驱动合同中的一组条款内,可编程条款的子集可以与合同相关联地实施,并且可编程条款的第二子集可以提供其他功能(例如,IoT设备整合、API整合、自我管理功能、条款间功能和/或其他类型的功能)。另外,数据驱动合同可以包括静态或自然语言条款。
[0125] 3.8用例
[0126] 可编程条款可用于如上所述的各种用例。在图4所示的一个示例中,可以在货物的供应商与买方之间建立数据驱动合同。作为第一示例性可编程条款,定价条款可以响应于交付条件(例如,交付日期、通过启用IoT的传感器测量的运输容器中的振动、温度和湿度)或设备故障率/性能而进行调整。作为第二示例性可编程条款,交付或拒绝通知基于有关地理位置和运输条件(例如,温度、湿度等)的数据更新买方;所述地理位置和运输条件可以是第一条款的输入。作为第三示例性可编程条款,质保条款可以基于设备性能数据进行调整。在又另一示例性可编程条款中,供应商存货需求可以基于之前的需求预测、库存成本或装运时间进行调整。可编程条款可用于各种各样的应用。
[0127] 在另一示例中,数据驱动合同可以应用于质保协议。如图5的示例性表示所示,数据驱动合同可以通过可以用于定制数据驱动合同的条件语句来提出交付货物的合同义务。这种用户接口是一种可选的实施方式,并且不旨在限制所述系统和方法。在此示例中,如果从第三方购买的货物储存在不符合行业方针中规定的标准或不符合质量条款,则可以根据对价条款中规定的规则减少(例如,减少5%)根据合同中的定价条款应付的对价,或者合同可以根据对方当事人的选择终止。
[0128] 另一示例可以是用于IT基础设施的服务水平协议(SLA)。应用健康数据和/或服务器正常运行时间数据可以用于评估对‘履行要求’条款的符合性。在发生违反履行要求的情况下,这可以更新第二‘服务信用’条款以发出折扣/信用。这反过来可以由基于逻辑对根据合同应付的价格应用信用的第三定价条款使用。
[0129] 又另一示例可以是雇佣合同或其中第一条款使用有关工作小时的数据(例如,来自时间跟踪应用/服务或设备)来计算工人根据合同的应付报酬的服务合同。然后,来自合同的数据可以经由API推送至工资单系统,并且合同管理系统的用户可以自动化或触发付款。
[0130] 4.合同管理平台和合同创建
[0131] 如图1A和图1B所示,用于创建具有可编程条款的数据驱动合同的系统可以包括合同管理平台,所述合同管理平台被配置成创建和管理数据驱动合同。所述系统可以促进数据驱动合同的形成和/或合同的履行管理。另外,所述系统可以处理合同生命周期的其他部分,包括重新谈判和修正和/或终止合同。所述系统可以用于使合同能够变为至少部分自主的或自我管理的,并且所述系统可以促进创建和操作具有数据驱动的且动态的条款和条件的具有法律效力的合同。所述系统可以用于以类似于业务过程管理系统的方式至少部分地使业务决策、工作流程和其他过程自动化。动态合同条款和条件可以与多个数据源、软件应用、设备、业务流程管理系统和/或其他系统整合。另外,所述系统可以用于提供用于利用缔约当事人与其他实体之间的数据驱动合同协议的更易于访问的接口。
[0132] 如图20所示,用于数据驱动合同的系统可以用于促进数据驱动合同跨系统栈的不同层的交互:数据层、合同层和事务层。数据层可以包括来自如内部来源、外部来源、BDL等各种来源的数据或函数调用、当事人发起的函数调用或状态更新等。合同层可以管理数据驱动合同的形成和执行以及与数据层和事务的交互。事务层可以用于管理与BDL系统、BDL脚本、API等的事务。
[0133] 优选实施例的合同管理平台充当用于创建、管理和启用数据驱动合同的系统。合同管理平台优选地是多租户托管平台。替代性实施方式可以是具有促进用户接口交互的客户端应用的对等计算基础设施。在另一版本中,合同管理平台可以是监督、管理用于执行数据驱动合同的对等联网解决方案或与其接口连接的云托管平台。合同管理平台可以包括账户系统,使得各个当事人可以创建和管理数据驱动合同。优选地,外部身份系统可以用于验证用户(例如,BDL/去中心化应用或App)或集中式系统(例如,专业社交网络、单点登录系统、2FA系统等)。可替代地,合同管理平台可以是本地(on-premise)或私有云计算系统。例如,企业可以将合同管理平台实施为供内部使用。在另一种变体中,合同管理平台可以是由单个实体使用和操作的应用或工具。在又另一种变体中,合同管理平台和/或合同管理平台的部分可以通过分布式计算架构或对等基础设施(例如,上文提到的星际文件系统和/或服务器/VM架构)来实施。合同管理平台可以包括用户接口。可替代地,合同管理平台可以包括API或通过API来实施。在一些变体中,合同管理平台可以是可选的。
[0134] 账户持有者优选地发起数据驱动合同的创建。可以邀请和允许其他缔约当事人、参与者和相关利益相关者进行编辑/谈判、评论、签署/执行、查看合同或以其他方式与合同交互。合同管理平台优选地包括用于创建合同的合同编辑器接口以及用于处理、监测或强制执行数据驱动合同的有效使用的合同执行系统。可以实施许可以管理编辑合同及其配置的权利。在优选实施例中,使用版本控制系统来形成合同。
[0135] 如上所述,优选实施例的合同编辑器用于创建数据驱动合同。合同编辑器可以利用各种用户接口方式。合同编辑器的一个实施例是图形用户接口,所述图形用户接口可以利用拖放接口来构建数据驱动合同。图形和/或程序接口可以使用户能够通过以下方式来创建合同:从合同和/或条款模板库中进行选择、编辑合同模板或通过选择条款和其他对象并且使用如图6所示的示例等接口来连接和配置所述条款和其他对象来从头开始创建合同。
[0136] 合同编辑器接口可以包括可以选择并且在合同内使用的一组可选择的合同和/或条款模板、组件、样本或模式。另外,可以在不使用模板的情况下手动创建条款,包括通过使用NLP处理。在一种变体中,用户(例如,合同管理者或法律专业人员)可以使用自然语言工具来起草具有整合的可编程条款功能的文档(例如,通过使用可编程组件或通过将可编程条款与自然语言条款整合)。在另一种变体中,精通编程的用户可以使用编程接口工具(例如,IDE)来建立合同。模板可以由任何合适的接口使用。模板要素可以由平台提供,在市场或交易所、外部平台或代码托管系统(例如,Github)或所创建的账户内提供。
[0137] 可编程条款的数据对象或模型通常将包括一组特性和/或配置选项。用户可以通过用户接口设置各种属性。作为拖放接口的替代方案,图形用户接口可以可替代地使用输入表、文本编辑器或其他合适形式的用户接口。可以通过基于浏览器的应用或网站、本机应用、API或任何合适的应用来访问图形用户接口。
[0138] 文本编辑器用户接口可以包括自然语言处理、脚本语言语法或用于结合可编程条款组件的其他基于文本的指令。在一种变体中,可以用书面语言来构建条款。可以通过使用用于调用功能的特定语法标记来整合可编程组件。例如,斜杠标记可以触发显示各种可编程条款功能。用户可以键入斜杠,然后键入用于设置数据输入的数据输入模块的名称,添加可编程组件或以其他方式定义可编程条款功能。可编程条款功能可以涉及指定条件语句、导入来自特定来源的数据、将数据导出至特定来源、执行计算或例程、配置可编程条款或使用任何合适的可编程条款特征。
[0139] 另外,用户接口可以支持程序接口,所述程序接口可以使用预定义编程语法来定义、构建合同或条款或以其他方式与其交互。程序接口可以利用脚本解释、程序语言解释、自然语言处理、标记语言解释和/或任何合适的程序机制。程序接口可以是命令行接口、程序文档处理接口(例如,IDE)或API。外部服务、应用或设备可以通过使用程序接口来生成、实例化和初始化合同的执行管理。另外,用户可以在编辑或构建合同时使用程序接口。
[0140] 在一种变体中,可以在平台内使用一组不同类型的接口。此外,可以使用多于一种类型的接口来创建单个数据驱动合同。例如,可以使用程序接口来建立初始数据驱动合同,但是管理员随后可以使用图形用户接口来审阅和编辑可编程条款的子集。
[0141] 合同编辑器接口可以包括实体批准系统,所述实体批准系统可以用于管理对一组条款和/或合同的版本化、谈判和最终协议。可以从相关当事人收集密码或其他数字签名、缩写和信息并将其记录为电子签名。在批准一个或多个条款后,合同的部分可以作为事务提交至一个或多个分布式账本或在平台内的版本控制。另外,实体批准系统可以促进重新谈判或修正。
[0142] 合同管理平台还可以包括用于查看采用源代码、自然语言或混合的合同的系统。合同可以采用任何合适的方式显示并且可以通过图形来增强以显示与合同有关的数据。例如,上/下‘指示器(ticker)’箭头和趋势线可以用于显示值(例如,价格)的波动。合同还可以利用标记语言来进行格式化,标记可以由合同管理平台进行无选项定义、由用于在合同编辑器中设置或者可替代地以编程方式定义(例如,通过使用IDE)。
[0143] 在一些实施例中,平台可以唯一地用于创建数据驱动合同或用于执行现有数据驱动合同。优选地,平台促进合同的创建、编辑和执行。另外,平台可以包括用于强制实施或以其他方式处理数据驱动合同的合同执行系统。合同执行系统促进收集数据、验证可编程条款业务逻辑、更新法律合同及其条款、存储数据、导出数据以及与外部资源/服务通信。合同执行系统可以包括平台服务和/或BDL接口。平台服务可用于在可信计算架构内,如在云托管计算平台或分布式/P2P架构内处理和管理可编程条款或数据驱动合同。BDL接口可以向BDL提交信息事务和/或逻辑执行。平台服务和BDL接口可以适用于不同的场景,这取决于数据量、计算复杂度、当事人信任场景和/或其他方面。平台服务可以尤其适用于依赖于大数据量或计算密集型任务的合同。
[0144] BDL接口(例如,分布式账本接口或区块链接口)尤其可用于使信任去中心化和确保数据验证。合同管理平台提供用于与分布式计算系统交互和接口连接的抽象层。在另一种变体中,合同或条款的方面可以转换为合同的某个部分的密码契据。例如,可以将商定条款的散列或数据块的散列提交至BDL作为对状态的验证,而不暴露敏感信息。合同执行系统可以是混合合同执行系统,其中,可编程条款的子集在平台服务内处理,并且可编程条款的第二子集利用分布式账本。任何给定的合同都可以使用多个BDL实例和/或协议。
[0145] 条款的全部或部分可以自动配置为由平台服务或BDL执行。在一种变体中,将BDL用于执行可以是合同编辑器接口内的用户可配置选项。
[0146] 另外,所述系统可以包括平台账户入口,所述平台账户入口用于使管理员和相关当事人能够审阅和管理一个或多个数据驱动合同。平台账户入口可以提供合同生命周期管理、合同分析和其他管理功能。例如,管理员可以能够基于可质保编程条款的状态、直接来自合同的某些度量(例如,价格、湿度、温度、距离交付所剩时间等)的变化来查询有效合同。这同样适用于历史数据集(例如,未生效合同)。状态转换系统可以用于提供这种数据。
[0147] 平台还可以基于合同与输入/输出数据源和资源之间的交互来提供给定合同的状态的看板视图(见图16)。例如,合同看板可以显示货物的地理位置、到价格条款的输入和对价格的影响以及条款之间的关系,例如,一个条款的状态变化对其他条款的影响。优选地,这可以显示为由以下各项构成的GUI看板:表示每个条款的数据(例如,温度(装运条款)、地理位置(交付条款)、会计系统上的发票价值(价格条款)的各种‘小部件’、曲线图、图表和图形。GUI看板还可以用于提供合同(例如,所有有效合同、与给定对方当事人的有效合同、具有惩罚的合同、延迟合同、已完成的合同等)的定义语料库的汇总数据。用户可以通过合同管理平台设置用于定义语料库的参数。
[0148] 合同管理平台优选地还包括通知引擎,所述通知引擎向用户推送与合同的状态变化(例如,价格变化)、合同事件的发生(例如,违反条款和条件)以及其他事件(例如,发票更新)有关的通知。通知可以在合同管理平台上本机地(例如,在通知馈送中和/或经由‘弹出’消息)提供、可以经由webhooks订阅、可以经由电子邮件或其他任何合适的方式推送(例如,经由API)至外部系统(例如,通信平台、管理平台、互联网中继聊天(IRC)应用)。在任何给定的实施方式中可以使用多于一种方式。
[0149] 5.复杂事件处理合同执行
[0150] 如图8所示,所述系统的合同事件处理实施例可以包括基于事件流处理(ESP)的系统,所述基于ESP的系统被配置成向数据驱动合同提供数据、执行和管理数据驱动合同。基于ESP的实施例优选地包括事件流版本化系统、合同状态版本化系统和对合同规则进行操作的事件处理引擎。
[0151] 合同事件处理实施例优选地与本文描述的数据驱动合同和合同管理平台组合使用。可替代地或另外地,合同事件处理系统可以独立地用作处理数据驱动合同、BDL脚本或其他形式的可计算合同的方式。可以通过任何合适的过程或系统生成或形成其他形式的可计算合同。
[0152] ESP实施例用于在事件驱动的信息系统空间中利用计算技术来管理数据驱动合同的执行。在ESP中,事件优选地是原子的,其中,原子事件可以被表征为原子状态或状态转换。例如,来自边缘计算设备的温度传感器的读数或温度变化、事务通知和其他事件可以是潜在的原子事件。
[0153] 基于ESP的实施例优选地利用复杂事件处理(CEP),所述CEP可以使系统能够将实时智能应用于流数据。CEP可以通过识别如(但不限于)聚合、派生、模式、抽象和/或关系(例如,因果关系)等原子事件的复杂序列来增强ESP。CEP系统可以通过对传入的原子数据流执行连续查询来运行以检测预定义的复杂事件,并且在检测到时通常根据预定义规则执行一系列给定动作和操作。在优选实施例中,预定义的合同规则源于嵌入在可编程条款中的逻辑并且驱动CEP系统的查询、动作和操作。在ESP实施例中,CEP引擎可以处理来自IoT设备、API、BDL、第三方服务/系统或其他合适来源的数据输入。CEP引擎可以包括事件接收器、事件处理器和事件报告器,并对事件流进行操作。事件报告器接收进入CEP引擎的事件。需要不同的事件接收器类型来接收不同格式的事件。事件流可以是连接至事件的原子事件流。事件处理器基于合同逻辑通过从事件流管理器获取一组事件流来管理处理事件,并且处理和触发返回至事件流管理器的不同事件流上的新事件。事件报告器向合同、状态转换系统、外部API、BDL和系统报告事件并将数据存储至数据库以供将来分析。在优选实施例中,事件报告给合同,所述合同进而更新状态转换系统和上述资源。
[0154] 在一种变体中,可以利用语义CEP来进一步增强数据驱动合同内的CEP功能。例如,在语义CEP的情况下,事件数据可以变成宣告式知识,同时符合基础正式语义。作为另一示例性益处,语义CEP可以用于改进对各种情况和状态的机器理解。作为另一示例性益处,语义CEP可以促进事件的宣告式处理和对情况的反应。作为另一示例性益处,语义CEP可以改进对事件之间关系的理解。
[0155] 在第一CEP实施方式中,CEP引擎可以与可编程条款中的合同规则完全整合,如图13所示。可以或可以不在CEP引擎内执行操作。在第二替代性实施方式中,嵌入在CEP引擎的合同规则中的逻辑可以作用于外部系统,如图14所示。外部系统优选地驱动相关操作。
[0156] 事件流版本化系统充当数据输入记录,所述数据输入记录可以由数据驱动合同使用。到合同的数据输入可以包括来自以下各项的数据:API、HTTP客户端、来自BDL的数据、数据库、事件存储设备、BDL‘预言(oracles)’、BDL脚本、边缘计算设备、分析服务、ERP、IMS、SCM和CRM系统、IoT/边缘计算设备和/或任何合适的数据源。合同使用的数据输入源优选地在数据驱动合同的创建和管理期间定义。
[0157] 事件流版本化系统可以包括用于滤除输入数据的事件过滤器。一个示例性场景用例可能针对合同农业协议。温度和作物产量可以是履行可编程条款的输入,而重量可以用于更改价格条款中的价格。重量条款和价格条款可以与性能条款有关,所述性能条款与终止条款相关。事件过滤器优选地减少事件处理引擎的计算负荷。在第一变体中,事件过滤器可以为版本化前过滤器。版本化前过滤器在将数据输入提交至事件流版本化系统的数据存储设备之前滤出数据输入。在第二变体中,事件过滤器可以是版本化后过滤器。版本化后过滤器过滤提交至事件流版本化系统的数据存储设备的数据输入,但在递送至事件处理引擎之前将数据输入移除。在这种变体中,保持了数据输入的记录,但丢弃了数据输入的子集以减少事件处理引擎的计算负荷。预过滤器和后过滤器可以单独使用或组合使用。在用户认为适当的情况下,可以使用其他过滤器。
[0158] 事件流版本化系统和合同状态转换系统可以一起操作以提供事件和合同状态的数据记录。所述系统使用事件和合同版本化系统来保持数据驱动合同如何执行的可验证记录。更具体地,存储作为事件流递送的数据输入,并且存储合同的状态和各个条款的变化。具有法律效力的合同通常将涉及多个利益不相互一致的当事人。因此,系统优选地提供可靠且可信的机制,即,合同以可信的方式执行。在合同或条款依赖于将不与另一当事人共享的数据时,这可能变得更为复杂,如上所述。
[0159] 这两个版本化系统优选地是通过密码保护的并且是可审计的。可以使用各种方式,但是类似于合同状态转换系统,事件流版本化系统使用默克尔树或优选地有向无环图(DAG),所述DAG包括具有连接对象的默克尔链路的内容寻址对象,如在图9和图10中示意性地示出的。如此,事件流版本化系统和合同状态版本化系统优选地是用于其相关联目的的不同数据存储解决方案,但是优选地共享类似的数据存储结构系统架构和方式。可替代地,不同的数据存储系统和方式可以用于事件流版本化系统和合同状态版本化系统。例如,事件流数据可以提交至BDL并且用作合同的输入。在给定的实施方式中可以使用多于一种方式。
[0160] 事件处理引擎用于摄取来自事件数据流和合同规则的数据输入并且生成输出。事件处理引擎的输出可以是合同状态的改变和/或在系统内采取的动作或与外部系统的动作(例如,通过API触发与第三方服务的操作)。优选地,事件处理引擎是CEP引擎。优选地,在CEP引擎的规则库中配置有一组合同规则。
[0161] 如果不是唯一地,则合同规则优选地主要源自合同和合同逻辑。主要合同规则优选地体现通常形成传统合同的基础的条款和条件、义务等。主要合同规则包括建立合同的当事人和范围假设、如当事人、事实陈述、定义、法律选择、冲突规则/协议的背景和结构规则。主要合同规则还源自协议当事人的具有法律效力的权利和义务。次要合同规则有助于确定数据驱动合同的主要规则和操作。次要合同规则可以包括一个条款的改变可以如何改变其他条款(或包含于其中的条款和条件)以及如何使用“变更规则”来改变合同规则、条款如何互连(例如,一个条款的状态/输出如何由另一个条款使用)。还可以使用其他类型的规则。
[0162] 合同规则优选地由如上所讨论的合同管理平台生成。合同规则可以由用户明确定义,但是合同规则可以自动生成。例如,条款模板可以使用用户接口来呈现,并且可以使用预定义的合同规则模板、基于到条款模板的用户输入来建立合同规则。
[0163] 合同规则优选地包括指定数据输入源的配置,所述数据输入源可以定义哪些事件流源与特定合同规则相关。合同规则可以取决于多个数据输入源/资源。
[0164] 另外,合同规则可以定义条件和逻辑。在一种变体中,合同规则可以是产生式/推断规则。推断规则可以表示类型‘如果(IF)条件则(THEN))’动作的行为,例如,“如果某一条件,则延长质保条款”。第二类型的合同规则可以是反应/事件条件动作规则。反应规则可以涉及检测传入事件并对其作出反应并且处理事件模式。例如,当货物装运晚于商定的时间表时,可以使用反应规则引擎来警告买方。不同的事件处理引擎可以包括用于处理这种规则的不同规则引擎。
[0165] 在一个用例中,一组合同规则可以来自具有动态条款和条件的数据驱动供应协议。规则管理系统将在事件处理引擎内管理供应协议的合同规则。包括规则引擎的规则中的一些将结合动态条款和条件,使得合同的状态将响应于数据而改变。例如,一个合同规则可以是合同的质保期响应于包括关于货物质量或性能的数据以及与关于类似货物性能的相关行业基准有关的数据的外部事件而从12个月延长到18个月。响应于关于事件的质量和行业性能的数据,质保期将增加至18个月。
[0166] 因此,事件处理引擎将改变合同的状态,并且系统可以启动对外部系统的动作和操作,所述动作和操作可以包括更新会计账本或跟踪质保期的当前状态的质保期管理系统。同一数据驱动供应协议可以具有调整质保期长度与关于性能/质量和行业基准的数据之间的关系的合同规则。例如,如果性能/质量和行业基准数据超过表明较高水平的不良绝对和相对性能的某些阈值,则合同规则可以将质保期从12个月延长到24个月。
[0167] 作为另一示例,供应协议中的可编程条款可以规定,如果碰撞传感器表明货物在运送至买方时已碰撞超过5次,则12个月的质保期延长6个月,但不管经过多少次碰撞,最长质保期限于24个月。这种可编程条款可能会像以下一样运行的合同规则:如果来自碰撞传感器的碰撞次数(COLLISION NUMBER)超过5次,则质保期延长6个月,除非如外部API表明的,自交货日期开始,质保期期满(WARRANTY EXPIRATION)已经24个月。
[0168] 使用合同规则引擎的另一潜在结果是用于合同履行、监测以及相关动作、操作和结果的算法运行。这种算法可以用于:形成合同(例如,使用所述系统和方法的其他当事人),包括添加当事人或替换现有当事人(转让或约务更替);响应于数据而确定开放条款(open terms)(“填空”),包括更新现有条款,如价格(定量)和文本(定性)(例如,响应于新的州立法而改变法律选择、改变货币、添加质保免责声明语言);确定何时采取动作(例如,发送通知、终止、寻找新的对方当事人);确定如何监测或分析对方当事人的履行(或状态);重新谈判包括现有算法在内的现有条款;和/或执行其他合适的计算或函数。
[0169] 在进行算法决策的示例中,如果供应商的货物严重缺陷并且低于定义的行业平均值/度量,则规则引擎中的算法可以确定将供应商替换为另一合格供应商。
[0170] 在一种变体中,合同规则定义规则引擎内的动作,使得事件处理引擎在内部执行所产生的动作,如图11所示。在此变体中,合同规则和由那些规则触发的动作全部整合到事件处理引擎中。合同规则不涵盖所执行的实际逻辑和所执行的动作,但可以在事件发生时将其委托给外部资源。在另一变体中,合同规则作用于合同规则外部的规则引擎,并且所述规则引擎驱动相关联的操作和动作,如图12所示。另外,所述系统和方法可以包括可以用于执行业务规则的业务规则管理系统。业务规则通常为可能不或仅间接地与合同规则相关或结合合同规则的公司政策、逻辑和决策的相对较高级陈述。业务规则还可以用于根据合同或通过使用合同数据来使用户动作自动化。例如,如果满足某些条件(例如,如果供应合同基于其履行情况处于可合法终止的状态并且产品的指定级别显示在IMS系统上),则可以使用业务规则来自动化合同终止。业务规则管理系统还可以对系统的数据和事件进行操作,而无需通过数据驱动合同进行定义。例如,对大宗事务给予折扣的业务规则本身不具有强制性。然而,所述规则还可能在供应协议的定价表中体现。当事人可以利用业务规则来定义可以与数据驱动合同的执行组合执行的业务逻辑。
[0171] 类似地,工作流程规则也可以是本身未在合同中定义的关于合同的自动操作。例如,在合同中的价格变化或发票由于交付完成而应根据合同支付的情况下,则用户的外部系统(例如,会计/发票系统)可以通过用户单方面将合同连接至这些系统来使用这一单,而不是在合同中指定。一个具体实施例可以涉及将合同输出数据推送至事件处理引擎,并且这被推送(例如,经由API)至如会计系统、ERP系统、数据库和任何其他合适的资源/系统/应用等外部系统。
[0172] 6.用于构建和执行数据驱动合同的方法
[0173] 如图7A所示,用于创建和执行具有可编程条款的数据驱动合同的方法可以包括:提供合同管理平台S100;构建具有一组可编程条款的数据驱动合同S200;以及执行数据驱动合同S300。
[0174] 所述方法可以用于使合同能够变为至少部分地(如果不是完全地)自主的或自我管理的,并且所述方法可以促进创建定义了表示动态合同条款和条件的文档的计算管理数据对象。所述方法的数据驱动合同并且更具体地可编程条款可以与多个数据源、软件应用、设备、业务流程管理系统、BDL系统和/或其他系统整合。利用可编程条款与BDL系统之间的整合,所述方法使实现数据驱动合同的合同生命周期管理解决方案能够管理包括与BDL脚本和/或其他BDL应用的整合的具有法律效力的合同。另外地或可替代地,所述方法可以使数据驱动合同并且更具体地可编程条款能够与互联网连接设备和服务(例如,IoT设备或基于API的数据平台)整合,这可以实现通过数据驱动合同定义的操作的某种程度的自动化并且还实现通过数据驱动合同管理的具有法律效力的协议的动态状态。另外,所述方法可以用于提供用于利用一组实体之间的数据驱动合同协议的更易于访问的接口。更一般地,所述方法可以实现利用本文所述的能力和操作的至少一个子集的数据驱动合同的定制形成和管理。
[0175] 包括提供合同管理平台的框S100用于操作应用、服务和/或计算平台以至少部分地托管、管理和/或以其他方式促进与数据驱动合同相关的操作。优选地,通过合同管理平台、分别通过S200和S300构建和/或执行数据驱动合同。合同管理平台优选地为用户交互提供用户或程序接口。数据驱动合同可以是动态的并且应当对事件有实质性的响应。因此,提供合同管理平台可以包括:在数据驱动合同的管理时连续地或周期性地操作计算资源。
[0176] 合同管理平台可以基本上类似于上文所述的合同管理平台。在一种实施方式中,合同管理平台可以在云分布式计算平台上实施。可替代地,合同管理平台可以通过托管或本地计算平台来实施。合同管理平台的替代性实施方式可以包括具有促进用户接口交互的客户端应用的对等计算基础设施。作为示例,合同管理平台可以使用HTTP以集中式方式或以分布式方式(例如,使用IPFS)或组合托管。在优选实施方式中,合同管理平台可通过web应用和/或本机应用访问。
[0177] 另外,提供合同管理平台S100可以包括:提供至少一个用户接口S110,如图7B所示。可以提供用户接口以供在形成、执行、重新谈判和修正或终止期间进行用户输入或审阅。具体地,合同管理平台提供合同编辑器接口,其中,提供了用于将在框S200中促进的构建、编辑或以其他方式配置数据驱动合同的多个接口要素。提供这种合同编辑器接口可以包括呈现条款模板,所述条款模板可以包括可编程条款模板以及自然语言条款模板。另外,提供合同编辑器接口可以包括可编程条款编辑器,所述可编程条款编辑器可以促进配置可编程逻辑、配置法律逻辑、配置外部整合、配置所连接条款整合和/或设置可编程条款的其他合适方面。合同编辑器接口可以是图形用户接口、文本编辑器接口、程序接口或任何合适类型的接口。提供审阅接口可以用于促进监测数据驱动合同的形成后状态。类似地,这可以作为图形用户接口或程序API提供。审阅接口可以充当用于审阅数据驱动合同的状态的看板。另外,可以探索数据驱动合同的历史和其他方面。另外,审阅接口可以促进审阅多个合同。例如,业务管理员可以能够访问审阅接口以查看数百个有效合同的概要、任何变更的通知、条款的当前状态以及其他合适的细节。
[0178] 提供合同管理平台S100可以包括:管理合同管理平台的账户S120,如图7B所示。账户可以是个人账户、企业账户和/或任何合适类型的账户。在多个独立账户可以如通过使单独的账户配置独立来独立地使用所述平台的意义上,合同管理平台优选地是多租户的。替代性实施方式可以将合同管理平台作为单个租户或有限账户实施方式来托管和操作。合同管理平台的账户可以由与数据驱动合同交互的实体使用。账户可以由数据驱动合同的设计者或编辑者(例如,律师)、由与数据驱动合同接口连接或与其执行交互的开发者、由数据驱动合同中的相关当事人和/或其他合适的实体使用。
[0179] 提供合同管理平台S100可以包括:管理数据驱动合同的资源S130,如图7B所示,这用于管理在履行时使用的计算和数据资源。作为一项挑战,多个数据驱动合同将共享计算资源。管理数据驱动合同的资源可以促进用于形成和执行数据驱动合同的平台的扩展性和可靠性。优选地,连续地或至少周期性地维护数据驱动合同。如本文所述,合同管理平台可以与各种输入和输出整合,并且框S100可以包括维护外部编程接口,维护外部编程接口可以包括管理到网络连接设备(例如,IoT设备、传感器网络和/或其他合适的设备)以及启用API的数据平台(例如,用于如数据记录等各种功能的web平台、发票工具、付款工具或任何合适类型的平台)的数据连接。
[0180] 用于处理和执行数据驱动合同的处理引擎是被管理的附加资源。在一种实施方式中,可以根据处理负荷将处理引擎服务实例自动缩放为执行有效数据驱动合同。在CEP变体中,处理引擎可以是CEP引擎。
[0181] 另外,合同管理平台可以包括维护在合同管理平台上有效的数据驱动合同的连续操作S140,如图7B所示。这可以包括:维护在确保在合同管理平台上运行的数据驱动合同在系统的各个方面出现故障或性能问题期间经历最小的停机时间时使用的高速缓存服务、排队服务和备份服务。高速缓存可以用作临时存储解决方案。例如,如果无法根据数据驱动合同立即处理数据,则流入数据高速缓存可以临时存储流入数据。排队服务可以用于平衡内部服务的负荷。例如,如果达到特定BDL服务的速率限制,则可以初始地将发送至外部区块链的输出事务进行排队,并且然后使其出队以分配通过BDL服务协议执行的任务。
[0182] 另外,提供合同管理平台S100可以包括:管理数据驱动合同的数据模型记录S150,如图7B所示。如上所述,数据驱动合同可以包括一组可编程条款以及可选地一组自然语言条款。可编程条款可以包括可编程逻辑、法律逻辑、外部整合、条款整合和/或其他组件。优选地,通过合同管理平台的各种数据存储解决方案来对数据驱动合同的这些要素进行建模、存储和管理。除了存储当前状态之外,还可以管理与数据驱动合同相关的过去状态、输入和输出的可审计记录,使得可以全面审阅和验证数据驱动合同的历史。优选地,可以在跟踪合同历史时采用如上所述的合同版本化系统和/或事件流版本化系统(具有或不具有各种BDL实施方式,例如以存储数据输入和输出并且执行事务)。
[0183] 另外,提供合同管理平台可以包括:提供数据驱动合同分析的看板。分析可以是实时的。分析可以是在合同级别或多合同/企业级别上进行。数据驱动合同分析的看板可以呈现数据、状态更新以及与一个或多个数据驱动合同相关的其他信息。
[0184] 包括构建具有一组可编程条款的数据驱动合同的框S200用于建立或定制具有本文所述功能的数据驱动合同。如上所述,数据驱动合同可以使条款能够变为动态的并且能够与各种服务、应用、系统和/或网络连接设备、BDL、法律参考、其他条款和/或其他合适的整合接口连接。
[0185] 构建数据驱动合同可以通过如框S100中提供的合同管理平台等合同管理平台的图形用户接口或程序接口来实现。可以提供各种形式的图形用户接口以针对不同类型的用户。在一种变体中,用户可以是熟练的专业人员,如法律专家(例如,律师)和/或开发者。这种熟练的专业人员可以构建高度定制的数据驱动合同。在其他变体中,部分数据驱动的合同或模板数据驱动的合同可以提供仅具有用户定制的特定方面的标准起始点。模板数据驱动的合同对不具有法律或编程技能的用户来说可能更容易使用。例如,公司设置多个标准合同,然后销售人员、客户或任何合适的用户可以进入并设置一些基本特性以设置定制的数据驱动合同。如果此示例标准合同为标准运输合同,则其可能要求用户定义变量(例如,价格、日期、数量等)、添加认证信息或其他信息以整合用于一个或多个可编程条款的货物跟踪数据输入。同样,模板可编程条款可以用于使用户能够形成具有数据驱动或可计算功能的合同。模板可编程条款可以通过合同管理平台在条款库中获得。条款库优选地为可过滤的条款库;所述可过滤的条款库可以采用自然语言或可编程形式。模板可编程条款可以添加到现有合同中或用于重新建立合同。模板可编程条款可以配置有变量和整合,并且可以编辑或配置逻辑。可编程条款还可以由模板化逻辑的部分(例如,子条款)构成。这种子条款可以类似于自然语言合同中的句子或句子片段
[0186] 程序接口可由服务、应用或用户使用。程序接口可以实现各种外部实体开发专的编辑工具。特定公司或用户可以针对其特定需求而开发专门的编辑工具。在另一种变体中,数据驱动合同可以由网络连接服务或应用自动生成。
[0187] 构建数据驱动合同优选地包括:组装一组条款S210,如图7C所示。优选地,条款的至少一个子集为可编程条款。条款的另一子集可以是自然语言条款。作为一个示例,数据驱动合同可以是包括多个自然语言条款和至少一个可编程条款的数据对象定义文档。在另一示例中,数据驱动合同可以是仅包括可编程条款的数据对象定义文档。虽然优选实施例可以包括条款之间明显的分离,但是替代性方式可以使数据驱动合同能够被构造为自包含文档,其中,可编程条款的功能被整合到数据驱动合同文档的主体中。在这种自包含变体中,自然语言条款和可编程条款可以可替代地描述为自然语言合同内容和可编程合同内容。组装一组条款可以包括:组织和构造条款,以便可以在文档表示中对所述条款进行排序。另外,组装所述一组条款将包括:配置可编程条款S220。优选地,每个可编程条款将需要某种形式的配置。在一些情况下,如下文讨论的可编程条款模板可以包括预设或默认配置。另外,组装所述一组条款可以包括:指定自然语言条款的自然语言内容以及将自然语言条款添加到数据驱动合同中。但是,通常通过可编程条款的如下配置来进行所述组装:可以建立数据驱动合同的动态/‘自我管理’、数据驱动和整合特征。
[0188] 可编程条款可以采用各种方式配置。配置可编程条款可以包括:接收可编程条款的规范S212和/或将所选可编程条款模板添加到数据驱动合同并且配置可编程条款模板的特性S214,如图7D所示。如上文所讨论的,可以使用各种接口介质。S212和S214两种变体均可以用于配置可编程逻辑、配置法律逻辑、映射可编程条款的至少一个整合和/或实现可编程条款的其他潜在能力。
[0189] 包括接收可编程条款的规范的框S212用于使可编程条款的功能通过可解释数据表示来表征。更一般地,将接收在数据驱动合同中使用的一组可编程条款的规范。如上文所讨论的,可以使用各种编程范例或语言来编写、形成或表达可编程条款和相关联的可编程逻辑。用于指定可编程条款的潜在编程范例或语言可以包括面向对象语言、元编程、函数式语言、程序语言、宣告式语言、自然语言和/或任何合适的可解释格式。
[0190] 包括将所选可编程条款模板添加到数据驱动合同并配置可编程条款模板的特性的框S214用于使用部分配置的可编程条款来提供然后可以针对特定实例定制的功能框架。可以在数据驱动合同内实例化由各种部分或完全配置的可编程条款对象构成的库。在图形用户接口中,框S214可以通过拖放接口或任何合适的WYSIWYG型接口来实现。在程序接口中,框S214可以包括:接收可编程条款定义文件,所述可编程条款定义文件可以被上传、通过API传输或以任何合适的方式提供。可编程条款定义文件可以是脚本、应用代码、标记语言文档、配置文件和/或可以用于至少部分地定义可编程条款实例的方面的任何合适的机器可读数据对象。可编程条款可以具有各种可配置的资源接口和/或特性。资源接口和特性可以通过接口定制。
[0191] 配置可编程条款可以包括各种子步骤,这取决于可编程条款的特定实例的功能需求,并且可以包括如以下等过程:配置可编程逻辑S222;配置法律逻辑S224;映射可编程条款的至少一个整合S226;以及配置可编程条款的自然语言S228,如图7D所示。
[0192] 包括配置可编程逻辑的框S222用于定义可编程条款的执行过程。如上文所讨论的,可以使用各种编程范例或语言来编写、形成或表达可编程条款和相关联的可编程逻辑。用于指定可编程条款的潜在编程范例或语言可以包括面向对象语言、元编程、函数式语言、程序语言、宣告式语言、自然语言和/或任何合适的可解释格式。在一些实施方式中,可编程逻辑另外可以用于配置其他方面,如合同规则、法律逻辑、外部整合、内部整合和/或其他合适的方面。可编程逻辑另外可以是其他机制,另外可以用于配置法律逻辑S224。可编程条款另外可以包括可以配置的自然语言内容。
[0193] 除了可编程逻辑之外,还可以指定法律逻辑。包括配置法律逻辑的框S224用于实现法律参考的动态结合,如上所述。法律逻辑可以是被配置的可编程逻辑的一部分,但可替代地可以不同。可替代地或另外地,法律逻辑可以应用于实现其他基于法律的特征。在一种实施方式中,可以将法律参考存储和保持在合同管理平台内,但是法律参考可替代地可以是外部资源。当法律参考的语言变化(例如,法规限度变化)时,可以从包括对所述资源的法律参考的可编程条款推送或拉出所述变化。在一些场景中,可以通过法律参考的自然语言提取数据或信息。在其他场景中,可以提取法律参考的自然语言内容。在其他变体中,法律逻辑可以是在法律参考中定义的特定特性。例如,可以结合指定特定值的政策、法规、法令、判例法或其他资源,并将其转换为可编程条款可用的变量。
[0194] 包括映射可编程条款的至少一个整合的框S226用于建立可编程条款与其他资源之间的关系。映射(或“连接”)可编程条款的整合可以包括:建立(多个)输入和/或(多个)输出。输入整合优选地是可以通过其接收外部数据或通信的通道并且应用于处理可编程条款。输出整合可以为可以通过其从合同管理平台触发数据和/或通信的通道。整合优选地在可编程逻辑内使用。可编程逻辑可以被配置成更新条款的规则或条件。可编程逻辑可以被配置成执行一个或多个动作,如通过输出整合来更新资源。
[0195] 整合可以是外部整合,其中,外部整合与合同管理平台外部的资源建立连接。外部整合可以包括到以下各项的连接:网络连接设备(例如,IoT设备)、边缘计算设备、基于API的平台、BDL系统、ESP/CEP系统、数据库和/或通过通信网络连接至合同和/或合同管理平台的任何合适的计算资源。可以通过API整合、回调URI、数据流、消息传送/通信协议和/或任何合适的程序接口来促进到外部数据源的连接。作为一个具体方面,整合可以与一个或多个BDL系统建立输入和/或输出连接。在一个示例中,来自IoT设备的数据可以附加至BDL,并且与BDL的外部整合可以访问此数据作为到可编程条款的输入。
[0196] 可替代地,整合可以是内部整合。例如,整合可以是将条款与另一个条款连接的合同/条款整合。通过合同整合,条款可以能够从其他条款中提取数据(例如,通过输入合同整合)和/或更新另一个条款的特性(例如,输出合同整合)和/或通过参考多于一个条款共用的对象。整合的另一示例可以是连接另一个合同中的可编程条款。例如,定价可编程条款对象可以是到另一个可编程条款的输入或由另一个可编程条款参考。又另一种类型的内部整合可以是平台整合。一些数据输入可以由当事人通过如图形用户接口(例如,web应用)或程序接口(例如,API)等平台接口来提供。以此方式,当事人可以更新信息或触发动作(例如,对程序条款进行函数调用),所述动作然后导致状态更新。例如,定价条款可以使用企业的收货地址。当事人可以轻松地在图形用户接口中更新企业的收货地址并且定价条款自动更新。可编程可以包括任何合适数量的整合和/或整合的任何合适组合。
[0197] 可以包括配置可编程条款的自然语言的框S228。可编程条款可以包括自然语言组件。在一种实施方式中,可以使用模板语言来将可编程条款或数据驱动合同的动态变量中的一些结合到可编程条款的自然语言部分的内容中。模板语言可以使用特定语法或标签来调用不同的可编程条款特征。在一种变体中,文字处理器或文档编辑器可以实现插入或编辑可编程条款。
[0198] 在一种变体中,框S200可以包括促进对合同的谈判S230。各个参与者可以参与编辑、批准和/或签署合同的方面。在合同最终确定并准备就绪之前,可以通过电子(包括密码)或物理签名和/或草签来批准各个方面。促进对合同的谈判可以包括:接收和接受数据驱动合同的相关当事人进行的执行授权,以及将数据驱动合同正式化为合同协议。作为正式化协议的一部分,电子签名优选地应用于数据驱动合同的表示。由于签名应用于数据驱动合同,因此数据驱动合同的定义的动态性质和整合同样是商定的方面。因为商定了动态性,所以数据驱动合同可以显示其实时状态。电子签名可以符合适当地区的电子签名标准,例如可以使用数字签名作为数据驱动合同的真实性、数据完整性和不可否认性的证明机制。在给定的实施方式中可以使用多于一种签名类型。例如,具有公钥/私钥对的密码签名和电子签名可以一起使用以便在符合适用的电子签名法规、法律和要求的同时促进密码状态更新。电子签名可以应用于数据驱动合同的至少一种表示模式,优选地表示自然语言法律内容和(多个)可编程条款的可编程方面的表示模式。
[0199] 在合同已经生效之后,另外可以促进合同的谈判和修正。
[0200] 由于数据驱动合同可能要考虑的各种各样的条件,因此可以使用合同条件模拟工具来有效地表示各种场景。样本输入可以自动生成和/或由用户提供。例如,在供应商同意生产合同之前,供应商可以查阅一组不同的场景以及这些场景如何影响合同的动态条款。
[0201] 在一种变体中,框S200可以包括:将可编程条款的规则部署至BDL或任何合适的去中心化计算系统S240。BDL优选地在交易信息的表示方面减少或消除对给定实体的信任。BDL可以用于建立合同的条款、到合同的输入、合同的执行和/或合同的状态的可验证记录。
在一种实施方式中,数据驱动合同的至少一部分可以作为某种形式的版本控制部署至BDL。
可以在创建数据驱动合同期间或在框S300中执行合同期间执行这种版本化。例如,包括输入数据、输出数据/事务、状态更新和其他方面在内的数据驱动合同的所跟踪改变可以作为不变历史提交至BDL。在一种实施方式中,可以另外地或可替代地使用上述状态转换系统或基于git的版本化。优选地,使用分布式和不变版本化系统,但是可以使用合同状态的任何合适版本化。
[0202] 另外,框S200可以包括:管理合同的多种表示S250。所述方法的一个潜在益处是可以使用合同的各种表示来调整合同的用于以用于各个受众。在一种变体中,所述多种表示可以包括图解表示(例如,条款-框表示)、自然语言表示和/或程序表示。还可以使用这些表示中的两个或更多个的混合表示。如条款表示图22A、图22B和图22C的示例性屏幕截图所示,数据驱动合同的混合表示可以反映自然语言内容连同可编程条款的数据驱动内容。这种表示可以实时更新,并且可以包括如数据分析、信息图、数据或合同历史、当事人输入控制(例如,更新数据、发布状态更新、签署状态更新的能力)和/或其他合适要素等内容。
[0203] 合同的不同表示可以在构建数据驱动合同的不同阶段使用,并且不同的实体可以根据其目标和作用使用不同的表示。本文描述的表示是作为例子的实施方式并且不旨在将所述系统和方法限制为表示数据驱动合同的这些实施方式。
[0204] 图解表示优选地是合同的高级视觉概览。在一种优选实施方式中,图解表示为‘条款-框’表示,其中,条款是可以被配置和整合的视觉单元。条款可以以浓缩形式表示。对于想要理解合同的一般条款的非法律和非技术专业人员而言,条款-框表示可能尤其有用。另外,条款-框表示可以在图形用户接口中用于简化图形组装,如图6的示例性图形用户接口所示。
[0205] 自然语言表示可以充当法律文档表示。作为一个潜在益处,自然语言表示可以调整或以其他方式有助于使数据驱动合同用于与传统系统一起使用,其中,传统文档预期静态文档。合同的动态要素可以书面形式表示。例如,动态定价变量可以整合到规定定价值的自然语言内容中,其中,定价值可以变化。在某些情况下,程序表示可以用在自然语言表示的部分中。在一种变体中,自然语言表示另外可以被呈现为当前状态表示,其中,无效合同条款选项被隐藏、压缩或以其他方式最小化从而强调当前合同义务。当前状态可以基于可编程条款的输入动态更新。可以将图形(例如,小部件、图形、图表、执行历史等)嵌入或以其他方式应用于这种表示中。在一些变体中,自然语言表示可以是可编辑接口表示。可以使用可编程条款语法规则、通过自然语言调用可编程条款功能。用户可以编辑可编程条款的基本上自然语言表示以定义功能。作为另一种变体,可以将条款-框整合到自然语言表示中。这种混合可以使标准法律自然语言能够与可以通过条款框表示的更加动态的合同状态一起呈现。
[0206] 编程表示可以充当数据驱动合同的明确表征或源代码。可以编辑编程表示以获得各种各样的定制自由度。可编程条款可以采用各种格式来表示。可以通过如面向对象语言、元编程、函数式语言、程序语言、宣告式语言、领域特定语言和/或任何合适的格式等脚本语言或标记语言在某些部分中指定数据驱动合同的程序表示。程序表示的部分另外可以包括BDL脚本代码以定义如何在一个或多个BDL上部署和管理可编程条款的部分。在一些实例中,可以通过BDL脚本完全表征可编程条款。程序表示可以为单个数据对象。在另一种变体中,程序表示可以包括协作定义数据驱动合同的一组数据对象。在一种变体中,程序表示可以包括合同在其整个生命周期内的表示。另外,输入和输出事件的历史可以是程序表示的另一部分,所述另一部分可以用于确定数据驱动合同在各个时刻的状态。
[0207] 所述方法另外可以促进表示之间的切换。一种表示的编辑可以应用于其他表示。在另一种变体中,一种表示可以链接至其他表示。
[0208] 包括(但不限于)执行数据驱动合同的框S300用于处理或实施数据驱动合同。在一种变体中,执行数据驱动合同可以包括:接收数据输入S310;根据数据输入处理合同S320;以及执行由处理合同产生的动作S330,如图7E所示。在一种变体中,数据驱动合同的执行主要在平台内执行。在另一种变体中,处理的部分或全部可以被部署为在BDL上执行。可替代地,数据驱动合同可以在虚拟机内、在容器内、在分布式系统中和/或通过任何合适的系统处理。
[0209] 包括接收数据输入的框S310用于从外部来源获得数据。数据输入优选地被配置成用于如上所述的可编程条款。可以通过轮询、周期性地从数据源请求数据更新来更新数据。可替代地,可以将数据推送或主动发送至所述平台。还可以利用外部整合建立实时数据流,并且可以通过实时数据流接收输入数据。整合(外部和/或内部)可以在某些方面用于充当可编程条款的函数调用。例如,数据输入的接收可以被具体地配置成触发函数调用。可以采用各种方式来处理接收到的数据。在一种变体中,接收到的数据在其被接收时被立即处理。
在另一种变体中,接收到的数据被记录。数据可以记录在所述平台、外部服务内和/或通过分布式账本存储。然后,可以使用事件系统来通知处理引擎新的未处理数据正等待处理。复杂事件处理可以是替代性方式,可以通过所述替代性方式接收数据并将其用于判定是否应当发生处理、确定何时应当发生处理以及确定由哪个数据驱动合同或可编程条款进行处理。
[0210] 包括根据数据输入处理合同的框S320用于执行如可编程逻辑规定的应用逻辑。在一种变体中,平台可以执行处理。在另一种变体中,可以将过程或事务部署至BDL以便以分布式架构方式、与框S330组合进行处理。在又另一种变体中,平台本身托管在分布式计算架构内。通常,利用混合方式,其中,处理的一部分在平台内执行,并且处理任务的子集以本文所述的方式部署至分布式计算系统。作为两个示例,可以采用程序或宣告式格式定义可编程逻辑。
[0211] 在具有程序逻辑的变体中,对合同或至少程序逻辑的处理可以包括以定义的顺序执行过程。在一个实例中,程序逻辑可以定义逻辑状态的状态机以及数据驱动合同的可编程条款和/或其他方面的那些状态之间的转换。
[0212] 在具有宣告式逻辑的变体中,对合同或至少宣告式逻辑的处理可以包括根据宣告式逻辑进行推理并且确定步骤的适当顺序。宣告式逻辑优选地可以定义动作,而不指定定义的顺序。宣告式逻辑可以通过明确的正式声明来定义。基于逻辑的编程语言可能尤其适用于宣告式逻辑和实施动态法律合同,因为在事实的特定顺序和其他信息存储在知识库中时,它们并不会因为可废止推断过程能够确定缔约过程、操作和动作的适当顺序而具有相关性。
[0213] 包括执行由处理合同产生的动作的框S330用于执行或作用于通过处理数据驱动合同或可编程条款产生的输出。执行动作可以包括:更新至少一个可编程条款S332;更新外部整合端点S334;以及更具体地使用至少一个BDL系统来执行事务S336。
[0214] 包括更新至少一个可编程条款的框S332用于更改数据驱动合同的状态。这可以涉及更改对于数据驱动合同的当前状态有效的条款或条件。例如,当满足特定条件时,当前定价可能会变化。那些条件可以通过与可编程定价条款的外部整合来检测。在一种变体中,可编程条款可以更新其自己的状态。在另一种变体中,可以基于第一可编程条款的动作执行来更新第二可编程条款。合同管理平台另外可以使一个数据驱动合同能够更改其他数据驱动合同。在某些情况下,更新可编程条款可以包括:更新变量或度量。在另一版本中,更新可编程条款可以包括:更改在数据驱动合同的所述有效陈述中有效地反映的自然语言。
[0215] 包括更新外部整合端点的框S334用于基于对合同的执行与其他资源接口连接。作为一个可能的不同方面中,数据驱动合同可以用作中央计算资源以管理操作和合同义务。可以基于合同的状态来驱动其他资源、系统、服务、设备和事件。更新输出可以包括:将数据传输至另一个来源;发出程序指令;发送通知或执行其他适当的动作。外部来源可以通过其API、URI回调/webhook、数据流、通知或任何合适的通信信道来接收信息。服务、应用、平台、系统、设备和/或通信端点可以是输出目的地。
[0216] 如上所述,所述方法可以应用于基本上任何法律合同关系,包括管理与供应链相关的合同。应用于这种供应链合同的方法实例可以包括:数据驱动合同基于从IoT平台和/或边缘计算设备(直接地或存储在BDL、事件存储设备/数据库上等)的数据来整合关于货物质量的数据和/或整合来自分析平台指示更广泛的货物性能度量的数据,如所述货物与之前购买的货物或来自其他供应商的货物进行比较、其他的市场相关条件和/或预测分析。合同价格随后可以基于关于货物质量的数据提高或降低。例如,如果关于质量的数据表明货物质量低于所指示的质量和/或货物的性能不如供应商的市场竞争者那么好,则条款可以规定价格可以降低。同样,质保条款的当前状态可以响应于从性能条款接收到的有关质量的数据而进行调整。质量数据还可以结合与如温度和湿度等运输和操作条件相关的数据。例如,数据驱动合同可以与供应链管理、IoT和/或物流系统和服务整合以检索关于运输状态和质量的数据,如通过使用关键运输模式来获得关于货物运输模式并且使用容器类型来检索关于所使用的容器的类型的数据。作为如何与IoT平台整合的一个示例,可以通过IoT平台整合质量数据,这可以实现将实时产品数据整合至数据驱动合同的API。与合同价格相关的数据将输出至并更新有关发票、成本和其他会计条款、规则和声明的会计API。在一个可能的用例中,可以使用外部帐户平台的会计API。经更新的价格条款可以使用会计API的HTTP PUT和/或POST方法来将经更新的信息发送至会计平台。数据驱动合同还可以通过与付款API整合来影响向供应商的付款,其中,合同价格是API对象指示买方将基于数据驱动合同的状态支付的金额的属性。例如,付款API可以用于使用当前合同、发票或购买订单价格通过使用指定价格的API请求向付款API发出付款API请求来发起从买方到供应商的付款。可以自动地或通过用户以上述方式签署状态改变来发起付款。
[0217] 类似地,可以将外部整合端点的更新应用于与一个或多个BDL接口连接。包括使用至少一个BDL系统来执行事务的框S336用于触发BDL上的BDL事务或其他动作。在某些情况下,执行事务可以包括部署/调用(invoking/calling)/编译BDL脚本或利用BDL的任何合适用例。另外,可以注意到,数据驱动合同和/或可编程条款可以与多种类型的BDL系统进行外部整合/接口连接。这可以在数据驱动合同内用于定义由数据驱动合同管理的BDL之间的跨系统交互。
[0218] 如图13A所示,用于利用事件处理系统来执行数据驱动合同S300的方法S400可以包括:在事件处理系统内配置合同规则S410;存储事件数据流的版本化数据记录S420;根据所配置的合同规则对事件数据流执行复杂事件处理S430;存储合同状态的变化的版本化数据记录S440。方法S400优选地是方法S300的一种变体,并且每一种方法的过程和变体可以以任意组合使用。方法S100、S200和S300优选地与S400组合实施,如图13B所示,但是用于数据驱动合同的事件处理的方法可替代地可以应用于创建或管理可计算合同的替代性方法。方法S400优选地通过与上文所述的系统基本上类似的系统来实施,并且尤其是事件流版本化系统、合同状态转换系统和事件处理引擎的系统组件。
[0219] 包括在事件处理系统内配置合同规则的框S410用于建立处理系统在检测事件和触发适当动作时使用的逻辑对象。合同规则优选地被创建或生成为法律合同的一部分。更具体地,合同规则定义来自数据驱动合同的可编程条款的逻辑的至少一部分。可以使用领域特定语言或任何合适的编程语言。在一种变体中,合同规则可以定义元编程逻辑,其中,元编程是指程序了解自身和/或可以操纵自身的各种方式,如本文所述。在某些实例中,元编程逻辑可用于以非平凡的方式将改变应用于自身。例如,可以使用元编程逻辑使数据驱动合同可以改变数据驱动合同的逻辑的另一部分。这可以实现一定程度的在运行时做出决策的灵活性。数据驱动合同(或任何合适的可计算合同)可以使用基于逻辑的编程框架来规定合同规则并且然后具有如事件处理引擎等规则引擎基于框S430中的合同规则进行推理从而确定要执行的适当的一组操作。可以根据可废止逻辑/推理、程序逻辑和/或其他形式的推理来执行推理。可废止推理被表征为可以用于确定在实施合同、包括更新可编程条款的规则和将数据发送至外部系统时要执行的步骤的适当顺序的某种类型的推断推理。所编写的或与可废止逻辑规则相关联的可编程条款可以避免函数排序或多线程的问题,因为代码的所有状态流可以二维地定义。在替代性实施例中,执行可废止推理的规则引擎和/或其推理的结论可以在BDL‘上’或‘外’执行或存储。在一个实施例中,规则引擎本身可以是在BDL上执行和/或存储的BDL脚本或一系列脚本。
[0220] 包括存储事件数据流的版本化数据记录的框S420用于保存在更新数据驱动合同时使用的所摄取数据输入的记录。通过事件数据流提供的数据输入可以更改数据驱动合同的条款和条件和/或导致执行动作,因此可由相关当事人审核和评估的可验证记录是执行的数据驱动合同的不可分割的一部分。可以使用具有密码记录保持功能或其他适当的数据存储机制的BDL、数据库/事件存储设备。事件数据流可以是任何合适一组的数据输入。数据输入的数据速率可根据类型而变化。事件数据流的版本化优选地创建与特定时间关联的记录。可以使用存储版本化数据记录的各种方式,但是事件流版本化系统和合同状态版本化系统优选地使用包括具有连接对象的默克尔链路的内容寻址对象的DAG。这种默克尔DAG方式优选地基本上类似于上文所述的系统。在一种变体中,输入到事件处理引擎中的数据可以使用密码/‘默克尔化’数据记录。所述方法还另外可以包括过滤事件数据流。对事件数据流的过滤可以在存储至版本化数据记录之前或之后发生。
[0221] 用于根据所配置的合同规则对事件数据流执行复杂事件处理的框S430用于基于合同规则检测事件数据流中将导致某一动作的条件。可以使用各种形式的可编程逻辑来定义合同规则,如本文所述。执行复杂事件处理可以包括:检测事件数据流中的一般模式或条件。在一些变体中,可以利用复杂算法来检测条件。优选地,在检测到合同规则的条件时启动指定的动作。动作可以包括增强可编程条款的规则和条件。另外地或可替代地,动作可以包括执行外部动作,如通过API与第三方服务/资源通信。复杂事件处理可以在虚拟机、容器计算引擎或任何合适的计算环境内操作。
[0222] 包括存储合同状态的变化的版本化数据记录的框S440用于建立数据驱动合同的状态的可验证记录。存储版本化数据记录优选地记录有效条款和条件条款的变化。存储版本化数据记录另外可以包括:记录触发改变事件的输入的元数据和/或响应于检测到的条件而执行的动作。与事件数据流一样,合同状态优选地使用在不同合同状态对象之间包括默克尔链路/边缘的DAG来存储。可编程条款可以与默克尔DAG数据结构中的一个或多个合同状态对象相关。可以通过(a)用户签署状态更新或(b)数据驱动合同在执行期间的自动状态更新来更新数据驱动合同的版本历史。存储版本数据记录可以使用上文所述的状态转换引擎,所述状态转换引擎可以提供每个数据驱动合同的密码安全记录,从而确保合同的状态在任何给定的时间点都是可验证的并且合同的所有历史变化都可由当事人或任何相关第三方审核。
[0223] 实施例的系统和方法可以至少部分地体现为和/或实施为被配置成接收存储计算机可读指令的计算机可读介质的机器。所述指令可以由与应用、小应用、主机、服务器、网络、网站、通信服务、通信接口、用户计算机或移动设备的硬件/固件/软件元件、腕带、智能电话或者其任何合适的组合整合的计算机可执行组件来执行。实施例的其他系统和方法可以至少部分地体现为和/或实施为被配置成接收存储计算机可读指令的计算机可读介质的机器。所述指令可以由与上述类型的装置和网络整合的计算机可执行组件执行。计算机可读介质可以存储在任何合适的计算机可读介质上,如RAM、ROM、闪存、EEPROM、光学设备(CD或DVD)、硬盘驱动器软盘驱动器或任何合适的设备。计算机可执行组件可以是处理器,但是任何合适的专用硬件设备可以(可替代地或另外地)执行所述指令。
[0224] 如本领域技术人员将从前面的详细描述以及从附图和权利要求书中认识到的,在不偏离如在所附权利要求书中限定的本发明的范围的情况下,可以对本发明的实施例进行修改和改变。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈