admin 管理员组

文章数量: 1184232


2024年4月15日发(作者:layui提示框)

基于Nodejs的定制化流程引擎设计与实现

遇宇

(神华准能有限责任公司,内蒙古鄂尔多斯010300)

摘要院目前,大型企业的业务流程因每个单位或部门的工作性质而或多或少有差异,因此流程管理

也成为难题,本设计实现开发人员在程序开发阶段将流程引擎与业务系统结合,业务管理人员不需要

开发人员的参与下定制业务流程。技术以Nodejs为服务端,MySQL为数据库,以请求的方式调用引擎

提供的接口,返回JSON,方便系统处理。

关键词院流程引擎;节点控制;Nodejs编程语言

1项目背景

随着科学技术的不断发展袁信息化越来越成为一种

趋势遥在各行各业的工作中袁都离不开流程的控制遥因

此在工业系统或应用系统的开发阶段袁流程管理是一个

非常重要的中间环节遥假若做成简单的固定审批流程袁

规模较大的企业因为人员组织机构的复杂及个性化需求

较多袁则无法保证每一条固定审批流程满足要求袁亦或

前期的业务需求调研繁琐尧无法深入各个部门而导致开

发周期增长遥现在有成熟的流程引擎框架Activiti或

Spring-webflow袁

是文字编写的交互方式

一个是图形化界面的交互方式

袁两个框架均基于XML

文件传

一个

输流程数据

[1]

业务需求调研结果开发定制流程

袁在系统开发时袁是由软件开发人员通过

袁同样不能满足上述业

务部门管理者自由定制流程的过程遥

设计是一套由业务管理人员定制化的流程引擎遥在

程序开发阶段袁程序员只需将流程引擎与现有系统结

合袁流程定制环节均交由业务部门管理人员自主操作袁

这样能够在程序开发前期节省业务调研时间袁缩短开发

周期遥在系统使用过程中袁业务人员能够发现流程的问

题袁在不需要开发人员的参与下做出及时调整袁节省运

营时间与改造成本

2关键技术

袁进一步到达降本增效的目的遥

采用的编程语言是Nodejs遥Nodejs是基于chrome

的V8引擎执行的事件驱动I/O服务端的JavaScript环

[2]

此袁

使用较少量的代码

简单来说袁就是运行在服务器端的

袁就可实现一个简单的服务器

JavaScript袁因

其中服务器的安全配置尧Session配置尧请求配置尧响

应配置尧路由配置等袁均可以使用其他中间件来实现袁

也使得开发人员根据个性化需求设置服务器的配置袁相

比tomcat尧jetty等成熟服务器容器袁Nodejs设计出的服

务器容器更加轻量尧快捷和稳定袁也使得开发人员能

将更多的时间和精力专注于具体事务和逻辑控制遥在

较早的Javascript版本中袁回调函数的不断嵌套一直困

扰着开发人员调试程序袁但是在ES6的promise语法出

来之后袁解决了回调嵌套问题袁同时袁Nodejs也支持

promise

有丰富的第三方库作支持

语法袁大大降低开发人员调试的难度

袁包括MySQL数据库驱动

遥Nodejs

Express

发所需要的基本技术手段

服务器框架尧HTTP

请求体解析等

数据是重要信息的支撑

袁满足引擎开

袁数

据库是数据持久化的方式之一袁因此数据库采用

MySQL袁

快袁易于安装使用

其是一个开源的关系型数据库

袁提供的免费服务已足够设计使用等

遥体积小袁速度

许多优势袁使得MySQL数据库服务作为程序设计的首

选数据库遥从版本5.0以后袁提供用于优化尧检查的管

理工具曰并且支持Linux尧MacOS尧Windows等多种操

作系统袁为多种编程语言提供了API

[3]

分利用CPU资源曰支持多用户同时在线

曰支持多线程

袁在图形化的

袁充

管理界面可直接配置曰优化的SQL查询算法袁有效地

