【笔记-软考】层次式架构-业务逻辑层架构设计

Author:赵志乾
Date:2024-07-28
Declaration:All Right Reserved!!!

1. 组件设计

        业务逻辑组件包括两部分:接口和实现,其中接口用于定义组件必须实现的方法,其可以让控制器面向接口编程,从而降低耦合性;而实现则基于DAO组件完成业务逻辑;

        系统实现所有后台逻辑后,向外提供一个统一的Facade接口,而前台层仅依赖于该Facade接口,实现前台层与业务层的解耦;

2. 实体设计

        业务逻辑层的实体提供对业务数据以及状态的访问,其支持序列化以便于跨网络传输或持久化。实体不直接访问数据库,全部的数据库访问都是由相关联的数据访问组件提供的。业务逻辑层的实体也不启用任何类型的事务处理,事务处理由业务过程来启动;

3. 工作流设计

        工作流:业务流程的全部或部分自动化,并在此过程中,文档、信息、任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标;其参考模型如下:     

  • 过程定义的导入导出接口:通过转换格式和API调用,完成过程定义信息转换;
  • 客户端应用程序接口:通过该接口,工作流机可以与任务表处理器交互,代表用户资源来组织任务。之后由任务表处理器负责从任务表中选择和推进任务项。
  • 应用程序调用接口:允许工作流机直接激活一个应用工具来执行某个活动;
  • 管理与监视接口:提供用户管理、角色管理、资源管理等功能;
  • 协作接口:定义相关标准,以使不同开发商的工作流系统产品相互间能够进行无缝的任务项传递;

        使用工作流的思想组织业务逻辑的优势在于:将应用逻辑与过程逻辑分离,在不修改具体功能的情况下,通过修改过程模型改变系统功能,完成对生产经营部分过程或全部过程的集成管理,有效地将人、信息和应用工具合理组织起来,发挥最大的效能;

4. 架构设计

        业务逻辑层采用容器方式来降低该层与相邻层间的耦合,例如:表示层只需将业务参数传递给容器,有效防止业务层代码渗透到表示层;在业务容器中,业务逻辑按照Domain Model-Service-Control思想实现,该思想将服务于服务的控制进行隔离,使程序具备高度的可重用性和灵活性;

  • Domain Model:领域层业务对象,仅包含业务相关属性;
  • Service:功能单元,其通过定义良好的接口或契约与其他部分联系起来,达到Service间的松耦合的效果;
  • Control:Service间的纽带,实现不同Service间的切换,以提高Service实现的灵活性和重用性;

        Domain Model、Service、Control之间的互动关系:

  • Service的运行依赖于Domain Model的状态,且Service会根据业务规则改变Domain Model的状态;
  • Control根据Domain Model的状态和相关参数决定Service之间的执行顺序以及相互关系;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2399. 检查相同字母间的距离(python3)

