ihrm项目结构详解

大体介绍

在这里插入图片描述

云服务的三种模式

Iaas:基础设施即服务
Pass:平台即服务
Saas:软件即服务

系统设计

在这里插入图片描述
在这里插入图片描述
主键id生成策略
在这里插入图片描述
lombok
@data = @setter + @getter +@noArgs(无参构造)

模块搭建

1 企业得增删改查
2 全局异常处理器
3 跨域@Crosorigin注解

1 多租户的数据库设计

多租户的数据隔离
方案一:多个数据库
方案二:一个数据库多个schema
在这里插入图片描述
方案三: 共享数据库共享数据库表,通过企业id进行数据隔离

数据库得三大范式

1 保证每列的原子性(每一列不可拆分)(eg:address:中国北京,可以拆分为国籍和城市,这样就是不可拆分了)
2 第二范式:在第一范式的基础上,非主属性必须依赖主属性(一个表只做一个事情 eg:用户表里面有 语文成绩,数学成绩,这些成绩可以放到成绩表中)
3 第三范式:在第二范式的基础上,消除传递依赖(eg:订单表中 有单价和数量,多了一个字段总价:这个总价是可以通过数量乘以单价得到的,)

反三范式

通过添加一些冗余字段方便查询效率
eg:总价,这个字段虽然冗余了,但是页面中确实是要显示的

node8一般已经集成了npm
cnpm install //国内镜像
npm install //国外镜像
npm run dev

前端工程目录

build 编译的内容
config 全局变量
node_moudles 依赖的组件执行npm install下载下来的
script 一些脚本
src 所有的源码

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

图片上传

员工管理的头像图片

刷脸登录(百度云AI)

1 人脸注册
向百度的人脸库注册(添加)用户的人脸照片(addUser)
2 人脸检测
判断图片中是否有面部信息
3 人脸搜索
根据用户上传的图片和指定人脸库中所有人脸进行比较,获取相似度最高的一个或者几个的评分,score:相似度评分最高的
返回值:数据只要一条,相似度最高的(百度云推荐80分以上就是认为是同一个人)
4 人脸更新
更新人脸库中的照片(updateUser)

刷脸登录实现

在这里插入图片描述
在这里插入图片描述

工作流介绍

工作流:就是工作流程的计算模型,一套规则,让程序按照一定的规则继续执行下去
工作流引擎:activiti
activiti开发流程介绍
一 静态阶段
1.1 流程设计–模型(xml)
1.2流程部署–将模型xml上传到系统中,导入到activiti
二 运行时阶段
2.1 用户发起流程
2.2 用户审批流程(驳回)
使用activiti进行流程状态的跟踪
三 历史阶段
历史的流程查询
在这里插入图片描述
在项目中使用activiti进行流程控制 一般而言可以分为三步
1 流程制作(工具绘制流程图,部署到activiti中)
2 流程执行:工作流已进入“运行中”阶段
3 查询历史阶段
eg:请假流程
在这里插入图片描述

在这里插入图片描述
流程制作工具
在这里插入图片描述

官网下载activiti-app 包,放到tomcat中运行,启动即可
绘制模型

在这里插入图片描述

每一个节点定义了一个id 一个候选组(什么样的人或者身份,可以有当前节点的权限)
选择网关:定义一个条件,根据条件进入到不同的节点
流程绘制完成保存后,其实时一个xml文件

流程设计好后,通过文件上传的形式,部署到activiti流程引擎中
activiti和业务数据库多数据源配置
1 流程的部署
通过repositoryService进行流程的部署(springboot项目集成了activiti工作流引擎),这个repositoryService 是activiti暴漏的,给我们提供好的供我们使用的

javaDeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
        deploymentBuilder.addBytes(fileName , file.getBytes());   //部署流程
        deploymentBuilder.tenantId(companyId);
        Deployment deploy = deploymentBuilder.deploy();```

上传成功后对应activiti数据中的表act_re_devlopment(还有一些关联的表eg:act_re_procdef(流程定义的一些配置信息) act_re_bytearry(存放的是流程定义的xml文件)) 会多出数据

2 流程定义的管理(流程挂起,激活,查询等)
通过activiti内置的api

return repositoryService.createProcessDefinitionQuery()
                .processDefinitionTenantId(companyId).latestVersion().list();

3 流程的挂机和激活

       ProcessDefinition definition =
                repositoryService.createProcessDefinitionQuery()
                        .processDefinitionKey(processKey).latestVersion().singleResult();
        if(definition.isSuspended()) { //如果是挂起状态,这里激活此流程
            repositoryService.activateProcessDefinitionById(definition.getId());
        }else{
//如果不是挂起状态,这里挂起此流程
            repositoryService.suspendProcessDefinitionById(definition.getId());
        }

在这里插入图片描述
业务数据库
proc_instance表 发起得流程得对应流程得实例(一个流程),proc_state(流程得状态)

在这里插入图片描述

proc_task_instance //业务流程得任务表,(每个节点) 一个流程对应多个节点
在这里插入图片描述

proc_user_group //用户组表
在这里插入图片描述

在这里插入图片描述
每个任务节点都有一个候选组

在这里插入图片描述
通过候选组,对应得sql查询对应得用户
activiti表和业务表是绑定关系得

查询申请的流程
在这里插入图片描述
发起申请
在这里插入图片描述
springdata-jpa当中
要想手动执行sql 注入@entitymanager

在这里插入图片描述

在这里插入图片描述

发起流程
用户前端选择请假(加班等)原因,时间,理由等信息,发起流程申请,后端获取到用户id 远程调用用户服务查询用户信息,封装数据 到流程实体类中

1 部署流程
通过activiti-app绘制好流程图,以文件得形式上传到activiti服务器中,并绑定业务表中的companyID(企业id),teantId
2 流程的激活和挂起
通过activiti对外提供的service(repositoryService)active方法进行激活和挂起

3 流程的发起
3.1 用户通过页面填写请假等相关信息(天数,原因),后端获取相关信息,获取用户id的同时远程调用用户微服务获取完整的用户信息(这里主要获取用户的部门id),根据process_key(流程实例名称) 和companyId 获取到对应的activiti中的流程对象,开启流程
3.2 自动执行下一个任务节点 开启,在获取下一个节点的数据,查询当前节点的审批人,根据当前节点的id查询当前任务节点的候选组,根据候选组id查询系统业务中的用户组表,封装参数,手动执行(jpa中采用的是entityManager)sql,结果集就是该任务节点审核的所有人
填充业务数据中的当前节点审批人,保存到数据库,其中流程表和任务节点表是1对多的关系

4 流程的审核
根据流程的id查询业务表中对应的流程实例,在根据流程id查询activiti中对应的实例
根据当前处理人的id,远程调用用户微服务获取用户对象
根据处理的类型(驳回,通过)等进行不同操作,不通过删除该流程,
如果审核通过,完成当前的任务,并查询下一个节点,如果没有节点,任务结束,修改流程状态,如果有一下节点,同样查询该节点的候选组,根据候选组去我们对应业务表中查询候选组所对应的用户,

5流程的查询
根据流程的审批类型,审批状态,当前节点的处理人,以及发起人构造条件查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 项目介绍: iHRM是一款基于SaaS平台的人力资源管理系统, 企业通过该系统可以完成员工管理、审批管理、考勤管理、社保公积金管理、薪资管理等功能,为企业的人力资源管理提供一站式解决方案。 掌握的核心能力:   1、能够了解SaaS的基本概念   2、掌握Activiti7工作流引擎的使用   3、能够掌握商用权限方案的设计   4、能够使用JasperReport生成报表。   5、能够使用PowerDesigner构建数据库模型   6、了解SAAS-HRM中权限控制   7、理解前端权限控制思路   8、熟练构造Chart图形报表 解决方法:   1、Spring全家桶解决方案|   2、SPA工程构建解决方案|   3、Saas系统数据库设计方案|   4、统一会话管理的解决方案|   5、企业级报表解决方案|   6、系统认证授权的解决方案|   7、云存储解决方案|   8、RBAC权限设计方案|   9、刷脸登录解决方案|   10、自定义代码生成器|   11、Activiti工作流开发| 涵盖知识点:   1.结合Activiti7工作流引擎的应用教程。   2.基于Shiro+Redis的分布式session解决方案。   3.可商用的权限设计方案(提供菜单,按钮,超链接,API粒度的权限控制)。   4.完整的代码生成器教程。   5.采用JasperReport完成企业级PDF报表生成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值