《程序猿闭门造车》之NBPM工作流引擎 - 项目整体架构
前言:
又是一年一度的圣诞节,可这关我什么事呢 :( ,好不容易周末了,还是说说NBPM吧,前不久我发布了一篇关于工作流的文章:《程序猿闭门造车》之NBPM工作流引擎 - 开篇,很多爱好工作流的小伙伴对该组件表示感兴趣,所以我打算写一个系列文章来介绍该组件的一些情况,给关心该组件的小伙伴们一些参考和帮助。
先列个目录吧(由于我工作比较忙,只能周末抽空来分享相关资料,进度上还希望大家理解):
01.《程序猿闭门造车》之NBPM工作流引擎 - 开篇02.《程序猿闭门造车》之NBPM工作流引擎 - 项目整体架构
03.《程序猿闭门造车》之NBPM工作流引擎 - 引擎结构分析(整体思路)
04.《程序猿闭门造车》之NBPM工作流引擎 - 引擎结构分析(动态表单实现)
05.《程序猿闭门造车》之NBPM工作流引擎 - 引擎结构分析(流程设计器实现)
06.《程序猿闭门造车》之NBPM工作流引擎 - 引擎结构分析(流程执行流程实现)
07.《程序猿闭门造车》之NBPM工作流引擎 - 系统集成实践
08.《程序猿闭门造车》之NBPM工作流引擎 - 系统组件扩展实践
09.《程序猿闭门造车》之NBPM工作流引擎 - 简易OA审批系统案例开发
10.《程序猿闭门造车》之NBPM工作流引擎 - 项目发展规划
------------------------------------------我是分割线------------------------------------------------
《程序猿闭门造车》之NBPM工作流引擎 - 项目整体架构
废话不说,先奉上架构设计图

说明:
1.基础环境层
这个没什么太多可说,很多系统架构图都是这么设计的,我也这样子画吧。不过有三点:
a. 目前使用.NET4.0开发,不过可以换成任意版本,只是部分工具依赖问题需要解决(如Newtonsoft.Json等);
b. 该项目目前使用.NET(C#)开发,以后等项目成熟了,时间充足了,也 许 可 能 大 概 会实现其他语言的版本(如java,php等),不过那是后话,看后面发展的怎么样,说不定中途就没戏了也有可能;
c. 目前使用.NET开发,但是我在组件依赖上,刻意留意了跨平台支持,理论上允许在Linux等平台部署(by mono),不过需要后续的测试和验证。
2.基础设施层
该层作为程序的最底层,提供了如下几类组件:
- 流程中的数据库实体(Entity)
- 流程中的视图模型(ViewModel)
- 流程中可能会用到的配置文件值的读取(Config)
- 外部数据对象接口
- 外部数据提供程序接口
- 流程数据访问接口
- 日志记录接口
- 规则计算接口
- 流程异常
3.数据持久层
该层的目的就是为流程引擎提供数据库底层访问支持,该层实现了“基础实施层”中的“流程数据访问接口”,默认我实现了EF6和ADO.NET版本两个数据库访问层(需要配置一下配置文件,如数据库类型,数据库连接字符串等);
当然,该层完全可以由第三方实现提供,因为该系统采用了IOC(控制反转)的编程方式,只要实现了“基础实施层”中的“流程数据访问接口”的类,都可以作为组件使用,具体实现方式后面的文章“08.《程序猿闭门造车》之NBPM工作流引擎 - 系统组件扩展实践”会介绍原理以及如何实现;
该层需要注意的是:由于作为IOC组件存在,所以可以使用任意类型的数据库。
4.核心业务层
该层为NBPM最重要的灵魂组件,实现了表单管理,流程管理,规则计算,流程执行等重要操作,具体原理请参考后续文章。
该层需要以下IOC组件:流程数据库访问组件、日志记录组件、规则计算组件。以上三类组件我都默认提供了,不过完全可以第三方自行实现,只需要依赖“基础设施层”并实现相关接口即可。
5.资源层
该层主要包含前端资源和SDK及常用工具:
前端资源有图片,样式表,js脚本等,表单设计器,流程设计器,流程表单自动生成,都大量使用了js;
SDK封装了“核心业务层”中的重要服务类,主要含:管理类服务(Manager)、操作类服务(Client);管理类服务,主要实现对表单流程等维护工作;操作类服务主要实现流程实例的发起、驱动、计算待办等工作;
工具主要实现“基础实施层”中的“日志记录接口”和“规则计算接口”,常用工具组件默认实现在NBPM.Util程序集中,其中日志采用了log4net,规则计算采用了Lua。
6.应用层
该层为最终应用程序,通过对资源层的引用,实现对流程的维护,使用等;
该层需要实现“基础实施层”中的“外部数据接口”和“外部数据提供程序接口”,用于将第三方系统数据与NBPM集成,比如用户组织、参数、字典等数据;
该层可以是Webform项目,也可以Asp.net MVC项目。
以上就是NBPM架构设计的大体思路,如果各位小伙伴有好的建议,望不吝指点。
------------------------------------------我也是分割线----------------------------------------------
附: NBPM项目解决方案图

这篇就到这里吧,下一篇将介绍流程引擎结构
《程序猿闭门造车》之NBPM工作流引擎 - 项目整体架构的更多相关文章
- 《程序猿闭门造车》之NBPM工作流引擎 - 开篇
自己动手,丰衣足食,花了几个周末的休息时间,写了一个轻量级工作流引擎,一来学习技术,二来陶怡情操,暂且命名为NBPM,欢迎围观~~~ 主要功能有: 基于浏览器的在线流程及表单设计 提供流程及表单数据版 ...
- C/C++程序猿必须熟练应用的开源项目
作为一个经验丰富的C/C++程序猿, 肯定亲手写过各种功能的代码, 比方封装过数据库訪问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件訪问的类, 封装过UI界面库等, 也在实际的项目中应 ...
- 说说 MicroPython 的项目整体架构
今天来说说 MicroPython 的架构情况,如果有必要我会做一些源码分析的文章供大家参考. 先来认识一下 MicroPython 整体情况,可以从软件的角度上去看待,首先我们拿到 MicroPyt ...
- Vue项目整体架构记要
此文记录初次学习Vue的一些记要,可做为参考,导图有些生涩,故意不再加以修复完善,以持初心!
- 做一枚精致的程序猿,Fighting!
这几天我和我们的团队正在做一个公司管理系统的项目,团队分工根据成员的水平高低来分工,这样看似公平,但其实不公平,如此这样一来,那些水平稍不如别人的成员就没有发展的机会?那么问题来了,对于水平稍逊色的程 ...
- Workflow-产品:泛微工作流引擎
ylbtech-Workflow-产品:泛微工作流引擎 1.返回顶部 1. 工作流引擎平台技术架构 TECHNOLOGY FRAMEWORK 高度协同系统各应用模块 泛微工作流引擎平台是整个协同办公平 ...
- F2工作流引擎这工作流引擎体系架构(二)
F2工作流体系架构概览图 为了能更好的了解F2工作流引擎的架构体系,花了些时间画了整个架构的体系图.F2工作流引擎遵循参考WFCM规范,目标是实现轻量级的工作流引擎,支持多种数据库及快速应用到任何基于 ...
- E8.Net 工作流二次开发架构平台
一. 产品简介 E8.Net工作流开发架构是基于微软.Net技术架构的工作流中间件产品,是国内商业流程管理(BPM)领域在.Net平台上的领先产品,是快速搭建流程管理解决方案的二次开 ...
- 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构
系列目录 一. 创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...
随机推荐
- Android内嵌PDF预览
一.在对应模块的build.gradle文件中加入依赖 dependencies { implementation 'com.github.barteksc:android-pdf-viewer:3. ...
- 【合集】Hadoop 合集
0. 说明 Hadoop 随笔的目录 1. HDFS 主要内容: [HDFS_1] HDFS 的概念和特性 [HDFS_2] HDFS 的 Shell 操作 [HDFS_3] HDFS 工作机制 [H ...
- 第十四届智能车培训 PLL锁相环
什么是锁相环? PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时脉讯号,使高频器件正常工作,如内存的存取资料等.PLL用于振荡器中的反馈技术. 许多电子设备要正常工作 ...
- JavaScript -- 时光流逝(六):js中的正则表达式 -- RegExp 对象
JavaScript -- 知识点回顾篇(六):js中的正则表达式 -- RegExp 对象 1. js正则表达式匹配字符之含义 查找以八进制数 规定的字符. 查找以十六进制数 规定 ...
- linux中find命令高级用法
前言 在<Linux中的文件查找技巧>一文中,我们已经知道了文件查找的基本方法,今天我们介绍find命令的一些高级使用技巧.它能满足我们一些更加复杂的需求. 查找空文件或空目录 有时候需要 ...
- Linux中的文件查找技巧
前言 Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用. witch witch命令会在P ...
- Spring事务管理2--声明式
简述 1.Spring 的声明式事务管理在底层是建立在 AOP 的基础上.其本质是在方法前后进行拦截,然后在目标方法开始之前创建一个事务,在执行这目标方法结束后,根据执行情况提交或进行回滚事务. 2. ...
- 【夯实PHP基础】PHPUnit -- PHP测试框架
本文地址 分享提纲: 1.概述 2.安装 3.编写第一个测试用例 4.PHPUnit高级 5.参考 1.概述 1)[测试框架] 它是一款轻量级的PHP测试框架,是一个xUnit的体系结构的单元测试框架 ...
- PostGIS中dbf file (.dbf) can not be opened.shapefile import failed
postgis数据库文件shapefile导入 dbf file (.dbf) can not be opened.shapefile import failed. Destination: publ ...
- Linux三剑客-AWK
1.什么是awk AWK是一种处理文本文件的语言,是一个强大的文本分析工具.有统计和计算功能. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Br ...