• 《程序猿闭门造车》之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项目解决方案图





    这篇就到这里吧,下一篇将介绍流程引擎结构

  • 相关阅读:
    @topcoder
    @uoj
    Vue-路由跳转的几种方式和路由重定向
    Vue-设置默认路由选中
    Vue-使用webpack+vue-cli搭建项目
    Vue-状态管理Vuex的使用
    Vue-全局变量和方法
    JS-apply、call、bind
    CSS-禁止文本被选中
    Vue-路由模式 hash 和 history
  • 原文地址:https://www.cnblogs.com/tonymu/p/4187600.html
Copyright © 2020-2023  润新知