RoadFlow开源工作流源码-项目架构分析

项目文件结构:

很明了一个标准的三层架构的系统。

表示层:Web

业务层:Business

数据访问层:Data

另外存在缓存层:Cache缓存

增加公共使用类库:Utility

下面以一个实例(系统登陆为例)来讲解各层之间如何调用:

系统登陆界面跳到Login1.aspx页面。

查看后面登陆界面代码,当点击登陆按钮时页面会触发Page_Load事件,然后判断是IsPostBack时,表示是提交的登陆按钮操作时,调用check方法来验证登陆信息。

protected void Page_Load(object sender, EventArgse)

{

if (IsPostBack)

{

check();

}

}

然后看下check方法的代码。

/表示层调用业务层代码/

// RoadFlow.Platform.Users这里先调用业务层的对象RoadFlow.Platform.Users

RoadFlow.Platform.Users busers = newRoadFlow.Platform.Users();

//业务层调用的是GetByAccount方法

var user =busers.GetByAccount(account.Trim());

if (user == null ||string.Compare(user.Password, busers.GetUserEncryptionPassword(user.ID.ToString(),password.Trim()), false) != 0)

{

Session[isVcodeSessionKey]= "1";

RoadFlow.Platform.Log.Add("用户登录失败",string.Concat("用户:", account, "登录失败,帐号或密码错误"),RoadFlow.Platform.Log.Types.用户登录);

Script = "alert('帐号或密码错误!');";

}

业务层代码///

/// <summary>

/// 根据帐号查询一条记录

/// </summary>

public RoadFlow.Data.Model.Users GetByAccount(string account)

{

return account.IsNullOrEmpty() ? null : dataUsers.GetByAccount(account);//业务层调用数据访问层代码

}

访问层代码///

IUser接口

/// <summary>

/// 根据帐号查询一条记录

/// </summary>

RoadFlow.Data.Model.Users GetByAccount(string account);

RoadFlow.Data.Factory

通过工厂模式来调用数据访问层具体类,如MSSQL类,以后要扩展其它数据库请重写此类扩展多数据库,如增加Data.Oracle数据访问层,然后工厂方法调return new Data.Oracle.Users()。现在代码是调用的MYSQL数据库访问层具体实现类。

public static Data.Interface.IUsersGetUsers()

{

return new Data.MSSQL.Users();

}

RoadFlow.Data.MSSQL实现代码

/// <summary>

/// 根据帐号查询一条记录

/// </summary>

public RoadFlow.Data.Model.Users GetByAccount(string account)

{

string sql = "SELECT * FROM Users WHERE Account=@Account";

SqlParameter[] parameters = new SqlParameter[]{

newSqlParameter("@Account", SqlDbType.VarChar, 255){ Value = account }

};

SqlDataReader dataReader = dbHelper.GetDataReader(sql, parameters);

List<RoadFlow.Data.Model.Users> List =DataReaderToList(dataReader);

dataReader.Close();

return List.Count > 0 ? List[0] : null;

}

这样就完成了表示层访问数据库的整个流程,可能在查询数据时在业务层会增加从缓存中查询数据,这样就不从数据库查,如果缓存不存在即从数据库查询,减轻数据库的负担。但这样对调试不方便,每次要调试有缓存的代码需要半闭IE,重新启动调试。

后续将分析

前台框架技术

数据字典

用户权限管理

配置和使用一个工作流

工作流分支管理

为工作流节点添加事件

......

