前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用;而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好便捷。

1. 未采用模块化设计之前的项目结构

在引擎内部,创建了Resource的目录,用于组织机构模型数据的处理,而且仅作了用户和角色相关的数据读取,未涉及到组织机构模型;比如部门和员工等信息。这样当用户集成自己的组织架构模型时候,就要扩展此部分代码,对引擎内部的统一性造成一定影响,不便于用户的后期版本升级。

2. 采用模块化设计之后的项目结构

新增加了Slickflow.Module项目,用于统一定义所有的模块化接口,包含组织机构模型接口。后期可能新增加的模型有权限模型,数据对接模型等。在Slickflow.Module项目里面主要申明标准接口和实体的定义。实体用于引擎组件内部使用,假如企业客户所使用的实体属性字段不同,需要做实体之间的转换。

添加Slickflow.Module项目之后,也就是要对标准接口和实体进行实现,比如Slickflow.Module.Resource项目就是对组织机构模型的具体实现,每个企业客户关于自有的组织机构模型业务代码,就可以添加到这里。用户不用关注引擎内部,而直接在该项目中修改增加代码即可。这样做到了组织机构模型跟引擎内部逻辑的分离。

3. 模块化架构设计原则

为何要进行模块化设计? 在引擎组件集成过程中,引擎内部功能虽然比较稳定,但是组织架构等模块却容易引起变化,如何方便用户修改扩展通常带来一定的困扰。而采用模块化架构设计后,问题被分离出来,首先定义好标准化的接口和实体,然后客户自己实现自有的模块项目就可以。这样保证了系统在整体性上的稳定。

1) 始终分离容易变化的部分

个体功能的多样性是一种自然存在的法则,不能强求用户的意志,而要从系统上做到包容。包容的方式就是将变化的部分分离出来,让用户自己去实现各种特性,从而达到对业务集成的满意度。

2) 保持核心功能的稳定性

在分离变化的部分后,引擎提供的核心功能会更加稳定,模块化的组件会被按照依赖注入的方式被引入到引擎组件内部,外部的模块和引擎内部做到了一种合理的交流交互。

3) 方便核心功能的后期升级

引擎版本会不断升级,模块的标准化接口也会不断升级。在采用模块化架构设计后,用户会关注两个升级指标,一个是引擎核心功能,一个是标准化的模块定义。职责上的分离,将会帮助客户认识系统核心和外部模块的边界,保持对引擎组件的熟悉。

4. 总结

Slickflow项目组致力于良好的软件架构设计,模块化架构设计和实践是我们在设计引擎组件过程中的原创思路,其目的是让用户始终能够升级和扩展工作流系统,保持整个系统的稳定性。欢迎读者继续关注和使用Slickflow.NET 引擎组件。

Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践的更多相关文章

  1. Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现

    前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现.默认的分支类型是静态定义好的.本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关, ...

  2. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务模块的交互

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  3. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  4. Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍

    1. 工作流术语图示                                              图1 流程图形的BPMN图形元素表示 1) 流程模型定义说明流程(Process):是企 ...

  5. Slickflow.NET 开源工作流引擎基础介绍(九) -- .NET Core2.0 版本实现介绍

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

  6. Slickflow.NET 开源工作流引擎基础介绍(八) -- 自动化任务调度实现介绍

    前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发.因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块. 1. 任务调度框架选择 Hangfi ...

  7. Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

  8. Slickflow.NET 开源工作流引擎基础介绍(四) -- 多数据库支持实现

    前言:引擎作为中间件集成到用户的项目里面去,针对用户的数据库类型,需要作出SQL部分的分别实现.引擎默认数据库为MS SQLSERVER,同时也支持ORACLE, MYSQL, KINGBASE等不同 ...

  9. Slickflow.NET 开源工作流引擎基础介绍(五) -- 会签加签高级特性介绍

    前言:会签和加签是常见审批流程模式,在引擎中,对这两种流程模式做了分别定义和实现,其中也用到了Workflow Pattern的Multiple Instance(多实例) . 1. 会签和加签的定义 ...

随机推荐

  1. SGU 171 Sarov zones (贪心)

    题目   SGU 171 相当好的贪心的题目!!!!! 题目意思就是说有K个赛区招收参赛队员,每个地区招收N[i]个,然后每个地区都有一个Q值,而N[i]的和就是N,表示总有N个参赛队员,每个队员都有 ...

  2. VHDL TestBench基础(转)

    TestBench的主要目标是: 实例化DUT-Design Under Test 为DUT产生激励波形 产生参考输出,并将DUT的输出与参考输出进行比较 提供测试通过或失败的指示 TestBench ...

  3. 【JDBC】事务的使用

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html 关于事务的理论知识.ACID特性等等,网上太多了,在此不一一重复.本文主要着重  事务 ...

  4. 菜鸟学习 git

    到新公司学习和使用 git 有一段时间了.不得不说 git 真的很牛逼,当然,git 的牛逼是建立在 Linux 之父的牛逼的基础上的. 首先跪着推荐 git 学习网站:http://www.liao ...

  5. Hadoop对小文件的解决方式

    小文件指的是那些size比HDFS的block size(默认64M)小的多的文件.不论什么一个文件,文件夹和block,在HDFS中都会被表示为一个object存储在namenode的内存中, 每一 ...

  6. Codeforces Gym 100610 Problem A. Alien Communication Masterclass 构造

    Problem A. Alien Communication Masterclass Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codefo ...

  7. delphi Components[i]清除所有edit控件中的内容

    (* 一般的清空combobox方法 combobox1.clear; ... combobox9.clear; *)   procedure TForm1.Button1Click(Sender: ...

  8. HTTP协议报文、工作原理及Java中的HTTP通信技术详解

    一.web及网络基础       1.HTTP的历史            1.1.HTTP的概念:                 HTTP(Hyper Text Transfer Protocol ...

  9. androisd wifi

    http://blog.csdn.net/yunjinwang/article/details/11968837 http://blog.csdn.net/yunjinwang/article/det ...

  10. CDHtmlDialog加壳HTML5页面跳转错误解决(原)

    HTML5+Native方式开发应用程序,遇到的一个问题:HTML5实现的阅读器在打开文档时,CDHtmldialog类的跳转函数报错,忽略错误程序可以正确执行. 错误代码:OnNavigateCom ...