建材秒知道
登录
建材号 > 设计 > 正文

如何实现OA系统的自定议审批流程的数据库设计

积极的茉莉
贪玩的眼睛
2023-02-27 03:19:19

如何实现OA系统的自定议审批流程的数据库设计

最佳答案
清爽的火车
酷炫的裙子
2025-08-22 16:19:12

我举一个例子:有的OA系统是要公司客户自己有服务器,然后装到客户的服务器上。可是客户嫌麻烦,所以我想将OA系统(PHP+Mysql)放在自己的服务器上,让公司客户及其员工来注册使用。那么问题来了,原来在客户自己的服务器上数据库也就十几张表,但都放到我的服务器上,每注册一个公司就得增加十几张表,那如果有一万家公司注册数据库不得有几十万张表?跟楼主一样的问题,有一些老牌厂商早就给出来完美答案了,比如华为、天翎都有过类似的问题,这些企业提出的解决方案就很不错,就针对上面的问题,最简单的办法是给每张表加个实例ID,一个公司对应一个实例ID,然后在你的MVC架构中跟DB最近的这一层加个拦截器,每个SQL查询都自动带上实例ID,这样不用对代码做很大改动。后期再根据需要优化,哪些公司合用一张表,哪些单独占用一张表甚至一个数据库,总之具体问题具体对待,需要在运营的过程中根据用户量和业务情况来分析采取对策。

最新回答
无心的蓝天
留胡子的棒棒糖
2025-08-22 16:19:12

1、用户表

用户ID

用户角色(1:业务员,2:经理,3:总经理,4:总裁。。。)

用户姓名

2、客户表

客户ID

客户名称

3、业务员客户表

用户ID(其实就是用户表里的用户角色为业务员的用户)

客户ID

4、业务员移交客户申请表

申请人用户ID

申请移交的客户ID

审批状态(0:审批中,1:已审批。。。。)

移交后用户ID

5、请假表

用户ID

请假开始时间

请假结束时间

请假类别(1:事假、2:病假、3:婚假。。。。。)

审批状态(0:审批中,1:已审批。。。。)

6、周报表

用户ID

周报月份

审批状态(0:临时保存,1:已提交,2:经理已审批,3:总经理已审批。。。。)

其实具体控制,你要在程序里进行流程控制,并没有你说的那种自动控制,不过这样的表结构设计是可以满足你后期不用再动数据库,只用修改业务流程即可

热心的萝莉
满意的黑裤
2025-08-22 16:19:12
1、用户表用户ID用户角色(1:业务员,2:经理,3:总经理,4:总裁。。。)用户姓名2、客户表客户ID客户名称3、业务员客户表用户ID(其实就是用户表里的用户角色为业务员的用户)客户ID4、业务员移交客户申请表申请人用户ID申请移交的客户ID审批状态(0:审批中,1:已审批。。。。)移交后用户ID5、请假表用户ID请假开始时间请假结束时间请假类别(1:事假、2:病假、3:婚假。。。。。)审批状态(0:审批中,1:已审批。。。。)

机灵的板凳
激昂的乌龟
2025-08-22 16:19:12

 一、建立完善的OA审批流程管理约定。

电子化的OA流程审批必须和企业的管理制度相结合,这样网上审批才能得以实施和执行。那么当审批人少有登录OA的习惯,甚至也不习惯于使用电子邮箱等办公交流工具。

这时候,其实所有的技术手段都已经失效了,目前恐怕没有更高级的提醒方式,以将提醒消息及时送达了。除非使用非常规方式(例如使用电话催办)。可见,这已不是技术问题,而是企业管理上问题了。

二、启用各种OA流程审批的提醒。

开启OA办公平台的消息提醒功能,OA系统中的消息提醒、即时通讯软件提醒、短信提醒、邮件提醒等,可以根据不同提醒对象的特点以及是OA在线等系统自动进行选择。当一个审批节点接收到上一级的审批文件时,首先审批人会收到系统自动发送来的相关提醒消息。

当审批人OA在线或登录OA时,自然会看到提醒消息,从而做出审批操作。而未做出审批操作的流程单,始终会存储在“待审待签”标签中,再以代签文件量的数字加以提醒,确保审批人不会忘记存在未存未审批单件。

基本概念

办公自动化(office Automation,OA)是在设备、通信逐步实现自动化的基础上,通过管理信息系统(Management Information System,MIS)的发展而兴起的一门综合性技术。它是将计算机网络与现代化办公相结合的一种新型办公方式。

它不仅可以实现办公事务的自动化处理,而且可以极大地提高个人或者群体办公事务的工作效率,为企业或部门机关的管理与决策提供科学的依据。在办公自动化管理领域,如果说硬件技术是其环境保障,则软件技术就是办公自动化各项功能得以顺利实现的灵魂所在。

