领域知识模型
- 格式:docx
- 大小:133.99 KB
- 文档页数:7
领域知识通用模型
通用模型是一种能够应用于各个领域的人工智能模型,它的出现极大地推动了人工智能技术的发展。
无论是自然语言处理、图像识别还是机器翻译,通用模型都在不同领域中发挥着重要作用。
通用模型在自然语言处理领域中的应用不可忽视。
通过训练大量的文本数据,通用模型能够识别句子的语义和上下文信息,进而实现自动问答、文本摘要等功能。
它能够根据用户的提问,准确地给出回答,帮助人们解决问题。
通用模型在图像识别方面也有着重要的应用。
通过对大量图片进行训练,通用模型可以识别出图像中的物体、人物以及场景等信息。
这使得人们能够更加方便地进行图像搜索、图像标注等操作,提高了图像处理的效率和准确性。
通用模型在机器翻译领域也有非常重要的地位。
通过对不同语言的文本进行学习和训练,通用模型可以实现自动翻译功能,将一种语言的文本转化为另一种语言的文本。
这种技术的出现,使得不同语言之间的交流变得更加便捷和高效。
通用模型在各个领域中的应用给人们的生活带来了很大的改变。
它不仅提高了人们的工作效率,还为人们提供了更多便利的服务。
随着技术的不断进步,相信通用模型在未来的发展中将会有更加广泛的应用,为人类的发展带来更多的可能性。
领域驱动设计之领域模型领域驱动设计之领域模型加⼀个导航,关于如何设计聚合的详细思考,见⽂章。
2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD。
领域驱动设计分为两个阶段:以⼀种领域专家、设计⼈员、开发⼈员都能理解的通⽤语⾔作为相互交流的⼯具,在交流的过程中发现领域概念,然后将这些概念设计成⼀个领域模型;由领域模型驱动软件设计,⽤代码来实现该领域模型;由此可见,领域驱动设计的核⼼是建⽴正确的领域模型。
为什么建⽴⼀个领域模型是重要的领域驱动设计告诉我们,在通过软件实现⼀个业务系统时,建⽴⼀个领域模型是⾮常重要和必要的,因为领域模型具有以下特点:1. 领域模型是对具有某个边界的领域的⼀个抽象,反映了领域内⽤户业务需求的本质;领域模型是有边界的,只反应了我们在领域内所关注的部分;2. 领域模型只反映业务,和任何技术实现⽆关;领域模型不仅能反映领域中的⼀些实体概念,如货物,书本,应聘记录,地址,等;还能反映领域中的⼀些过程概念,如资⾦转账,等;3. 领域模型确保了我们的软件的业务逻辑都在⼀个模型中,都在⼀个地⽅;这样对提⾼软件的可维护性,业务可理解性以及可重⽤性⽅⾯都有很好的帮助;4. 领域模型能够帮助开发⼈员相对平滑地将领域知识转化为软件构造;5. 领域模型贯穿软件分析、设计,以及开发的整个过程;领域专家、设计⼈员、开发⼈员通过领域模型进⾏交流,彼此共享知识与信息;因为⼤家⾯向的都是同⼀个模型,所以可以防⽌需求⾛样,可以让软件设计开发⼈员做出来的软件真正满⾜需求;6. 要建⽴正确的领域模型并不简单,需要领域专家、设计、开发⼈员积极沟通共同努⼒,然后才能使⼤家对领域的认识不断深⼊,从⽽不断细化和完善领域模型;7. 为了让领域模型看的见,我们需要⽤⼀些⽅法来表⽰它;图是表达领域模型最常⽤的⽅式,但不是唯⼀的表达⽅式,代码或⽂字描述也能表达领域模型;8. 领域模型是整个软件的核⼼,是软件中最有价值和最具竞争⼒的部分;设计⾜够精良且符合业务需求的领域模型能够更快速的响应需求变化;领域通⽤语⾔(UBIQUITOUS LANGUAGE)我们认识到由软件专家和领域专家通⼒合作开发出⼀个领域的模型是绝对需要的,但是,那种⽅法通常会由于⼀些基础交流的障碍⽽存在难点。
DDD(Domain-Driven Design,领域驱动设计)是一种软件开发方法,适用于开发复杂的业务系统,尤其是那些业务逻辑复杂或领域对象关系复杂的系统。
以下是一些DDD领域模型设计的适用场景:
业务逻辑复杂的系统:在业务逻辑复杂的系统中,DDD可以帮助开发人员更好地理解业务概念,并将这些概念转化为领域对象,以实现业务逻辑的模块化和复用。
不太复杂的业务系统:对于不太复杂的业务系统,比如内容管理系统或渠道接入层系统,如果没有核心业务逻辑,就不需要使用DDD。
有资深的业务领域专家支持:DDD需要有一个很懂业务的人,在业务上提供指导性的意见。
只有当有资深的业务领域专家支持时,才能更好地进行DDD领域模型设计。
工程师都认可DDD设计思路:如果开发团队中的工程师都认可DDD 设计思路,并积极主动地探讨和迭代,将业务模型日趋完善,那么就可以考虑使用DDD。
项目工期压力小:如果项目工期压力小,可以接受相对较长的开发周期,那么可以考虑使用DDD。
因为DDD需要一定的时间和精力来理解和建模领域知识,以及实现领域模型的设计和代码编写。
总之,当面临复杂的业务需求、领域模型复杂或存在大量交互的对象时,DDD可以发挥其优势。
基于本体的领域知识建模研究共3篇基于本体的领域知识建模研究1领域知识建模是一种在特定领域内捕获,组织和管理知识的过程。
本体是目前最流行的知识表示和处理技术之一,可以用于领域知识建模。
本文旨在介绍本体及其如何用于领域知识建模。
本体是一种用于知识管理和语义Web的技术。
它是一个共享的、形式化的概念结构,描述了一组概念和它们之间的关系。
本体由一组术语、定义和规则组成,用于表达领域中的概念、事实和关系。
本体的核心思想是将概念和关系概括成一个共享的、标准化的组件,使得它们能够被计算机程序理解、计算和操作。
领域知识建模是利用本体技术获取、表示、组织和应用特定领域的知识。
首先,我们需要分析该领域的知识,并将其表示为本体的形式。
本体的构建需要遵循本体设计的规则和原则。
在本体构建期间,我们需要考虑以下因素:1.领域的范围和边界:确定实体和概念覆盖的范围和边界。
2.概念的抽象级别:选择最适合领域内概念描述的抽象层次。
3.相关概念的关系:确定研究领域内概念的关系。
4.应用场景:为特定应用场景更新本体的设计,使其更贴近应用需求。
当本体构建完成后,我们可以使用它来表示领域知识,并将其用于领域相关的应用程序中。
本体可以支持各种知识管理应用,例如:1.智能搜索:用于对领域内有关信息和资源进行发现和搜索。
2.决策支持:基于领域本体的决策支持系统。
3.语义网应用:支持语义Web应用的本体基础架构。
总之,领域知识建模是一种利用本体技术获取、表示、组织和应用特定领域的知识的过程。
本体是目前最流行的知识表示和处理技术之一,可以用于领域知识建模。
构建本体需要考虑领域的范围和边界、概念的抽象级别、相关概念的关系和应用场景。
对于应用程序,可以使用本体来支持各种知识管理应用,例如智能搜索、决策支持和语义网应用。
基于本体的领域知识建模研究2随着人工智能技术的快速发展,基于本体的领域知识建模模型成为了研究热点之一。
在众多的领域应用中,基于本体的领域知识建模技术能够帮助实现智能分类、推荐、搜索等任务,同时还能够为人们提供更加准确的知识查询和决策支持。
浅谈领域场景分析的6W模型
在软件构造过程中,我们必须正确地理解领域。
一种生动的方式是通过场景来展现领域逻辑。
领域专家或业务分析师从领域中提炼出场景,就好像是从抽象的三维球体中,切割出具体可见的一片。
然后以这一片场景为舞台,上演各种角色之间的悲欢离合。
每个角色的行为皆在业务流程的指引下展开活动,并受到业务规则的约束。
当我们在描述场景时,就好像在讲故事,又好似在拍电影。
组成场景的要素常常被称之为6W模型,即描写场景的过程必须包含Who,What,Why,Where,When与hoW这六个要素。
6W模型如下图所示:
通过场景分析领域需求时,我们需要首先识别参与该场景的用户角色。
我们可以为其建立用户画像(Persona),通过分析该用户的特征与属性辨别该角色在整个场景中参与的活动。
这意味着我们需要明确业务功能(what),思考这一功能给该角色能够带来什幺样的业务价值(why)。
注意,这里所谓的角色是参差多态的,同一个用户在不同场景可能是完全不同的角色。
例如在电商系统中,倘若执行的是下订单功能,则角色就是买家;针对该订单发表评论,参与的角色就变成了评论者。
智慧城市领域知识模型—核心概念模型智慧城市领域知识模型是指基于智慧城市领域专家知识的整合
和提炼,形成的一种概念框架。
其中,核心概念模型是智慧城市领域知识模型的基础模型,其核心概念包括城市、智能化、信息化、互联网、物联网、大数据、智能交通、智慧环保、智慧医疗等。
城市是智慧城市的基础和载体,智能化和信息化是智慧城市的核心技术和手段,互联网和物联网是智慧城市的基础设施和支撑平台,大数据是智慧城市的重要资源和分析工具。
智能交通、智慧环保、智慧医疗等是智慧城市的具体应用领域,为城市的运行和发展提供了高效、智能、可持续的解决方案。
智慧城市领域知识模型的建立和应用,有助于促进智慧城市领域的学科交叉和知识共享,加速智慧城市发展的步伐,提升城市的综合竞争力和居民生活的质量。
- 1 -。
知识结构模型全文共四篇示例,供读者参考第一篇示例:知识结构模型是指在认知领域中,存在一种关于如何组织、存储和检索知识的理论模型。
这些模型通常用来解释和预测人类在学习和记忆知识时的行为和过程。
在心理学、教育学、计算机科学等领域中,知识结构模型被广泛应用于研究认知过程和开发教学、学习工具。
知识结构模型的研究可以追溯到20世纪中叶,当时科学家们开始意识到知识的组织结构对于理解认知过程和学习效果的重要性。
知识结构模型的发展经历了多个阶段,从最初的基于符号的模型到后来的基于网络的模型,每一种模型都试图解释和描述人类的认知结构和知识组织方式。
在传统的符号主义认知模型中,人们认为知识是通过符号、规则和概念进行表示和存储的。
符号主义认为,人类用符号(如文字、数字)来代表外部世界的事物和概念,通过符号之间的逻辑关系和规则来进行思维和记忆。
人们可以使用数学符号和公式来解决数学问题,使用语言符号来表达思想和感情。
这种模型强调逻辑推理和符号处理在知识获取和运用中的重要性。
随着认知科学的发展和神经科学技术的进步,人们开始逐渐意识到符号主义模型存在一些局限性,无法完全解释人类在认知活动中的复杂性和灵活性。
于是,基于网络的知识结构模型开始引起人们的广泛关注。
这种模型认为,人类的知识是通过网络结构来表示和组织的,不同的概念和信息之间存在着复杂的联系和交互关系。
在这种模型中,人们认为知识的存储和检索是通过激活整个网络中的节点和链接来实现的,而不是简单地通过符号和规则的处理。
网络模型提供了一种更加灵活和综合的知识表示方法,能更好地解释人类在认知过程中的行为和现象。
人们可以通过网络模型来解释记忆的联想性和关联性,人们在学习过程中是如何通过连接不同的节点来建立知识关系和理解知识结构的。
这种模型还可以用来解释人类在解决问题、做决策、创造新知识等方面的行为和过程。
除了传统的符号主义和网络模型,还有一些其他类型的知识结构模型,如产生式模型、神经网络模型等。
非良构的陌生领域知识的教学设计模型建构作者:李芒查聿翀来源:《中国电化教育》2019年第09期摘要:教学设计者的职责在于完成教学设计的相关理论和用户需求,对教学内容与策略进行组织和设计以促进学习者有效学习。
然而,不是所有的教学内容都是教学设计者掌握并了解的。
在不熟悉教学内容的情况下,教学设计者难以完成教学设计活动。
为弥补这一不足,该文提出一种通过快速学习进行教学设计的模型,把陌生领域知识教学设计的过程分解为教学设计者学习陌生领域知识和将陌生领域知识作为教学内容进行教学设计两个子过程,后一个子过程是由确定问题、鉴别问题域与教学域、形成分布式认知网络、建构问题情境、实施基于问题的教学和评估问题的解决方案六大环节构成的闭环,前一个子过程从首次确定问题域和教学域之后贯穿闭环的每一个环节。
该模型可用于指导教学设计者对组织内陌生领域知识进行教学设计。
关键词:教学设计者;陌生领域知识;教学设计模型中图分类号:G434 文献标识码:A在当前教育信息化的大背景下,新兴教育形态如创客教育、STEAM教育等层出不穷。
这些新兴的教育形态,打破了传统学科的藩篱,反映了“互联网+”浪潮下跨界融合的趋势,也对教学设计工作提出了巨大的挑战。
跨界融合意味着教师必须面对跨学科综合性的问题,这意味着他们在学校中学习的单一专业知识不足以应付他们的教学需求,还需要接触之前不曾了解的其他学科的知识,并将这些知识与自身学科知识融合输出为教学设计。
现有的教学设计模型,都隐含了一个前提:教学设计者已经掌握教学中所需的全部知识。
但在对陌生领域知识进行教学设计时,这一前提并不成立。
为了帮助教学设计者在面对陌生知识时更好地应对挑战,本研究在日常培训工作的直接和间接经验启发下,基于定性教育建模方法,提出了一种用于对陌生领域知识进行教学设计的模型。
教学设计者的职责在于完成教学设计的相关理论和用户需求,对教学内容与策略进行组织和設计以促进学习者有效学习。
其具体工作是选择教学内容、制定教学策略、选用合适的传输媒体、测试最终教学产品的可用性并对其进行评估和修正[1]。
知识融合的模型
知识融合的模型是指将不同领域的知识融合起来,形成一个全新的知
识体系。
这种模型的好处在于可以使得这些领域的知识相互补充、相
互促进,从而形成更为丰富、更为创新的知识结构。
实现知识融合的模型,需要以下几个步骤:
一、建立“知识补全”机制。
在不同领域中,可能存在着相同或相似
的知识点,但是由于各个领域的专业术语和表述方式不同,这些知识
点常常会被分散在各自的领域中,难以形成一个完整的知识体系。
因此,对于这些相同或相似的知识点,需要建立一个“知识补全”机制,将它们汇聚起来,形成一个更为完整的知识结构。
二、建立“知识互通”机制。
不同领域的知识之间可能会存在着差异,但是这些差异并不一定是无法协调的。
因此,建立一个“知识互通”
机制,可以使得不同领域的知识互相融合、相互促进,最终形成一个
包容性更强、更为丰富的知识体系。
三、建立“知识创新”机制。
知识的融合并不仅仅是把不同领域的知
识放在一起,更重要的是要在这种有机融合的基础上,进一步推动知
识的创新。
因此,在知识融合的模型中,还需要建立一个“知识创新”
机制,促进各种前沿技术与知识的交流和创新。
总之,知识融合的模型是一个具有前瞻性和创新性的模型,可以帮助
我们整合各个领域的知识,形成一个更为完整、更为有机的知识体系,为人类社会的持续发展提供了强大的知识支持。
知识模型基础知识一绪论知识是一个很复杂的研究对象,知识系统是庞大而错综复杂的。
知识模型的研究包含知识组织结构研究和知识处理两个方面。
因此,本文主要分为两大部分来展开论述:领域知识表示模型研究和领域知识处理模型研究。
1 需要研究和解决下列问题:1)学科领域知识的表示;(知识的表示和描述,并与各类学习技术规范接轨)2)学科领域知识的组织与交互关联;3)学科领域知识的有序化;4)学科领域知识处理模型2 研究内容:分析领域知识结构,建立基于概念网的知识表示模型。
需要从宏观到微观表示复杂的领域知识体系,不同层次上的概念在结构上的复杂程度和关联关系上应该是不同的。
按照不同层面知识的不同特点可将概念网模型分为上、中、下三个层次。
最上层模型描述学科知识,中层详细描述领域知识,底层模型是对中层模型的补充。
根据三个层面知识的不同特点,分别构建模型。
中层概念网模型以本体论为指导思想构建,从对象的观点来认识概念,把基本概念看成是一个个的对象,具有属性、行为、概念描述、概念词等复杂特征,进而由基本概念衍生出派生概念和复合概念等。
在模型中,概念网可简化为概念树表示。
在此基础上根据树的层次关系计算概念树中节点的距离,将概念节点距离计算简化为纯数学计算。
底层概念与概念之间通过关联关系形成一个复杂的底层概念网络,知识之间也建立起推理的依据。
(1)从知识的本质出发,以学科领域知识为对象,逐步深入地分析领域知识的表示方法并对概念网模型进行研究。
(2)通过分析不同层次的知识表示,领域知识的层次结构分析,构建静态领域知识模型和动态领域知识模型,,给出能够详细表示知识内容的中层概念网络模型以及建构方法,确立三层概念网络的领域知识组织与表示模型。
(3)研究领域知识中层概念网建构,运用本体论的方法详细描述中层概念网模型的构建和表示。
(4)探索概念节点在概念树中的数学模型。
通过定义概念各种关系时的不同距离计算方法,将抽象的概念联系转化为形象的概念距离。
领域知识与大模型-概述说明以及解释1.引言1.1 概述领域知识和大模型是当前人工智能领域的两个重要概念和研究方向。
领域知识是指对某个特定领域中所涉及的概念、原理、规律和解决方法等的了解和掌握。
而大模型是指基于大量数据和计算资源训练出的拥有强大学习能力的模型。
随着技术的发展,人工智能在各行各业都有广泛的应用。
在这个过程中,领域知识的重要性逐渐凸显出来。
领域知识不仅可以为人工智能系统提供更精准的输入和指导,更重要的是可以帮助系统理解和分析问题,从而更好地进行决策和解决方案的生成。
通过将领域知识与大模型相结合,可以进一步提高人工智能系统的性能和智能水平。
大模型作为一种新兴的研究方法,具有很高的处理能力和学习能力。
它可以通过深度学习等技术,从大规模的数据中自动提取特征和模式,从而实现对复杂问题的建模和解决。
大模型在语音识别、图像处理、自然语言处理等领域取得了巨大的成功。
然而,由于大模型需要庞大的计算资源和数据量,并且在训练过程中容易出现过拟合等问题,所以在应用中也存在一些挑战和限制。
领域知识与大模型之间存在密切的关系。
领域知识可以为大模型的学习和应用提供指导和约束,使其更加准确和有效。
而大模型则可以为领域知识的获取和应用提供技术支持和工具。
二者相互促进,相互补充,共同推动人工智能的发展。
本文将重点探讨领域知识和大模型在人工智能中的应用和关系。
首先,将从领域知识和大模型的定义和重要性入手,介绍它们对于专业能力的影响。
接着,将讨论如何获取和应用领域知识,以及大模型的概念和应用场景,以及它们的优势和挑战。
最后,将对领域知识与大模型的结合对未来发展的影响进行展望,并总结本文的主要观点和研究结果。
通过对这些问题的讨论和分析,旨在为进一步研究和应用领域知识与大模型提供新的思路和方法。
1.2 文章结构文章结构:本文分为引言、正文和结论三个部分。
在引言部分,我们将概述文章的主题并介绍其重要性。
我们将解释领域知识和大模型的概念,并说明它们在现代社会中的应用和意义。
领域知识与大模型全文共四篇示例,供读者参考第一篇示例:领域知识与大模型是现代人工智能领域中重要的两个方面,它们共同推动了人工智能技术的快速发展。
在人工智能领域中,领域知识指的是人类对某一特定领域的专业知识和经验,而大模型是指训练参数量很大的深度神经网络模型。
领域知识和大模型在人工智能领域中有着密不可分的关系,它们相互依存、相互促进,共同推动了人工智能领域的发展。
领域知识是指在特定领域中所积累的知识和经验。
在人工智能领域中,领域知识可以帮助我们更好地理解和分析数据,提高人工智能系统的性能和效果。
领域知识可以帮助我们更好地理解人类的思维和行为模式,进而制定更符合人类需求的人工智能系统。
领域知识可以帮助我们更快速地解决现实生活中的问题,提高人工智能系统的应用效果。
领域知识和大模型在人工智能领域中有着广泛的应用。
领域知识和大模型可以帮助我们更好地处理自然语言处理、计算机视觉、智能对话等领域中的问题。
领域知识和大模型可以帮助我们更好地处理医疗、金融、交通、农业等领域中的问题。
领域知识和大模型可以帮助我们更好地处理智能机器人、自动驾驶、智能家居等领域中的问题。
在人工智能领域中,领域知识和大模型的发展离不开人们的不断探索和创新。
我们需要不断提升自己的领域知识水平,不断改进和优化大模型的结构和参数设置,不断拓展人工智能领域的应用范围和效果。
只有这样,我们才能更好地应对现实生活中的各种挑战和问题,推动人工智能领域的快速发展和应用。
第二篇示例:领域知识与大模型随着人工智能技术的快速发展,大模型在学术界和工业界中扮演着越来越重要的角色。
领域知识也成为了构建大模型的重要组成部分。
本文将探讨领域知识与大模型的关系,以及它们在人工智能领域的应用。
我们需要了解什么是大模型。
大模型是指使用大量参数和大规模训练数据进行训练的深度学习模型。
这种模型拥有更强的表征能力,可以解决更加复杂的任务。
大规模语言模型如GPT-3在自然语言处理领域取得了显著的成就。
领域知识模型——企业应用系统的智慧中枢摘要:企业应用系统有海量的领域对象和丰富的领域知识,这些领域知识一般被作为领域对象的业务逻辑或规则定义。
本文认为领域知识是领域模型的一个知识切面且自成体系,结合领域驱动设计[DDD]和面向方面编程[AOP]的方法,对领域知识进行建模和应用,让面向业务活动的领域应用对象只需关注业务过程的组织和管理,用AOP技术把领域知识应用到具体的业务处理策略中,使领域应用对象和领域知识对象有更好内聚性且更轻量,不仅可大幅提升它们的可管理性和复用性,而且对系统开发效率、动态业务建模和装配能力也大有益处。
关键词:领域知识、领域模型、领域驱动设计、企业应用架构、DDD、AOP1.前言领域模型[Domain Model]和领域驱动设计[Domain-Driven Design][1]是目前在应用软件行业非常热门和前沿的话题,普遍认为这是构建高质量复杂系统最有效的方法和技术。
领域模型在业界比较认可的定义是:领域模型是领域内的概念或者现实世界中对象的可视化表示,又称为概念模型、领域对象模型、分析对象模型,它专注于分析领域问题本身,领域对象是与技术无关的纯业务对象。
领域建模的核心理念是把业务对象的属性、规则和职能封装在领域对象中,而不是被分散在用户界面层、应用层和持久化层中。
领域建模一般情况下是从应用功能或用例[Use Case]入手,因此,领域模型中的领域对象也是直接与应用功能或用例相关的业务对象,而这些领域对象模型涉及的领域知识,一般都作为领域对象的逻辑或者规则而存在。
知识是应用领域问题的本质,是特定领域中一系列业务对象共有的知识切面,这个知识切面自成体系,本文中把这个知识体系的模型称为领域知识模型,与具体应用功能或者活动相关的领域对象模型称为领域应用模型。
为了便于理解这些概念,我用一个与企业管理无关的通俗的例子来说明知识模型和应用模型的关系,比如对我喜欢的台球运动进行游戏建模,美式九球模型或者英式斯诺克模型是具体的领域应用模型,球台、球、球杆、运动员等是应用领域模型的核心领域对象,但要做出好玩的仿真游戏,台球碰撞中的基本物理知识是不可或缺的,用牛顿理论作为领域知识模型就涉及到质量、速度、动量等概念和动量守恒及能量守恒模型。
知识模型是高度抽象并且可独立存在的模型,也是可以在各种业务情景中复用的模型,就如前面提到的台球游戏用到的牛顿理论模型,同样可以应用到保龄球游戏以及任何一款涉及到碰撞的游戏场景。
企业管理领域也同样存在大量的知识模型,本文笔者致力于把企业管理领域涉及的领域知识进行分离、建模和应用的可行性分析和实践,希望以此进一步提升大型复杂企业应用系统的质量、动态业务建模和装配能力及组件复用水平。
2.企业应用系统中的领域知识问题分析企业应用系统已逐渐成为企业经营管理的一体化应用平台,面向业务流程的行业深度应用和面向业务活动的作业处理成为系统核心,系统中包含的领域知识的广度和复杂度也随之成几何级数增长,系统复杂度、弹性、可靠性和开发效率都受到前所未有的挑战。
为了迎接这些挑战,技术领域方面开始广泛使用动态业务建模、产业链分层、SOA等前沿技术方案;应用领域方面则积极采用领域建模方法。
动态业务建模和SOA组件装配主要是面对业务流程、活动的粗颗粒业务组件或者对象。
领域建模因一般从用例[Use Case]入手而导致关注的领域对象也主要是业务流程、活动涉及到的交易记录或者账务对象。
如图1所示的一种普通销售业务流程包括接单、发货、开票、收款等业务环节,涉及到的主要领域对象包括销售订单、发货单、发票、收款单等交易记录对象和信用、应收、库存、可用量、收入、成本、资金等账务对象或者模型。
从表面上看这是一个完整、合理的领域模型,但是当你仔细查看这些业务对象的代码细节时,你会发现各业务对象间存在大量关于产品特性、数量计量处理、金额处理、税额处理的重复代码,为了消除这些冗余代码,程序员可能采用抽象基类、抽取公共规则及其接口等设计方法,然而,遗憾的是这些方法都只是代码实现思维模式,没有领域知识模型与之对应,导致代码更加晦涩。
该如何解决这个问题呢?图1 一种普通销售业务流程与领域知识仔细分析这些业务对象,其实不难发现它们都涉及到产品、计量、收入、成本、折扣、税、佣金等领域知识,无论企业流程和活动如何变化,这些知识的定义和逻辑是基本不变的,而且这些知识本身包含丰富的体系结构,如产品模型包括产品系列、特征、Kit件模型、ATO模型等领域知识,产品计量有包装计量、SKU计量、计价计量、特性计量、纯度计量等领域知识模型,而且这些知识模型在不同的行业或者地区中可能表现为不同的模型或规则,比如针对中国大陆工商企业增值税制度,大部分设计人员会按照图2中所示那样简单地把税额计算逻辑作为领域对象的一个规则逻辑,销售发货、发票等环节都涉及到同样的税额计算规则和计算功能,如果真的仅仅是一个简单的计算公式,就只是一个表达式计算代码的简单重复那倒无所谓了。
当把税额容差处理、不同税种及其征收范围和适用条件、税制改革和国际贸易中各地区有不同税模型等都考虑在内时,图2中税额计算设计方案问题就比较突出了,而且这些问题与具体的订单、发货、发票这些业务对象显然不应该有直接关系,更没有理由因此而改变它们的代码逻辑,大家会很自然地想到把税作为领域知识对象剥离出来,这样不仅结构清晰了,而且系统应对税制变化的开发效率和弹性能力明显增强了,但同时问题也来了,何时用何种手段让订单、发货、发票这些领域对象执行这个税逻辑呢?如何管理它呢?图 2 税额计算规则在领域对象中的常见设计方案3.建立领域知识层图 3 领域知识在分层架构中的层次位置目前复杂的企业管理软件系统普遍使用领域驱动的分层架构,如图3左半部分[2]所示,把系统分为用户界面层、应用层、领域层和基础设施层,根据前面的分析,可以把应用层和领域层中领域知识分离出来建立一个独立的领域知识层,如图3右半部分所示,领域知识层的逻辑和规则和可以在领域层和应用层中使用,各层的职责如下:用户界面层负责向用户显示信息和解释用户指令。
这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人。
应用层定义软件要完成的任务,并且指挥领域对象来处理问题。
应用层要尽量的简单,不包含业务规则或者知识,而只是为下一层中的领域对象协调任务,分配工作,是它们相互协作。
领域应用层负责表达业务流程和活动中业务对象的职能、规则和状态。
业务对象是高度内聚的,多个业务对象通过应用层的组织来协作完成一个任务或者功能。
领域应用层是业务软件的核心。
领域知识层负责表达业务领域中业务知识相关的概念、算法、规则。
业务知识是应用层中的业务活动和领域应用层领域对象应该普遍适用或者遵循的知识规律或者制度。
领域知识层模型的完善度和丰富度决定了业务软件系统的应用弹性能力和应对需求变化的开发效率。
基础设施层为上面各层提供通用技术能力:持久化、事务、上下文环境、缓存、消息通道、任务调度、UI组件等。
领域知识对象在领域知识层集中管理和建模,便于领域知识专家独立对它们进行优化和管理。
企业应用系统中领域知识模型一般可以分为流程制度或业务模式、算法、规则、策略和概念或类型。
从管理策略上一般遵循产业链分层体系:水平、行业、区域、个性四个层次。
基础设施层提供相应的技术框架体支撑领域知识模型扩展和管理。
4.领域知识对象与领域应用对象之间的关系领域知识对象或者模型是对知识的模型表达,在现实世界中一般没有实体对象与之对应,它们是现实世界中实体对象(本文称为领域应用对象)和业务活动对象完成自身业务功能中要遵循的内在知识规律,因此,领域知识对象是无状态的。
最常见的设计方案是把领域知识模型中的概念对象作为领域应用对象中实体对象的值对象[Value Object]成员,或者在领域应用对象中直接调用这些领域知识对象的功能,这虽然实现了领域知识对象的封装和复用,但系统运行性能和应用策略扩展都会有较大问题。
领域应用对象在不同的业务上下文环境中,如不同的业务流程和业务类型,要遵循或者应用的领域知识模型可能是不同的,比如面向订单生产[MTO] 和面向对订单装配[ATO]销售接单对应的核心领域模型都是销售订单模型,仅从销售业务领域看,订单模型是相同的,但两个业务模式下销售订单中应用的产品模型却是不同的,任何商品化的企业应用系统都要同时支持这两种业务,而且还可能支持更多的业务模式(如面向订单设计[ETO]),还有,不要忘了这种业务模式相关联的特定产品模型会贯穿整个计划和生产过程。
另外,同一个领域应用对象很有可能要同时应用不同的知识维度,如采购订单对象要同时受到采购订货业务模式和内控体系领域知识约束,所以,把领域知识对象作为领域应用对象的成员或者在领域应用对象的功能逻辑中直接访问都是显然不合理的。
领域知识对象的应用切入点是业务服务(Business Service)、领域服务(Domain Service)和领域实体(Domain Entity)的具体某一职能中(在业务上表现为某一个具体的业务功能),领域知识对象的行为主要表现为对领域实体对象的约束控制和计算处理,同时,这些结果可能影响业务流程后续执行策略的选择。
在目前普遍采用的动态建模和组件装配的技术架构体系下,领域知识对象切入领域应用对象的定义最合适的地方应该就是业务流程策略、组件策略和业务对象策略中。
如图4所示,业务策略执行器拦截领域应用对象的方法执行点后会根据切入条件创建并调用领域知识对象的应用功能,领域知识对象属性通过绑定映射访问被绑定的领域应用对象的属性,这样,领域知识就自然地根据业务上下文条件动态注入到领域应用对象职能中了。
图4 领域知识对象应用于领域应用对象上的工作原理及环境5.RBAC[3]知识模型应用示例分析为了更直观地理解领域知识模型对企业应用系统的影响和价值,用企业管理软件中应用普遍且不包含企业管理业务知识的例子——权限管理示例说明。
权限管理目前普遍采纳的知识模型是RBAC模型,如图5所示。
图-5 RBAC知识模型应用示例RBAC模型包含角色[Role]、操作[Operation]、资源[Resource]三个基本概念,对角色有静态冲突[SSD]和动态冲突[DSD]约束规则,有授权分配[PA:Permissions Assignment]及控制[PC:Permissions Controlling]功能,非常简单。
仅用资源为例,在企业应用系统表现为属性访问权限控制,资源可以具体化为:成本、价格、折扣、客户、供应商等等,授权分配直接针对这些概念即可,各业务对象在应用权限控制对象时,只需指定业务对象的属于与权限控制概念的绑定映射关系即可。
如果没有引入RBAC知识模型,授权资源就只能直接针对领域应用层业务对象的属性,以图5中成本资源为例,一个业务对象可能有多个属性都属于成本概念,授权操作人员不得不辨别哪些属性应该归属于成本概念,但如授权操作人员是对业务知识不太精通的系统管理人员时,他只能通过查阅用户手册并和领域专家不断沟通才能完成工作,而且同样一个成本控制授权还不得不在各领域应用对象上重复上面痛苦的步骤,一般情况下至少会涉及到上百个业务对象、查询及报表对象,稍有疏忽,就可能出现系统授权控制不完整或不一致,另外,达到同样控制效果的授权数据规模也会相差巨大,相差倍数等于相关联的业务对象个数乘以相关联的属性个数,一般企业管理系统可以达到10000倍以上。