OpenJWeb 功能开发实例—简易审批流功能实现
目 录
一、 业务需求描述..................................................................................................................................3
二、 关于审批流......................................................................................................................................3
2.1 审批流配置.....................................................................................................................................3
2.2 关于简易审批工作流的几个特点.................................................................................................5
三、 OPENJWEB 平台开发示例...........................................................................................................5
3.1 定义事务性计划表(WF_WORK_PLAN)............................................................................................6
3.2 定义事务性计划表(WF_WORK_PLAN)的字段................................................................................6
3.3 在平台中创建数据库表.................................................................................................................9
3.4 在平台中自动生成功能维护页面...............................................................................................10
3.5 编译后进入系统查看生成的列表页和编辑页............................................................................11
四、 权限体系........................................................................................................................................13
4.1 首先维护组织机构和登录帐号...................................................................................................13
4.2 角色维护.......................................................................................................................................14
4.3 权限树维护及权限分配给角色...................................................................................................15
4.4 将已分配权限的角色授权给用户...............................................................................................16
4.5 按不同角色登录系统...................................................................................................................16
五、 数据权限........................................................................................................................................18
六、 数据权限计算中的角色交叉问题................................................................................................19
七、 控制层中的审批算法....................................................................................................................20
2
OpenJWeb 功能开发实例—简易审批流功能实现
一、业务需求描述
本文主要讲述如何使用 OpenJweb 快速开发平台快速定制开发一个简单的单据审批流
程,本文采用某电厂事务性计划审批流程作为具体案例来讲解。
电厂的事务性计划每月由各部门的部门计划员填写,填写完毕后由部门计划员提交给
分管厂长送审(计划检查人),分管厂长审批通过后,提交给厂计划员审核,厂计划员审
核通过后提交给总经理审核,总经理审核通过后由厂计划员发布。其中厂计划员可以代理
分管厂长审批计划。任一环节审核拒绝后都可以由计划填写人删除或修改。
二、关于审批流
2.1 审批流配置
针对以上所述流程,一个事务性计划的具体审批流程见下表:
序
号
动作码 动作名称 前置状态位 后置状态位 业务描述
1 doCheck1
分 管 厂 长
审批
送 审
(SendCheck)
分管厂长审核
通过(pass1)
部门计划员送审计划后,由分管厂
长审批
2 proxyPass1
代 理 分 管
厂长审批
送 审
(SendCheck)
分管厂长审核
通过(pass1)
当分管厂长因出差等原因无法登
录系统,厂计划员可在页面上点
代理分管厂长审批按钮
3 doCheck2
厂 计 划 员
审批
分管厂长审核
通过(pass1)
厂计划员审批
通过(pass2)
厂计划员审批分管厂长审批通过
的计划
4 doManagerCheck
总 经 理 审
批
厂计划员审批
通过(pass2)
总经理审批通
过(pass3)
总经理审批厂计划员审批通过的
计划
5 doPublish
计划发布 总经理审批通
过(pass3)
已 发 布
(Publish)
厂计划员发布总经理审批通过的
计划,发布后,所有人都可以看
到这个计划
6 doReject1
分 管 厂 长
审核拒绝
送 审
(SendCheck)
审 核 拒 绝
(Reject)
在页 面中 公用 一个 审核 拒绝 按
钮,由于系统中可以设置数据过
3
OpenJWeb 功能开发实例—简易审批流功能实现
滤器,不同角色进入系统会看到
不同状态的数据,例如分管厂长
进入系统中只能看到已发布和送
审状态的数据,看不到正在由厂
计划员或总经理审核的数据,所
以不存在审批权混乱的问题。
7 doReject2
厂 计 划 员
审核拒绝
分管厂长审核
通过(pass1)
审 核 拒 绝
(Reject)
8 doReject3
总 经 理 审
核拒绝
厂计划员审批
通过(pass2)
审 核 拒 绝
(Reject)
下面是平台中配置好的审批流设置页面:
动作码:
什么是动作码?动作码是在页面中与动作按钮关联的一个标识,当用户在页面中点击
一个按钮,页面会将这个动作码及所选记录的 ID 值传到后台的控制层来处理,例如分管厂
长点了“分管厂长审核同意”按钮,页面将此按钮对应的状态码 doCheck1 和 ID 传到后台,
后台根据动作码 doCheck1 和当前记录的当前审核状态为 SendCheck(送审)做为查询条件,
查到对应的后置状态码为 pass1(分管厂长审核同意),查到后将所选择的记录的审核状态设
置为 pass1(分管厂长审核通过)。下面是摘录了事务性计划列表页面的一段代码,其中
doCheck('doCheck1')就是通过 javascript 调用将动作码提交给后台处理。
<authz:authorize ifAnyGranted="AUTH_BUTTON_PLAN_PASS1"><input type="button"
name="cmdcheck" value=" 同 意 ( 分 管 厂 长 )" class="mybutton"
onClick="doCheck('doCheck1')">
</authz:authorize>
4
OpenJWeb 功能开发实例—简易审批流功能实现
2.2 关于简易审批工作流的几个特点
简易审批工作流与 OA 工作流有很大的不同,简易审批工作流最常用的就是如上文所
叙述的单据审批流,与 OA 工作流不同的是:
(1) 在一个流程节点中,由一个人审批后就可以更改单据的流程状态,不需要多人会
签。
(2) 不需要启动一个流程实例也不需要按不同的人生成待办任务列表。简易审批流中,
单据本身就可看做一个流程实例,待办任务列表就是按状态位过滤的单据条目。
(3) 关于简易的工作流的流程图,目前用 UML 的活动图和状态图都不直观,最直观的
绘制方式遵循以下要点:
a) 矩形节点表示角色
b) 连线作为动作线而不是条件线(每一个动作线已定义了前置条件和后置条
件)
c) 动作描述:动作描述按照角色+动作+结果这三个要素,例如:分管厂长审批
通过。
三、OpenJweb 平台开发示例
本章节讲述如何通过 OpenJweb 快速开发平台来实现事务性计划的维护和简易审批流 ,
实际上,如果只是作为数据增删改查的功能开发,通过 OpenJweb 平台定制一个功能可以
完全不用写代码,只要在平台中定义了表结构,就可以利用平台自动创建数据库表、数据
库表对应的 Java 实体类,及增删改查页面。这样功能的创建工作只要会计算机操作的人都
可以去做,那么在具体的企业应用项目的实施中此平台带来的价值是什么?就是大大减少
开发人员的人数和开发成本!
下面分析一下事务性计划这个业务对象所具有的字段,包括计划时间、计划内容、主
办部门、计划检查人(即分管厂长)、审批状态、创建人、最后修改人等。当事务性计划
的字段内容被确定后,我们就要将这些字段的相关信息录入到数据库中,具体操作过程:
5