急!送分!多贴少补! 请教各位老大,一个OA项目怎么架构系统和功能模块?

sonicryu 2008-06-12 08:55:13
请教各位老大,大型项目开发是怎么架构系统和功能模块的?

比如 需求分析- 要件定义 - 概要设计- 详细设计 -编码 - 测试

如果我根据需求文档设计好数据库之后,然后一般怎么架构比较复杂的功能模块。

会这么问,是因为手头有一个oa项目,里面的一个公文模块比较复杂,涉及到权限和公文流转等(不像新闻,产品发布那么简单)

目前没有具体的设计思路,想知道正规的开发流程,比如一般是怎么设计和架构比较复杂的功能模块。




下面是项目介绍,请高手多多指点:

开发环境 linux+apache2+mysql5+php5


一.公文流转模块

一共有4个权限组:发起人 领导 经理 员工

功能1

公文流转(发起人创建公文,发起人分发领导,领导审核批注,发起人分发经理,经理审核批注,经理分发员工,员工完成批注,发起人归档)


公文由发起人创建,然后选择多个需要批阅公文的领导,再选择多个需要传阅公文的领导,然后发送

公文发到传阅的领导手上,领导在公文上写个意见,然后提交,同时公文发到批阅的领导手上,领导写个意见,然后审批通过。

当所有审批的领导审批通过后,公文回到发起人手上。发起人选择要发送的多个经理,然后发送。

公文发到选择的部门经理手上,经理看完后在公文上写个意见,然后选择想要发送的多个员工,然后发送

公文发到选择的员工手上,员工看完后,在公文上写个意见,然后按完成

公文又回到发起人手上,发起人把已完成的公文归档。


功能2

1.当公文在经理手上的时候,经理在公文上加一条意见,然后发回给领导,然后领导再加条意见然后再发回给经理,经理再加意见再给领导,可以无限循环添加意见(如同聊天一样)直到经理下批给员工为止,新加的意见不能覆盖原来的意见,查看公文的时候所有领导和经理之间的对话要能够全部显示出来。

2.当公文在员工手上的时候,员工在公文上加一条意见,然后发回给经理,然后经理再加条意见然后再发回给员工,无限循环,要求和上面一样。




功能模块设计图

发起人
1.创建公文
2.修改未批公文
3.删除未批公文
4.给领导批阅
5.给领导传阅



领导
1.下批公文,注释
2.回复经理,注释



发起人
1.已批公文发给经理



经理
1.上发领导,注释
2.下批员工,注释
3.回复员工,注释



员工
1.上发公文,注释
2.公文完成,注释



发起人
1.对已完成公文归档



权限的判断方面应该可以用session,然后对user表中增加4个字段 is_boss is_manage is_staff is_creator 来区别

回复意见方面也许用多个表来实现存取

主要是公文的数据库和功能设计方面应该用什么思路,水平有限,恳请各位高手多多指点赐教,不胜感激,高分送




...全文
246 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiankeqcaf 2010-05-07
  • 打赏
  • 举报
回复
来看看
ten789 2008-06-15
  • 打赏
  • 举报
回复
最好写USER_ID 使用主键查询要快还持久
部门 分组 级别 这3个最好单独建表记录 但几乎每次都要用到而且内容很少 还应该放到高速缓存中
单独建表的好处就是活动 记录在USER表中字段很难修改的
权限肯定是要继承的而且最好能多重继承
还是推荐权限表 字段总归是固定的不好更改而且效率要差

因为每个工作流是不一样的 所以就无法从状态中直接得知下一步的操作 还要查询工作流 为了简化查询就把下一步的操作直接写在字段里 当然你喜欢子查询甚至存储过程可以不用 这个字段其实就是个缓存是不可信的 在进入处理环节还要再次验证

活动工作流是记录在表里的而且不是LZ习惯用的多字段 应该是很短由多行组成 看看DZ的数据结构会有发现
这东西肯定不会内嵌在程序中

最初俺也喜欢用多字段 建表的时候非常快 但开发到后期就会发现不足到了2次开发就想删了重来但又不能只好加字段 最后把表弄的N长

再往下说点
OA这东西负载很轻的所以不怕慢不怕大 应该用OO的方式开发 重用一次就给弄成方法 那些孤立的函数也给整进杂项类 静态调用
为企业单独定制OA最烦的就是改 总改昨天说的今天就改
sonicryu 2008-06-13
  • 打赏
  • 举报
