asp审批系统源码
去年帮一个做企业内训的批系朋友改他们的审批流,翻出来一套2012年写的统源ASP审批系统源码。代码跑在Windows Server 2003上,批系IIS 6.0,统源数据库是批系Access。你没看错,统源Access。批系打开一看,统源整个审批逻辑塞在一个叫`approve.asp`的批系文件里,足足两千三百多行,统源VBScript和HTML搅在一起,批系缩进全靠Tab和空格混着来。统源 这套源码的批系核心其实就三张表:`flow_master`存流程定义,`flow_step`存节点,统源`flow_log`存审批记录。批系流程定义简单到粗暴——每个节点一个`step_id`,一个`role_id`,外加一个`next_step`字段。审批人登录后,系统根据他的`role_id`去`flow_step`里捞待办,捞到了就显示一个表单,上面两个按钮:同意、驳回。点同意,把`next_step`更新到当前记录上,流程往下走一格。点驳回,直接跳回上一个节点,连驳回意见都不强制填。 我印象最深的是权限判断那段。作者写了一个`checkRole`函数,里面是一长串If-ElseIf: 硬编码。加一个角色就得改代码、重新上传。朋友说他们去年想加一个“法务审核”节点,找外包改了三天,花了两千块。就为了在If-ElseIf里插一行。 表单提交那块也有意思。`Request.Form("action")`拿操作类型,`Request.Form("record_id")`拿记录ID,然后直接拼SQL: 没做任何过滤。我试着在URL里塞了个单引号,页面直接报错,Access的ODBC错误信息把数据库路径都吐出来了。这要放在公网上,半小时就能被人拖库。 但你说它完全不能用?也不是。这套系统跑了八年,处理了大概四万多条审批。朋友的公司总共就六十来人,流程简单——报销、请假、采购申请,三种。Access在局域网里并发二三十人完全扛得住。代码丑归丑,逻辑是通的。每个节点该谁审、审完往哪走、驳回回到哪,都写得明明白白。没有工作流引擎,没有可视化设计器,就是一张表加一堆If-Else,反而好懂。新来的IT花一个下午就能把整个流程摸清楚。 我后来帮他们重构了一版,用PHP加MySQL,把角色判断改成从数据库读,SQL全部参数化。但有个细节我保留了:审批日志表里加了一个`ip_address`字段。原版没有,但我觉得有用。谁在什么时间、从哪台机器点的同意,留个痕迹。朋友说这个功能他们后来真用上了——有一次两个经理互相推诿,说对方没审,翻日志一看,IP是同一个,时间差三秒,明显是同一个人代点的。 这套ASP源码现在还在他们内网跑着,当备份系统。新系统上线后没删,朋友说留着以防万一。我偶尔还会打开那个`approve.asp`看看,两千多行,像一栋老房子,砖缝里都是补丁,但住着不塌。技术这东西,有时候能用比优雅重要。尤其是小公司,流程没复杂到需要Activiti或者Flowable,一个ASP页面加Access,够跑十年。If role_id = 1 Then ' 部门经理 ElseIf role_id = 2 Then ' 财务 ElseIf role_id = 3 Then ' 副总 End Ifsql = "UPDATE flow_log SET status='" & action & "' WHERE id=" & record_id conn.Execute(sql)
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-