RoadFlow项目架构分析相关推荐

  1. RoadFlow开源工作流源码-项目架构分析

    项目文件结构: 很明了一个标准的三层架构的系统. 表示层:Web 业务层:Business 数据访问层:Data 另外存在缓存层:Cache缓存 增加公共使用类库:Utility 下面以一个实例(系统 ...

  2. 大数据日志分析项目架构

    老是弹出由于您编辑时间过长,页面和服务器之间的连接已断开,请先将文章内容另外保存,再刷新本页面继续编辑让我保存页面我也是醉了,图片多没法一次上传,上传图片还一直失败,我只好都放在一个附件里面了.阿里能 ...

  3. b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释

    b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释 我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构. 实际情况是要建立一个bs架构b2b.b2c的网站,当然还包括w ...

  4. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...

  5. 饿了么开源项目Hermes跨进程架构分析1-服务端注册

    文章目录 1 注册实现 1.1 创建aidl文件 1.2 服务端实现 1.2.1 HermesService 1.2.2 创建Request和Responce 1.2.3 创建单例UserManage ...

  6. 饿了么开源项目Hermes跨进程架构分析2-客户端连接

    饿了么开源项目Hermes跨进程架构分析1-服务端注册 饿了么开源项目Hermes跨进程架构分析2-客户端连接 文章目录 2客户端连接 2.1 SecondActivity 2.2 Hermes 2. ...

  7. 大数据项目之_15_电信客服分析平台_0102_项目背景+项目架构+项目实现+数据生产+数据采集/消费(存储)

    大数据项目之_15_电信客服分析平台_01&02 一.项目背景 二.项目架构 三.项目实现 3.1.数据生产 3.1.1.数据结构 3.1.2.编写代码 3.1.3.打包测试 3.2.数据采集 ...

  8. 电商项目开发(系统功能分析、架构分析)

    文章目录 电商行业特点 常见的三种电商模式 系统功能分析 项目开发人员分配 技术选型与开发环境 技术 开发环境 架构分析 集中式 分布式 电商行业特点 技术范围广 分布式(一件事,拆开来做,例如,定个 ...

  9. Go后台项目架构思考与重构 | 深度长文

    作者 | 腾讯云后台工程师黄雷 编辑 | 唐小引 来源 | CSDN(ID:CSDNnews) 引言 本文首先介绍了架构的重要性,随后从一个实际项目的重构过程作为主线,逐步引出主流的架构设计思想以及其 ...

最新文章

  1. C语言的基础题目,几个c语言的基础题目
  2. 通过yum安装配置lamp
  3. (转载)BeanUtils.copyProperties() 用法
  4. 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )
  5. swift 网络请求中含有特殊字符的解决方案
  6. word打开文档很久很慢_word文档打开特别慢怎么解决,word10打开文档很慢
  7. HDU3634(矩形切割)
  8. 网站 HTTP 升级 HTTPS 完全配置手册
  9. 第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)
  10. 作者:杜克明(1980-),男,中国农业科学院农业环境与可持续发展研究所助理研究员。...
  11. 网站流量和金钱的关系
  12. PHP学习笔记之PDO
  13. 上位机与1200组态步骤_新入S7-1200系统值得注意几点(博图平台)
  14. 程序员Java代码不会写,菜鸡程序员都是怎样写代码的?
  15. 不光荣的“革命”——“甘露之变”后的晚唐政治
  16. rtmp协议 java_rtmp协议详解 (一) handshake
  17. android 开发日积月累,移动端h5开发常用ui框架
  18. 简单实现图片转彩色字符画
  19. 中国的KNX 智能家居系统,将实现最高级别的安全保障!
  20. 罗技 无线鼠标 USB HID数据格式

热门文章

  1. Linux下的U盘测速
  2. 强烈推荐脑图软件 xmind
  3. 我的数据科学成长之路:从菜鸟到最年轻Kaggle X2 大师
  4. 2023年二月TIOBE编程语言排行榜TIOBE Index for February 2023
  5. 连载神器测评:这是我用过最好的免费看小说软件
  6. 学习 stm32 FATFS 系统文件函数使用和学习查看说明以及常用函数例程
  7. 添加课程素材、导入录音
  8. 为什么 Paint 3D 无法支持大尺寸图像(例如 9825 x 9908 像素)并且在背景去除过程中会出现 downsiding 问题
  9. 计算机写给未来自己的一段话,给计算机老师一句话寄语
  10. iOS 图片剪裁(附demo下载)