回复
谢谢各位高手。2楼的兄弟思路很清晰,真是难得的人才

1.认证的话,准备用user表中username写入session

2.部门的话,肯是有的,这里是在user表增加dept_id字段,然后创建dept表(id name),user.dept_id 对应 dept.id

3.用户分组的话,准备在user表中增加,is_creater,is_boss,,is_manager,is_staff,来分组

比如我要运行部的经理 那么就 select from user where is_manager = 1 and dept = ‘经理'

4.感觉权限应该是继承的关系,而用户组应该是一个多重的关系

如果多重身份的话就应该不用权限表而是用多个字段了,是不是?


以上只是很不成熟的想法,希望大家多批评


还有请教下ten789


这里为了方便查找 应该在单独字段中记录 下一个状态的用户身份 这句话没理解能否详细点?

一般工作流都是活动的,因为有N个工作流,这个活动工作流是否需要编程实现,还是默认的?

继续加分! 谢谢
mrshelly 2008-06-13
  • 打赏
  • 举报
回复
OA 就是把企业的管理文件规定的流程转化为电子数据方式.

熟悉企业管理文件最重要.
panzhiqi 2008-06-13
  • 打赏
  • 举报
回复
简单的一个思路,从简单做起

1.创建公文
2.修改未批公文
3.删除未批公文
4.给领导批阅
5.给领导传阅

公文表(公文的基本信息,里面包括公文的状态)
公文流转记录表 (公文的流转记录,其中包括 更改人,从什么状态,改到什么状态,做了什么批示)
比如说创建的话就是 从0变成1 修改未批公文 从1变成2 当状态变成 6的时候,这个公文流转完毕

把公文流转中的几个过程,定义成几个状态,然后在后台中写个函数,判断每次是否可以从状态i变成状态j,防止跨N个状态
Jack_Yin 2008-06-13
  • 打赏
  • 举报
回复
高手讨论的东西,路过,学习ing.........
fxs_2008 2008-06-13
  • 打赏
  • 举报
回复


这种具体型的项目,可以参考uml模式开发

权限问题,一般比较复杂,也是OA中比较难的,可看权限角色模型——标准RBAC模型,可以设专门的API
老紫竹 2008-06-13
  • 打赏
  • 举报
回复
建议你先去问问你们老总的秘书是怎么处理的。 否则就算你上了系统,他们不满意也是白费!
ten789 2008-06-13
  • 打赏
  • 举报
回复
所谓的公文 和发帖差不多吧 嘿嘿 加上个可以回帖的顺序就应该差不多了

LZ把很多事情搞混了

权限判断:
认证 也就是LZ说的可以用SESSION 其实就是知道当前用户是谁
身份 也就是LZ说的 IS_BOSS 之类的东西 其实就是用户分组 一般这个组是可以继承的或者多重身份
权限 权限完全可以用1个权限表来完成 实际情况一般是用户组+特别权限

工作流
简化来说
所有者-》组1-》组2-》组3-》组4-》OVER
一般工作流都是活动的 因为有N个工作流

公文状态
静态标签0和99 标志未进入工作流和已经完成
其他标签一般和 工作流中的编号对应就可以了
这里为了方便查找 应该在单独字段中记录 下一个状态的用户身份
这里有个方向的问题 工作流不是单向的而是双向的 可以向下继续也可以向上重来

看LZ贴出来的资料 没考虑部门的问题 这只是个部门应用?

俺只写过本公司的应用大概就是这个样子 肯定不是LZ所说的正规~! 啥叫正规?



myvicy 2008-06-12
  • 打赏
  • 举报
回复
需求分析- 要件定义 - 概要设计- 详细设计
前面这几步做好了,后面方便很多。

主要是公文的数据库和功能设计方面应该用什么思路
数据库方面要自己动脑子想还要和客户沟通,主要是看需要记录一些什么数据,以及他们所要求的流程是什么,然后再定义数据结构。功能设计也是根据他们的业务流程来处理,都需要和客户沟通,自己凭空想的可能和他们的流程有差距,但是可以先构思一个大概的框架流程然后和客户沟通交流把这个框架完善了。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