流程管理项目相关说明

代码还在敲,项目也还在完善......


这个功能主要是用于流程审批传阅的。流程管理有增删改查功能,使用流程模板进行流程步骤控制。

业务逻辑

用户管理

  1. 用户参数
    1. 用户id(工号),用户名,用户密码,用户手机号码,用户简介
    2. 所属部门:设置层级,如信息技术部/应用开发中心/APP开发组
    3. 头像:用户自行上传
    4. 用户类型:跟用户职级相关,例:普通用户:组长:中心主管:部门主管:总经理:部门综合员:内部审查员。
  2. 用户管理功能
    1. 注册:由管理员进行登记注册。
    2. 登录:用户使用id和密码进行登录,登录后可自行修改密码及其它信息(用户手机号码、用户简介、头像),系统不设置强制修改密码。
    3. 用户注销:由管理员进行注销。
    4. 用户信息强制修改:由管理员进行强制修改,仅允许修改用户类型和用户所属部门。

流程管理

  1. 流程管理
    1. 增加流程
      1. 参数:当前步骤、当前处理对象(可多个)、下一个处理对象、下一个步骤、类别、标题、内容、是否通过标识、传阅对象(可多个)。流程编号(自动生成)、时间戳(自动生成)
      2. 过程:用户填写流程信息,发起流程,流程自动通知下一步的处理人员和传阅人员。
    2. 删除流程
      1. 参数:流程编号、时间戳(自动生成)权限:发起人,管理员
      2. 过程:对流程进行删除,不需要删除数据,终止流程即可。增加操作记录,操作记录保留。
    3. 流程自行回退
      1. 参数:流程编号、回退原因、时间戳(自动生成)
      2. 过程:对流程进行回退,状态改为发起状态,可修改流程内容,原审批和传阅信息失效,需重新发起审批。增加操作记录,操作记录保留。
      3. 权限:发起人
    4. 流程审批
      1. 参数:流程编号、审批意见、时间戳(自动生成)
      2. 过程:如不通过,进行流程回退,所有审核状态和传阅状态失效,状态改为发起状态,需重新发起审批。操作记录保留。如通过,流程到达下一个步骤。增加操作记录。
      3. 权限:当前步骤处理人
    5. 流程不可更改(如需更改自行退后后修改)。
  2. 流程模板管理
    1. 增加流程模板
      1. 参数:流程类型(流程名字)、流程步骤、步骤参与人员类型、流程模板(编号自动生成)、时间戳(自动生成)
        1. 从业务层面来看,流程的编号本身也可识别其类型。
        2. 业务类型细分
          1. 人事
            1. 假期
            2. 财务
            3. 岗位
            4. 考核
          2. 会议
            1. 会议室
            2. 会议
          3. 部门
            1. 部门物资
            2. 部门人员
            3. 部门通知
        3. 其实从业务类型设定来看,这一块也是可以做成自定义的,不过自由度可能过高了,难免导致有不同的管理员把分类改来改去的,还是定个大概的框架,再由管理员设置具体的流程模板比较合适。
      2. 权限:管理员
      3. 过程:用户自行填写流程步骤和参与人员类型,也可根据已有模板导入修改。增加操作记录。
    2. 删除流程模板
      1. 参数:流程编号、时间戳(自动生成)
      2. 过程:对流程模板进行删除,不需要删除数据,标记失效即可。不影响已创建的流程的使用。增加操作记录,操作记录保留。
      3. 权限:管理员
    1. 更改流程模板
      1. 参数:流程编号、时间戳(自动生成)
      2. 过程:对流程模板进行修改,不影响已创建流程的使用。增加操作记录。
      3. 权限:管理员


SQL

默认utf8字符编码,字符存储不区分大小写。数据库需要新建一个特定的用户。

create database applys character set utf8 collate utf8_general_ci;

- 建立数据库的用户
create user manager@localhost identified by '123456';
grant all privileges on applys.* to manager@localhost;
flush privileges;

用户管理

  1. 用户表
    1. ID
      1. 即用户的工号,一般为6个数字。使用mediumint即可
    2. 用户名
      1. varchar,长度设置不超过32个字符
    3. 用户类型
      1. varchar,长度设置不超过32个字符
      2. 不考虑采用映射,主要是便于理解,防止后期出现过多的近似角色难以区分
    4. 用户简介
      1. varchar,长度不超过255个字符。
    5. 用户密码
      1. 数据库添加数据时需加密,使用varchar,数据库层面不加密。长度不超过32个字符
    6. 头像
      1. 目前头像一般都支持几个MB的图片,使用mediumblob即可
    7. 用户手机号码
      1. varchar,长度为11
    8. 所属部门
      1. 分层,每一层用一个英文逗号分隔
      2. varchar,长度64