提高查询速度

3设计与实现

3.1

数据库设计如图

数据库

1所示袁目前总共有7个表袁分别

为节点信息表尧节点流程对应表尧节点角色对应信息补

充表尧流程信息表尧事件信息表尧事件历史信息表尧事

件对应流转意见表遥其中袁节点信息表用来存储新增的

作者简介:遇宇渊1991-冤袁男袁学士袁科员袁工程师袁

研究方向院软件开发尧深度学习与机器学习遥

2020.11

39

流程节点信息袁包括节点主键尧节点名称尧节点描述尧

创建者及其部门信息袁对应的角色信息袁是否能够共

享袁是否能够重复使用等遥节点流程对应表用来存储节

点与流程的隶属关系袁包括主键尧流程主键尧节点主键

及名称尧节点的父节点主键尧节点的排序等级尧节点的

子节点主键袁当前节点是否为结束节点等遥节点角色对

应信息补充表用来将流程信息尧节点信息与人员角色信

息尧权限菜单信息相关联袁包括主键尧流程主键尧流程

节点对应关系主键尧节点主键尧人员角色信息尧权限菜

单信息尧人员主键尧单位尧部门信息尧是否可以使用禁

用等遥流程信息表用来存储新增的流程信息袁包括流程

主键尧流程名称尧流程状态尧流程描述尧流程类型尧流

程创建者及其部门信息袁是否能够共享等遥事件信息表

用来存储经过流程后当前的流转信息袁包括主键尧创建

事件人及其打算单位部门尧流程主键尧当前流程中节点

在该流程中的主键尧当前流程中节点的主键尧下一节点

在该流程中的主键尧下一节点的主键尧反馈信息尧事件

状态等遥事件历史信息表用来存储已经在流程中执行后

的流转信息袁包括主键尧事件主键尧创建人相关信息尧

流程主键尧当前流程中节点在该流程中的主键尧当前流

程中节点的主键及其名称袁下一节点在该流程中的主

键尧下一节点的主键及其名称尧流程中的流转备注文字

信息尧流程的正反流向渊正为向流程终结点袁反为向流

程起始点冤等遥事件对应流转意见表用来存储流程正反

执行过程中的意见信息袁包括主键尧事件主键尧当前流

程中节点在该流程中的主键尧意见信息及内容等遥

图1流程引擎数据库设计

40

2020.11

3.2

后端使用

程序结构

Nodejs搭建服务器袁其程序结构设计如

图2所示袁根据逻辑功能将设计分为袁common通

用层袁routers路由层袁services服务层遥是程序的

入口袁用来对开发使用的中间件袁cookie配置袁session

配置袁请求头部和请求响应渊正常访问袁404袁500等冤

处理遥common通用层用来管理程序的常量信息袁数据库

连接函数袁cookie的加密设置遥routers路由层用作请求

到来时路由地址的匹配袁所有请求均采用post请求方

式袁请求体中的用户名和密码作为每次请求时的验证信

息袁考虑到token会有时效问题而未采用token的验证方

式遥services服务层用来执行请求的逻辑业务函数袁au鄄

用各个功能函数

用以验证请求的身份信息并匹配请求地址调

曰存放函数执行的通用函数袁

比如生成36位主键袁日期处理等曰用来处理事

件的所有逻辑功能袁按照功能将函数分为根据条件获取

事件的信息袁事件保存尧删除尧提交袁事件历史信息袁

获取当前流程节点的下一级节点列表等曰

用来处理事件的配置信息袁功能包括增加尧修改尧删除尧

查询配置信息袁查询用户是否已经选择流程袁查询菜单

是否已经关联流程等曰用来处理流程的所有逻辑

功能袁按照功能将函数分为增加尧修改尧删除尧查询流

程信息等曰用来处理节点的所有逻辑功能袁按照

功能将函数分为增加尧修改尧删除尧查询节点信息等遥

图2程序结构

