区块链与业务流程引擎:挑战与解决方案
1. 区块链数据存储面临的挑战
在区块链领域,数据获取和存储存在诸多挑战。获取数据往往需要明确其交易哈希或区块编号,但要为智能合约上的所有交易维护这些信息并不现实。以下是几个具体的挑战方面:
-
数据格式方面
:智能合约需针对每种数据类型编写,然而以太坊使用的智能合约语言 Solidity 的数据类型有限。若数据源发生变化,可能会带来困难。不过,也存在一些通用类型,如 “String” 类型可用于存储 Json 格式数据。但这种有限的类型可用性要求对数据的演变进行仔细的预先规划。
-
成本方面
:区块链的数据存储总是伴随着交易成本。无论在公共、私有还是联盟网络中,只要通过新交易改变区块链状态(任何数据插入都构成新交易),就会产生成本。在某些应用场景中,数据的生成和消费发布以及在点对点网络中注册为参与者,并不会给参与者带来经济利益,只有实际的交易记录才可能带来经济收益。因此,需要更灵活的定价模型。
-
技术障碍方面
:目前以太坊区块链有基于 JavaScript 和基于 GOLang 的两种主要实现版本。不同版本使用的工具不同,JavaScript 使用 web3 的软件包,而 GoLang 有自己的包,如 solc、abigen 等。目前,一个版本的工作成果在另一个版本中无法互换或重用,这可能导致开发过程中的沟通问题。所以,更好地集成这些技术流将提高开发体验和最终结果的质量。
-
技术成熟度方面
:所使用的区块链技术,如 Solidity、Web3.js、Ropsten 测试网络、Metamask 和 Remix 编辑器都在不断发展,功能的向后兼容性可能会成为问题。
2. 相关研究与应用
区块链作为数据存储机制的研究和开发活动广泛开展,相关研究主要集中在以下几个方面:
|研究方向|具体内容|
| ---- | ---- |
|比较区块链与集中式数据库的效用|分析区块链属性与不同应用领域和问题需求的相关性,探讨不同类型的区块链如何更适合特定领域,如供应链管理、银行间支付和去中心化自治组织。|
|研究私有区块链与 SQL 数据库的差异|关注信任建立和健壮性等问题,比较两者在这些方面的特点。|
|分析区块链应用的影响因素|通过比较区块链和集中式数据库在健壮性、容错性、性能和冗余性等方面的差异,提出决策树来判断特定用例是否适合使用区块链解决方案。|
|技术融合|将区块链的属性转移到集中式数据库,或将数据库的属性转移到区块链。例如,BigchainDB 将区块链属性集成到数据库中,使用资产作为关键概念,每个节点维护相同的数据,并使用 Tendermint 作为共识协议确保数据安全。Hyperledger 是一个许可式区块链系统,通过模块化设计实现可扩展性、可伸缩性和灵活性,可配置不同的共识算法,使用 Chaincode 平台用 Golang 编写智能合约,并能实现较高的交易处理速度。|
3. 业务流程管理中的问题与需求
在业务流程管理领域,对于一些松散框架且知识密集型的流程,如医院中患者的诊断和治疗、法律案件的处理、客服问题解决和空中交通管制等,传统的执行方式面临挑战。
-
问题描述
:这类流程可以通过多种方式执行,所有可能的活动预先已知。使用声明式流程建模语言来建模这些流程是合适的,因为它们隐式支持流程灵活性,并且应包含决策逻辑以捕捉领域知识。然而,声明式流程模型往往难以被人类理解和执行,手动执行这些模型很困难。
-
解决方案需求
:业务流程引擎(BPE)可以帮助解决这个问题。一个有效的 BPE 需要满足以下引擎要求(ER):
1. 提供包含每个流程实例当前状态(已执行的活动和使用的资源)的工作流控制数据。
2. 提供每个流程实例的工作流相关数据(如患者的年龄、性别、症状等)。
3. 允许声明式模型允许的所有行为。
4. 禁止违反声明式模型的所有行为。
5. 提供某些活动在特定时间或上下文中不可行的原因,以声明式模型中会被违反的约束形式呈现。
6. 向用户提供在流程实例执行后期需要处理的限制信息。
7. 对所有可能导致活锁或死锁的行为发出警告。
-
语言要求
:为了创建数据感知的声明式 BPE,流程建模语言还需要满足以下 8 个语言要求(LR):
1. 包含流程的所有活动集合。
2. 包含流程中涉及的所有资源集合。
3. 包含流程中涉及的所有数据元素集合。
4. 明确每个资源的能力。
5. 明确每个资源的可用性。
6. 定义资源之间的关系。
7. 定义活动和/或资源之间的关系。
8. 基于数据元素定义决策逻辑,以管理资源可用性和关系。
4. 数据感知的声明式流程执行框架
为了满足上述需求,提出了一个数据感知的声明式流程执行框架,该框架核心包含两个阶段:
-
第一阶段
:BPE 使用工作流相关和控制数据(ER1 和 ER2),通过查看每个约束的决策逻辑和先决条件,计算声明式模型中适用于当前执行实例的部分。具体步骤如下表所示:
|步骤|描述|要求|
| ---- | ---- | ---- |
|1|创建声明式模型中所有约束的集合|LR1 - 8|
|2|通过将流程实例数据与约束的决策逻辑进行比较,检查哪些约束对流程实例有效,移除无效约束|ER2|
|3|移除其先决条件未被该流程实例的已执行活动和使用资源历史满足的所有约束|ER1|
|输出|适用于给定流程实例的所有约束的集合|
-
第二阶段
:根据第一阶段得到的相关约束子集,计算可用的活动。此阶段创建五个活动集合(称为层级):
- A 层级 :作为下一个活动执行时没有任何未来限制的活动集合。
- B 层级 :作为下一个活动执行,但有未来限制的活动集合。这些未来限制表现为未来需要或禁止执行的活动,以确保部分实例能够正确完成。
- C 层级 :仅当活跃用户更改为其他用户时,才能作为下一个活动执行的活动集合。
- D 层级 :目前不可用,但在指定时间过去后将可用(随后将移动到 A 或 B 层级)的活动集合。
- E 层级 :作为下一个活动不可执行的活动集合。
该阶段的具体步骤如下表所示:
|步骤|描述|
| ---- | ---- |
|1|创建模型中定义的所有活动的集合,称为潜在的下一个执行活动。|
|2|对于潜在的下一个执行活动集合中的每个活动:
- 对于适用约束集合中的每个约束:
- 验证执行该潜在的下一个执行活动是否会违反约束。
- 如果仅在等待有限时间后执行才能满足约束,则将该约束存储在该活动的时间违反约束集合中。
- 如果仅在未来要求得到满足时才能满足约束,则将该约束存储在该活动的活动限制约束集合中。
- 如果仅当活跃资源(即系统的当前用户)更改为不同资源时才能满足约束,则将该约束存储在该活动的资源限制约束集合中。
- 否则,将约束存储在该活动的违反约束集合中。|
|3|对于潜在的下一个执行活动集合中的每个活动:
- 如果违反约束集合不为空,则将活动添加到 E 层级。
- 如果时间违反约束集合不为空,则将活动添加到 D 层级。
- 如果资源限制约束集合不为空,则将活动添加到 C 层级。
- 如果活动限制约束集合不为空,则将活动添加到 B 层级。
- 否则,将活动添加到 A 层级。|
|输出|A、B、C、D 和 E 层级|
这个框架为松散框架和知识密集型流程提供了灵活的决策和流程感知支持,通过自动生成不同层级的活动集合,帮助知识工作者更好地理解和执行声明式流程模型。同时,通过添加额外的信息,如资源限制、时间延迟和截止日期等,进一步提高了框架的实用性。但需要注意的是,由于用户输入对于活动执行的必要性,BPE 无法直接防止因未满足约束截止日期而导致的死锁,用户需要自行监控 BPE 显示的截止日期。
区块链与业务流程引擎:挑战与解决方案
5. 框架的实用性与额外信息
为了进一步提升框架的实用性,还可以添加一些额外信息。每个活动在不同层级可以进行相应的注释:
-
C 和 D 层级活动
:C 层级的活动可标注所需的用户,D 层级的活动标注需要等待的时间延迟,该延迟可通过比较当前时间减去激活时间与时间违反约束集合中规定的延迟来计算。
-
A 和 B 层级活动
:若适用,可标注每个活动需要执行的截止日期。相关截止日期可通过比较当前时间和每个约束的激活时间,取活动限制约束集合中约束规定的最低截止日期来计算。
此外,还可以提供声明式模型中适用于当前部分轨迹以及 A、B 层级每个活动的约束子集,方便用户查看实际相关的约束。并且,最好将空洞满足的约束单独列出,因为它们对于考虑未来限制可能很有价值。
6. 框架执行流程的可视化
下面通过 mermaid 流程图展示整个框架的执行流程:
graph TD
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(第一阶段):::process
B --> B1(创建声明式模型中所有约束的集合):::process
B --> B2(检查哪些约束对流程实例有效,移除无效约束):::process
B --> B3(移除先决条件未满足的约束):::process
B --> B4([输出适用约束集合]):::startend
B4 --> C(第二阶段):::process
C --> C1(创建潜在的下一个执行活动集合):::process
C --> C2(验证活动是否违反约束):::process
C2 --> C21{是否仅等待有限时间后执行满足约束?}:::decision
C21 -- 是 --> C22(存储到时间违反约束集合):::process
C21 -- 否 --> C23{是否仅未来要求满足时满足约束?}:::decision
C23 -- 是 --> C24(存储到活动限制约束集合):::process
C23 -- 否 --> C25{是否仅活跃资源更改时满足约束?}:::decision
C25 -- 是 --> C26(存储到资源限制约束集合):::process
C25 -- 否 --> C27(存储到违反约束集合):::process
C --> C3(根据约束集合分配活动到层级):::process
C3 --> C31{违反约束集合是否为空?}:::decision
C31 -- 是 --> C32{时间违反约束集合是否为空?}:::decision
C32 -- 是 --> C33{资源限制约束集合是否为空?}:::decision
C33 -- 是 --> C34{活动限制约束集合是否为空?}:::decision
C34 -- 是 --> C35(添加到 A 层级):::process
C34 -- 否 --> C36(添加到 B 层级):::process
C33 -- 否 --> C37(添加到 C 层级):::process
C32 -- 否 --> C38(添加到 D 层级):::process
C31 -- 否 --> C39(添加到 E 层级):::process
C35 --> D([结束]):::startend
C36 --> D
C37 --> D
C38 --> D
C39 --> D
这个流程图清晰地展示了从第一阶段计算适用约束到第二阶段根据约束分配活动到不同层级的整个过程,有助于更好地理解框架的执行逻辑。
7. 总结与展望
综上所述,在区块链数据存储方面,面临着数据格式、成本、技术障碍和技术成熟度等多方面的挑战。同时,相关研究在比较区块链与集中式数据库、技术融合等方向不断推进。在业务流程管理中,对于松散框架且知识密集型的流程,声明式流程模型虽有优势但难以执行,而提出的数据感知的声明式流程执行框架为解决这一问题提供了有效的途径。
该框架通过两个阶段的执行,自动生成不同层级的活动集合,结合额外的信息标注,为知识工作者提供了更清晰的决策依据。然而,由于用户在活动执行中的关键作用,BPE 无法直接避免因未满足约束截止日期导致的死锁问题。未来,可进一步研究如何更好地引导用户监控截止日期,或者开发更智能的机制来预防死锁。还可以探索将该框架与更多的业务场景相结合,验证其在不同领域的适用性和有效性,不断完善和优化框架,以适应日益复杂的业务需求。
以下是对整个框架关键信息的总结表格:
|类别|详情|
| ---- | ---- |
|区块链数据存储挑战|数据格式有限、成本高、技术障碍、技术成熟度问题|
|相关研究方向|比较区块链与集中式数据库、技术融合等|
|业务流程管理问题|声明式流程模型难理解和执行|
|业务流程引擎要求|工作流控制数据、工作流相关数据、行为允许与禁止、活动限制原因和警告等|
|流程建模语言要求|活动、资源、数据元素、资源能力和可用性、关系及决策逻辑等|
|框架阶段|第一阶段计算适用约束,第二阶段分配活动到层级|
|层级分类|A 无未来限制,B 有未来限制,C 需更改用户,D 等待时间后可用,E 不可执行|
|额外信息|资源限制、时间延迟、截止日期、适用约束子集等|
超级会员免费看
385

被折叠的 条评论
为什么被折叠?



