应用开发平台集成工作流系列之12——流程导航功能设计与实现

背景

流程模板主要是用于流程建模的,对于业务用户而言,需要一个业务流程的导航页,分门别类展示业务流程清单,用于发起新的流程。
并且需要根据当前用户过滤,只显示有权限发起的流程。

业务流程类别的处理

一个企业的业务流程,视企业规模的大小,会有十几个、几十个甚至上百个,如不进行分类,都混放在一起,则难以查找和使用。从管理角度,应该为业务流程分类。

业务流程类别只需要一个名称就好了,不需要额外属性,这种情况下,使用平台数据字典,新建一个字典类型,比新建一个实体要更便捷。
应用开发平台集成工作流系列之12——流程导航功能设计与实现_第1张图片

新建业务流程导航控制器

在模块businessflow下新建一个navigate的控制器,暴露一个get方法,返回流程数据

    /**
     * 获取流程模板及其分类
     */
    @GetMapping("/")
    @SystemLog(value = "流程一览-查询数据")
    @PreAuthorize("hasPermission(null,'businessflow:navigate:query')")
    public ResponseEntity<Result> get() {


        //获取当前用户拥有启动权限流程权限接口
        List<WorkflowTemplate> flowTemplateList = flowTemplateService.listByPermission();

        // 为空无需继续处理,直接返回即可
        if (CollectionUtils.isEmpty(flowTemplateList)) {
            return ResultUtil.success();
        }

        // 获取分类
        List<DictionaryItem> categoryList = dictionaryTypeService.getItem("ProcessDefinitionCategory");


        // 组装数据
        List<WorkflowTemplateCategoryVO> data = new ArrayList<>();
        for (int i = 0; i < categoryList.size(); i++) {
            WorkflowTemplateCategoryVO category = new WorkflowTemplateCategoryVO();
            String categoryCode = categoryList.get(i).getCode();
            category.setCode(categoryCode);
            category.setName(categoryList.get(i).getName());
            List<WorkflowTemplate> childTemplateList = flowTemplateList.stream()
                    .filter(x -> x.getCategory().equals(categoryCode)).collect(Collectors.toList());
            if (CollectionUtils.isNotEmpty(childTemplateList)) {
                List<WorkflowTemplateVO> childList =mapperFacade.mapAsList(childTemplateList, WorkflowTemplateVO.class);
                category.setWorkflowTemplateVOList(childList);
                // 只有存在业务流程时才添加分类
                data.add(category);
            }
        }
        return ResultUtil.success(data);
    }

新建业务流程导航前端页面

新建导航页,效果图如下:
应用开发平台集成工作流系列之12——流程导航功能设计与实现_第2张图片
实现源码如下:







发起流程

在导航页面点击对应的流程模板按钮,发起新的流程,效果图如下:
应用开发平台集成工作流系列之12——流程导航功能设计与实现_第3张图片

源码如下:







流程发起权限控制

该功能实际是辅助流程导航的,一个企业里流程可能有数十条或数百条,不同员工的权限是不同的,在流程导航中只显示该员工拥有的发起权限的流程即可。
这里的流程发起权限,实际跟系统的菜单非常类似,属于功能权限的范畴,因此复用的平台的权限控制功能。
应用开发平台集成工作流系列之12——流程导航功能设计与实现_第4张图片
在平台权限项维护的地方,新增类别“流程”,用于业务流程权限控制。
每条业务流程对应一条权限项。
对于大多数日常流程,如请假流程、报销流程,对所有人开放,新建一个角色,叫通用流程发起,为该角色设置流程启动权限。
对于一些需要特殊权限的流程,可以分组建立角色或为每条流程独立建一个角色。

开发平台资料

平台名称:一二三开发平台
简介: 企业级通用开发平台
设计资料:csdn专栏
开源地址:Gitee
开源协议:MIT
开源不易,欢迎收藏、点赞、评论。

你可能感兴趣的:(#,工作流集成,工作流集成,camunda,activiti,流程建模,仿钉钉)