drop table if exists user;

create table user (
    id varchar(6) primary key,
    password varchar(32) not null,
    name varchar(32) not null,
    introduce varchar(255),
    phone varchar(11),
    picture mediumblob,
    role varchar(32),
    department varchar(64)
) character set = utf8 collate = utf8_general_ci comment = '用户' row_format = dynamic;

流程管理

  1. 流程记录表
    1. ID
      1. 模板已经可以确定是什么类型的流程,只需要区分不同流程即可。采用自增ID即可,假设公司每天发起流程1万条,一年365万个记录,数据库存储10年的数据,那么会有3650个记录,类型使用int即可。
    2. 对应的流程模板
    3. 外键,DB不处理
    4. 流程名称
    5. 流程简介
    6. 创建者
    7. 是否完成标志
    8. 当前步骤
drop table if exists apply;

create table apply (
    id int unsigned primary key auto_increment,
    template_id mediumint not null,
    name varchar(20),
    introduce varchar(100),
    creator_id varchar(20),
    is_finish tinyint(1),
    create_time timestamp
) auto_increment=1 character set = utf8 collate = utf8_general_ci comment = '流程' row_format = dynamic;
  1. 流程步骤记录表
    1. 当前步骤ID
    2. 当前步骤名称
    3. 当前步骤处理意见
    4. 当前步骤处理人
    5. 当前步骤未阅读通知人员
      1. 这个通知人员可能会涉及多人,如一个部门通知,可能涉及200人,一个编号假设占6个字符,则需1200个字符,算上分隔字符,预留空间,可以设置到2048个字符。
    6. 已阅读通知人员
drop table if exists apply_step;

create table apply_step (
    apply_id int unsigned ,
    step_id tinyint,
    worker int unsigned,
    opinion varchar(100),
    un_read varchar(2048),
    has_read varchar(2048),
    introduce varchar(100),
    template_step_id tinyint,
    create_time timestamp,
    primary key (apply_id, step_id)
) character set = utf8 collate = utf8_general_ci comment = '流程步骤' row_format = dynamic;
  1.  流程模板记录表
    1. ID
      1. 主键,考虑到流程模板的归类,设置为固定长度的数字,假设流程大类数量在10以内,细分类型数量在10以内,一种类型的流程模板数量在100以内。
      2. 对于存储空间的考虑,这张表不会多大,存满也就10,000行数据,空间其实差异不大。用char是4个字节,操作上也比较容易。
      3. 例:1010,可表示,人事,假期,调休流程。
      4. 固定位数4位,第1位表示大类,第2位表示细分类型,第3-4位表示流程模板标识数字。
    2. 名称
      1. 中文或英文,长度可变,最大长度限制在20个字符内。
    3. 简介
      1. 中文或英文,长度可变,最大长度限制在100个字符内。
    4. 创建者
      1. 用户ID外键,不过表层面没必要加外键约束,在service层处理。
    5. 是否生效
      1. tinyint(1)
    6. 创建时间
      1. timestamp
drop table if exists apply_template;

create table apply_template (
    id varchar(4) primary key,
    name varchar(20),
    introduce varchar(100),
    creator_id varchar(20),
    is_valid tinyint(1),
    create_time timestamp
) character set = utf8 collate = utf8_general_ci comment = '流程模板' row_format = dynamic;
  1. 流程模板步骤记录表
    1. 流程模板ID
      1. 流程模板ID外键,主键之一
    2. 流程步骤
      1. 主键之一
      2. 假设一个流程步骤不会超过10步,那么使用tinyint即可
    3. 下一流程步骤
      1. tinyint
      2. 如果值为0则表示没有下一步,流程结束
    4. 参与者用户类型
      • 非空,因为每个步骤都应当有参与者,每个步骤只固定一个必需的参与审批角色。
      • char
    5. 简介
      • 可""
drop table apply_template_step if exits;

create table apply_template_step (
    template_id mediumint unsigned,
    step_id tinyint,
    participants char(1),
    introduce varchar(100),
    primary key (template_id, step_id)
) character set = utf8 collate = utf8_general_ci comment = '流程模板步骤' row_format = dynamic;

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值