前端使用JavaScript处理程序菜单点击事件袁流转

信息选择事件遥点击系统菜单的流程事件如图3所示袁

进入系统功能袁程序会发送post请求响应到Nodejs服

(下转第65页)

作为一款校园软件袁既为班级信息管理提供了新的途

径袁是校园信息化发展的重要标志袁也方便学生及时掌

握信息动态遥设计界面操作简单易用袁提高班级信息管

理部门的整体工作效率袁并为学生提供实时灵活方便的

教务信息服务遥促进了班级信息管理工作的规范化尧科

学化袁使班级信息管理变得信息化遥

参考文献

[1]郭霖.第一行代码Android.2版.人民邮电出版社,

2016.

[2]欧阳燊.AndroidStudio开发实战院从零基础到App

上线.2版.清华大学出版社,2018.

线互联科技,2016,22.

[3]易灿.基于Android的班级信息管理系统设计.无

[4]徐萍.基于Android平台的移动教学信息管理系统

设计与实现.软件导刊,2016,(11):128-130.

与实现.北京工业大学,2016.

[5]魏靖.基于Android平台的移动教务管理系统设计

(上接第40页)

务器用来判断当前用户角色存在流程信息袁若不存在袁

则根据系统的权限进入只读模式袁无法做任何操作袁若

存在袁则根据后端服务器返回的JSON参数判断是否有

未初始化的流程关联袁若不存在袁则说明已经全部关

联袁直接显示当前角色权限下的数据袁若存在袁弹出流

程选择窗口界面让业务人员根据需要自己选择对应的流

程信息袁若业务人员正确选择后袁则显示当前角色权限

下的数据袁若业务人员不知如何选择袁可以选择取消或

关闭袁系统会自动判断之前是否有选择流程袁若之前不

存在袁则提示无显示权限袁若之前存在袁则直接显示当

前角色权限下的数据遥系统业务管理员可以对业务操作

人员的流程误选进行更改或删除袁更改后业务人员刷新

页面即可查看当前数据内容袁删除后刷新页面会重新弹

出流程选择窗口界面供业务人员重新选择遥

开始

系统功能进入

4结语

设计用来解决开发人员无法及时调整业务管理人员

对流程个性化的需求袁即使开发人员不能了解最新的业

务流程流转信息袁但是业务管理人员可以根据自己所在

单位部门袁配置和本单位或部门相适应的流程袁缩短流

程调整周期袁节省开发及维护成本遥

设计还有许多其他设想作为后续的改进袁首先袁在

前端界面展示袁程序可以调用流程的JavaScript脚本袁

系统功能确认或提交时弹出流转窗口袁其中界面包含当

前流程的上一流转节点或下一流转节点尧下一流转节点

人员选择尧流转意见尧流程图展示等遥然后袁节点关联

人员的角色信息袁可以扩展为一对多的关系袁即一个节

点对应多个人员角色袁若使用多角色关联袁则使用

mongodb数据库和MySQL数据库相结合的方式袁将节

后袁建立一套流程管理系统袁包含新建流程节点尧流程

测试尧流程配置尧系统接口接入尧系统信息渊角色尧用

户尧部门尧菜单冤抽取尧统计各个使用流程的系统使用

情况等功能遥

参考文献

[1]简书.Activiti,2020,(08).

[2]菜鸟教程.教程,2020,(08).

点与人员角色关联的数据存储到mongodb数据库中遥最

判断当前用户

角色是否存在

流程信息

判断是否有未

初始化的流程

关联

根据系统权限进入

只读模式

根据系统权限进入

显示模式

[3]开源软件.数据库服务器MySQL,2020,(08).

进入无显示权限

模式

在弹出界面中选择

显示当前用户角色

取消或关闭

的流程信息

确认

进入显示模式

之前是否有

流程权限

结束

图3点击系统菜单的流程

2020.11

65


本文标签: 流程 信息 节点 主键 系统