自20世纪70年代,从单机处理开始,例如,采用微型机处理文字,进而完成文件归档、记录指示、电话自动记录等任务。

以上内容参考:百度百科-办公自动化

尊敬的航空
大气的棉花糖
2025-08-22 16:19:12
从设计上:数据库设计过程中,我们需要一个流程定义表,用于存储我们业务规定的流程。还需要申请表,用于存储员工的申请单(在请假模块中,称之为“请假单”)。审批表,用于存储对申请单审批的意见以及结果数据。还要一个审批流转表。判断审批过程 ,张三不同意怎么解觉等问题。。。。

i. 需要根据业务规定,填写流程定义。(单表的增加操作)

ii. 数据流转:首先,后台管理员登录流程管理模块,点击流程管理,选择“添加流程定义”,填写相关的流程定义的表单,选择流程定义的类型,(比如:请假申请、资产申请、报销申请等。)当前请假模块中,我们默认只有请假申请。添加审批人,最后提交该表单,交给后台的action。Action首先校验所有的审批人是否合法(例如,审批人是否具备当前功能模块的权限),action再依赖Service完成先关的业务处理,service中,可以直接调用DAO,完成数据的持久,即:将数据,添加到流程定义表中。

b) 取得待审任务

i. 用户登录系统,会发起一个请求,查看是否有待审任务。或者,用户自行去点击“待审任务”按钮。此时,后台接收到当前请求,从session中获得当前用户的id,到任务表中查询相关的请假单的id。将所有的id,通过持久层取出来,展示到相关页面上。

c)审批请假单

i. 首先取得待审任务,选择一条申请单,点击“审批”按钮,填写审批意见,并且选择同意或者拒绝,提交表单到action中,调用service将当前审批意见保存到数据库。

ii. 接着:查询流程定义中,是否有下一个审批人。如果有,则修改申请表中的状态为待“下个人”审批。如果没有下一个人审批,则修改状态为结束。

iii. 然后:如果还有下个审批人,将先关的任务修改当前审批人字段,修改成下一个审批人。如果没有,则删除相关的任务数据。

辛勤的秋天
着急的寒风
2025-08-22 16:19:12
项目(Item)

项目ID(ItemId) 项目描述(ItemName) 流程ID (RoutID) 申请人ID (ApplyUserID) 状态(State) 项目类型(ItemType)

1 郑州出差借款 1 1 借款单

2郑州出差报销 3 1报销单 这里的项目,是泛指,可以是公文,借款单,报销单等等需要流转的数据.

任务列表(TaskList)

任务ID(taskId) 项目ID (itemId) 步骤ID (actorId) 状态(state) 版本(version) 11 1 检出 100

2 23 检出 1001

3 3 3 待检出 1002项目申请后,任务列表插入一条记录.用户审批通过或者拒绝后,update当前步骤ID(上一步骤或者下一步骤).某个步骤可能有多个审批人,如果要审批,必须先检出.version字段是为了乐观锁控制,保证只能有一人检出.

任务历史记录(TaskHistory)

ID(id) 项目ID (itemId) 步骤ID (actorId) 备注(memo) 操作人ID (operateUserId) 创建时间(createDate)1 1 1 成都出差 1

1 1 2 批准 2

1 1 3 批准 3

每个步骤的操作,都写入任务历史记录

流程(Rout)

流程ID(routId) 流程描述(routName) 部门ID (deptID) 版本号(version) 状态(State)

1 借款流程 1 1 发布

2 报销流程 11草稿

2 预算审批流程1 1停止流程草稿状态是可以修改删除,发布状态就不能修改和删除,只能新增一个版本,或者新增一个流程,或者停止流程。

步骤(Actor)

步骤ID(actorID) 步骤序号(sortNo) 步骤描述(actorName) 流程ID (routId) 1 1 借款申请 1

2 2 部门经理审批 1

3 3 财务经理审批 1步骤序号是步骤执行的顺序,审批的时候,根据当前序号,查找下一步骤,然后将下一步骤update任务列表的步骤ID,审批拒绝,则查找上一步骤,然后update任务列表的步骤ID

步骤处理人(actorUser)

步骤ID(actorId) 处理人ID (operateUserId)

1 1

2 2

2 3 一个步骤,是有多个处理人。处理人先检出任务列表,然后才能审批。

视图:待我处理的工作

select t1.taskId,t1.itemId,t3.operateUserId from taskList t1join actor t2 on t1.actorId=t2.actorId join actorUser t3 on t2.actorId=t3.actorId where t1.state='待检出'

视图:我申请的工作

