Slickflow.NET 开源工做流引擎基础介绍(六)--模块化架构设计和实践

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

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

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

 

 

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

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

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

 

 

3. 模块化架构设计原则资源

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

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

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

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

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

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

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

 

4. 总结

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

相关文章
相关标签/搜索