黑板模式是一种常用的架构模式,应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理。就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自己的分析去更新黑板上的信息,从而影响其它专家。
应用场景
![](https://i-blog.csdnimg.cn/blog_migrate/0fae3cc76bb1f52050e5443b95ba1447.png)
实际应用
典型应用
黑板模式由3个主要组成部分组成。
- 黑板——包含来自解决方案空间的对象的结构化全局内存
- 知识源——专门的模块和它们自己的表示
- 控制组件——选择、配置和执行模块
所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。组件在黑板上查找特定类型的数据,并通过与现有知识源的模式匹配来查找这些数据。
![](https://i-blog.csdnimg.cn/blog_migrate/945fd6eb64799a849791e87e777076ad.png)
解决方案
黑板架构背后的理念是,一系列独立的程序携手合作,致力于处理同一个数据结构。
在解决问题的过程中,系统通过合并、修正或否决部分解来完成工作。每个部分解都针对一个子问题,是这个子问题的最终解在特定阶段的表现形式。所有的可能解构成解空间,并被组织成多个抽象层级,其中最低层为输入的内部表示,最高层包含系统要解决的整个问题的可能解。
之所以使用名称“黑板”(blackboard),是因为它让人想起专家们站在黑板前协作解决问题的情形。专家们通常自行决定截下来该由谁来到黑板前,而在这里介绍的模式中,如果有多个程序都能提供帮助,将由调停者(moderator)组件决定这些程序的执行顺序。
结构
对系统进行划分,使其包含一个黑板组件、一系列知识源以及一个控制组件。
黑板为中央数据存储区,解空间中的元素及控制数据都存储在这里。黑板提供了一个接口,让所有知识源都能够对其进行读写。
每个知识源都是一个独立的子系统,解决整个问题的特定方面。
控制组件运行一个监视黑板内容变化的循环,并决定接下来采取什么措施。
实现
- 定义问题。
- 定义问题的解空间。我们将解分为中间解和顶级解,还将其分为部分解和完整解。顶级解位于最高抽象层级,其他层级的解为中间解。完整解是整个问题的答案,而部分解是部分问题的答案。
- 将求解过程分为如下步骤: (1)定义如何将解转换为上一层级的解。(2)描绘如何作出同一抽象层级的推测。(3)详细说明如何从其他层级寻找证据,以证实做出的推测。(4)指出可利用什么样的知识将部分解空间排除在外。
- 根据子任务将知识划分为专业知识源。
- 定义黑板的词表。
- 规范系统的控制机制。
- 实现知识源。