select t1.itemId,t1.itemName,t1.state,t1.applyUserId,t2.actorId from item t1 join taskList t2 on t1.itemId=t2.itemId

申请时

"1--查找所选流程的第一个步骤

select actorId from actor

where routId =1

order by sortNo

limit 0,12--插入任务列表taskList

insert into tasklist(actorId,state,version,itemId)

values()3--插入任务历史记录

insert into taskhistory(itemId,actorid,memo,operateBy,createDate)

values()

4--修改项目Item的状态为待审批

update item set state='wait_to_approve' where itemId=1"

审批通过

"1--update任务列表的步骤ID为下一步骤ID

update taskList set actorId=

(select actorId from actor

where routId = (select routId from actor where actorID=1)

and actorID>1

order by sortNo

limit 0,1

)

where taskId

2--插入任务历史记录

insert into taskhistory(itemId,actorid,memo,operateBy,createDate)

values()

3--修改项目Item的状态为审批中

update item set state='approveing' where itemId=1"

审批拒绝

"1--update任务列表的步骤ID为第一步的ID

update taskList set actorId=

(select actorId from actor

where routId =(select routId from actor where actorID=1)

order by sortNo

limit 0,1)

where taskId=1

2--插入任务历史记录

insert into taskhistory(itemId,actorid,memo,operateBy,createDate)

values()

3--修改项目Item的状态为审批拒绝

update item set state='jujue' where itemId=1"

甜蜜的保温杯
精明的摩托
2025-08-22 16:19:12
易客CRM新版本中增加多级审批功能,每个模块可以设置多个审批流程,每个流程可以设置多个审批步骤。通过控制面板开发的模块也可以支持多级审批。设置审批流程的步骤如下:第一步:使用管理员账号登陆易客CRM,进入控制面板->审批流程,选择合同订单模块,进入合同订单模块的审判流程列表,如下图所示:审批流程列表1.jpg 第二步:点击“新增审批流程”,进入创建审批流程界面,如下图所示:审批流程列表2.jpg 默认情况下,每个用户提交订单时都可以选择当前审批流程,如果需要某些用户不能选择当前审批流程,可以点击"高级选项",如下图所示:审批流程列表3.jpg 所选用户将可以选择当前审批流程,未选用户将可以选择当前审批流程,提交时也看不到当前审批流程。确认流程信息后点击保存按钮,进入流程信息页面,如下图所示:审批流程列表4.jpg 第三步:点击“新增审批步骤”按钮,进入创建审批步骤界面,如下图所示:审批流程列表5.jpg 审批步骤的信息分3个部分,第一个是基本信息,设置审批步骤的基本信息和审批人,每个审批可以设置多个审批人,每个审批人可以为正式审批人和候选审批人,正式审批人可以接收审批通知和审批记录,候选审批人不接收审批通知和审批记录。审批步骤如果没有指定下一步的审批步骤,将按照自然序列指定下一步的审批步骤,如果指定下一步审批步骤,将可以跳转到指定的下一步审批步骤。审批步骤可以指定是否可以结束整个审批流程,如果没有指定,最后一个审批步骤将可以结束整个审批流程。审批步骤的第二个部分是字段权限,如下图所示:审批流程列表6.jpg 审批步骤的第三个部分是高级选项,审批通过时将可以自动更新订单的某个字段,如下图所示:审批流程列表7.jpg 第四步:重复第三步,依次创建3个审批步骤,分公司销售经理审批、法务确认和总经理审批,如下图所示:审批流程列表8.jpg 第五步:创建合同订单后,点击“审批”按钮,选择审批流程提交,如下图所示:审批流程列表9.jpg 第六步:南京分公司的审批流程的负责人登陆系统后收到审批通知,或者在右上角的我的审批中心可以看到未审批和已审批的记录,如下图所示:审批流程列表10.jpg 第七步:点击未审批的记录,进入合同订单信息的界面,点击审批按钮,如下图所示:审批流程列表11.jpg 审批窗口中可以快速查看审批流程的详细信息和审批历史。注意1:合同订单、发货单和进货单审批通过时将自动修改“状态”字段的值为“已审批”,这个是系统默认的,和动态赋值没有关系。注意2:审批状态目前有5个状态,为待批准、已批准、已拒绝、已撤单和已驳回,数据库中对应的值为0、1、-1、-2和-3,数据库中的值可以作为条件赋值,例如统计报表和视图中,如果有审批状态的条件,对应的值要输入数据库中的值(0、1、-1、-2和-3)。待批准表示还未审批的记录或待审批的记录;已批准表示已经批准通过的记录;已拒绝表示审批被审批人拒绝的记录;已撤单表示被撤单的记录;已驳回表示审批人驳回的记录,需要提交人重新修改和再提交审批。