两种解法: 第一种,暴力解法,采用双重循环,解决问题(时间复杂度较高) class Solution:def checkDistances(self, s: str, distance: List[int]) -> bool:n len(s)for i in range(n):for j in range(i …

Hive3:Hive初体验

1、创建表 CREATE TABLE test(id INT, name STRING, gender STRING);2、新增数据 INSERT INTO test VALUES(1, 王力红, 男); INSERT INTO test VALUES(2, 钉钉盯, 女); INSERT INTO test VALUES(3, 咔咔咔, 女);3、查询数据 简单查询 select * from test;带聚合函数的查询 …

论文写作之latex配置(VSCODE+TEXT LIVE)

1.overleaf 初学者学习latex可以用这个练习,可以在线编辑十分方便,但是编译时间受限制 网站:https://www.overleaf.com/project 2.Tex live 选择一个.iso文件下载 网站:Index of /CTAN/systems/texlive/Images/ 下载成功&am…

exuberant ctags 支持 typescript 解析

exuberant ctags 支持 typescript 解析 exuberant ctags 是 GNU ctags 的替代品。 最近在看 nodejs 的项目代码,老规矩用它生成 tags 文件在 vim 中看。 可惜对于项目中的 typescript 文件,无法识别及解析。 查了下是否能让 ctags 支持 typescript 分析…

2024第三届钉钉杯大学生大数据挑战赛【A题】完整分享

2024第三届钉钉杯大学生大数据挑战赛已经开赛,小编给大家带来非常实用的助力【A题】完整,(看图片下方的说明),资料预览: 微信公众号

MongoDB流量分析

MongoDB流量分析通常指的是对MongoDB数据库的网络通信量、操作频率、性能指标和资源利用情况进行监控和分析的过程。这有助于理解数据库的负载、性能、潜在的瓶颈和安全状况,以便进行优化和维护。MongoDB流量分析可以涵盖以下几个方面: 网络流量监控&…

react Vant中如何获取步进器的值

在React中使用Vant(一个轻量、可靠的移动端Vue组件库,虽然原生是为Vue设计的,但如果你在使用的是React版本的Vant,比如通过某些库或框架桥接Vue组件到React,或者是一个类似命名的React UI库),获…

进阶篇,内附代码:锂电池二阶模型-离线与在线参数辨识

锂电池二阶模型-在线参数辨识 背景二阶等效电路模型介绍二阶模型的离线参数辨识二阶模型的RLS表达式递推代码已知问题背景 锂电池一阶戴维南等效模型的参数辨识方法,已经在前面两期详细地讲解了一轮。 一阶模型-离线参数辨识一阶模型-在线参数辨识本期继续讲解一下如何进行二…

多线程初阶(三)- 线程案例

目录 1.单例模式 (1)饿汉模式 (2)懒汉模式 前言 懒汉式1-synchronized加锁 懒汉式2-双重if保障 懒汉式3-volatile防止误判 2.生产者消费者模型 (1)阻塞队列 (2)优点 解耦…

@InitBinder 注解

InitBinder 注解 介绍 InitBinder注解可以作用在被Controller注解的类的方法上,表示为当前控制器注册一个属性编辑器,用于对WebDataBinder进行初始化,且只对当前的Controller有效。InitBinder标注的方法会被多次执行的,也就是说…

5万字长文吃透快手大数据面试题及参考答案(持续更新)

目录 Flink为什么用aggregate()不用process() 为什么使用aggregate() 为什么不用process() 自定义UDF, UDTF实现步骤,有哪些方法?UDTF中的ObjectInspector了解吗? 自定义UDF实现步骤 自定义UDTF实现步骤 UDTF中的ObjectInspector Spark Streaming和Flink的区别 Flu…

后端返回列表中包含图片id,如何将列表中的图片id转化成url

问题描述 如果我有一个列表数据,列表中每个对象都包含一个图片id,现在我需要将列表中的图片id转化成图片,然后再页面上显示出来 如果你有一个列表数据,列表中每个对象都包含一个图片 ID,并且你想将这些图片 ID 转化为…

鸿蒙OpenHarmony Native API【结构体】 头文件

OH_Drawing_BitmapFormat Overview Related Modules: [Drawing] Description: 结构体用于描述位图像素的格式,包括颜色类型和透明度类型 Since: 8 Version: 1.0 Summary Public Attributes Public Attribute NameDescriptioncolorFormatalphaFormat De…

在Spring Boot中实现异步处理与并发控制

在Spring Boot中实现异步处理与并发控制 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨如何在Spring Boot中实现异步处理与并发控制。这一过程涉及到异步任务的执行、…

QT:控件样式设置误区

当我设置不同控件格式样式,原先的代码如下 //设置MainWindow的背景R颜色this->setStyleSheet("QMainWindow{background-color:#F5F8FD;}");//设置菜单栏字体和背景颜色this->setStyleSheet("QMenuBar{color:#FFFFFF;background-color:#2A579A;…

PlantUML学习笔记-嵌入式系统设计常用图例

在嵌入式系统设计过程中,需要使用一些图例对系统框架及业务流程进行说明,以便于多人协同开发及后期的系统维护,提高团队开发效率。 1. 嵌入式设计开发常使用的图例: 1.1 用例图(Use Case Diagram) 用例图…

KamaCoder 99. 岛屿数量 + Leetcode 200. Number of Islands

99. 岛屿数量 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输…

【LeetCode】栈 - 20.有效的括号、150.逆波兰表达式求值、155.最小栈、栈的压入、弹出序列

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构 📚本系列文章为个人学…

【前端/js】使用js读取本地文件(xml、二进制)内容

目录 说在前面FileReaderDOMParser文本文件二进制文件 说在前面 浏览器版本:Microsoft Edge 126.0.2 (正式版本) (64 位) FileReader MDNFileReader 接口允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容&#x…

分布式光伏并网AM5SE-IS防孤岛保护装置介绍——安科瑞 叶西平

产品简介 功能: AM5SE-IS防孤岛保护装置主要适用于35kV、10kV及低压380V光伏发电、燃气发电等新能源并网供电系统。当发生孤岛现象时,可以快速切除并网点,使本站与电网侧快速脱离,保证整个电站和相关维护人员的生命安全。 应用…