1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > activiti实现请假流程

activiti实现请假流程

时间:2021-12-17 06:24:37

相关推荐

activiti实现请假流程

工作流:需要层层审批,工作流程的计算模型,场景:请假,加班等

要实现请假:

1 制作activiti流程模型(基于Activiti官方提供的war包放到tomcat中运行)

每一个步骤里面都有id 和侯选组(后续和业务数据库绑定)

2 将制作好的模型(xml文件)上次到activiti系统中(springboot集成了activiti 有单独的activiti的数据库)

springboot集承了多数据源 一个是ihrm数据库,一个是activiti数据库(主库)

1 上传好流程后并恢复(开启)流程

1.1请假流程

用户提交请假申请设计到业务数据库的三张表(ihrm)

1 proc_instance 流程表

2 proc_task_instance 流程任务表(每一个流程下会有多个任务)

3 proc_user_group 侯选组表 //id是activiti自带数据库中的group表中的id eg:process_leavel 候选组的key

提交申请流程:

用户提交请假时间,天数 ,流程类型(这里是请假),用户id

1 后端远程调用 用户微服务获取user

2 构造业务数据 并通过processkey(流程标识)查询流程定义数据,即是哪个流程

ProcessDefinition result = repositoryService.createProcessDefinitionQuery()

.processDefinitionKey(processKey)

.processDefinitionTenantId(companyId) //公司id 因为是sass结构

.latestVersion()

.singleResult();

3开启流程,让activiti db的流程id和业务数据的id有一个绑定关系

runtimeService.startProcessInstanceById(result.getId()

, instance.getProcessId()

, vars); //流程定义的id,业务数据id,内置的参数 参数代表流程上的一些判断一些参数

Map vars = new HashMap();if ("process_leave".equals(processKey)){//请假vars.put("days" , map.get("duration"));//大于3天在交给总裁办审批}runtimeService.startProcessInstanceById(result.getId(), instance.getProcessId(), vars); //流程定义的id,业务数据id,内置的参数ProcessInstance processInstance =runtimeService.startProcessInstanceById(result.getId(), instance.getProcessId(), vars);

4 //自动执行第一个任务节点

//获取下一个节点数据,填充业务数据中当前待审批人

获取审批人的逻辑://查询任务的节点数据(候选人组)

封装业务数据procInstanceDao procTaskInstanceDao

(zijichulide 上传流程的时候,指定候选人组,通过activiti 模型中(xml) 为 通过候选人组 再在业务数据库中建立一个新表 存放对应的候选人 )

以上就是一个用户发起了请假流程的一个审批。

2 发起过后就到了审批人审批的接口逻辑

审批人的查询逻辑 有当前处理人,companyid,所以能查询到对应的审批

点击审核通过

//如果审核通过,完成当前的任务

//查询出当前节点,完成当前节点任务

//查询出下一个节点,如果存在下一个流程没有结束

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。