栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot +Activiti 根据模型Id,查询节点列表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot +Activiti 根据模型Id,查询节点列表

本文基于:Activiti 模型管理

Model 模型管理需求:

在模型管理功能基础上添加动态配置外置表单,注意不是内置表单。

温馨提示:不管是内置表单还是外置表单,都是配置在指定模型的节点之上所有我们就必须更新模型Id查询指定模型涉及的节点列表信息。

Model 模型管理之新增表单配置功能:

选择转正流程模型,查看节点列表:

 温馨提示:这里还欠缺将自定义表单绑定值指定节点上。这个功能会在后期 实现。

SpringBoot 之Activiti Model 模型管理后台

SpringBoot 添加流程模型节点查找控制器(NodeController)

package com.zzg.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.zzg.common.activiti.entity.NodeEntity;
import com.zzg.common.activiti.enums.NodeTypeEnum;
import com.zzg.common.vo.Resp;
import org.activiti.bpmn.model.*;
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Model;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.w3c.dom.Node;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;


@RequestMapping("/node")
@RestController
public class NodeController {
    private static Logger logger= LoggerFactory.getLogger(NodeController.class);

    @Autowired
    private HistoryService historyService;

    @Autowired
    private RepositoryService repositoryService;
    
    @PostMapping(value = "/findModelAssociationNode/{modelId}")
    public Resp> findModelAssociationNode(@PathVariable("modelId") String modelId) throws IOException {
        List list = new ArrayList<>();
        // 获取模型XML文件
        ObjectNode objectNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelId));
        BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(objectNode);
        //获得流程模型的所有节点
        Collection flowElements = bpmnModel.getMainProcess().getFlowElements();
        // 过滤序列流
        List filterFlowElements = flowElements.stream().filter(item -> {
            if(item instanceof  SequenceFlow){
                return false;
            }
            return true;
        }).collect(Collectors.toList());

        for(FlowElement e : filterFlowElements) {
            NodeEntity entity = new NodeEntity();
            String id = null;
            String name = null;
            String formKey = null;
            List formProperties = null;
            // 判断节点类型-- 用户任务节点
            if (e instanceof UserTask) {
                entity.setNodeTypeEnum(NodeTypeEnum.UserTask);
                // 节点Id
                id =((UserTask)e).getId();
                // 节点名称
                name = ((UserTask)e).getName();
                // 配置表单(外置表单)
                formKey = ((UserTask)e).getFormKey();
                // 配置表单(内置表单)
                formProperties = ((UserTask)e).getFormProperties();
            }
            // 判断节点类型 -- 开始任务
            if(e instanceof  StartEvent) {
                entity.setNodeTypeEnum(NodeTypeEnum.StartEvent);
                // 节点Id
                id =((StartEvent)e).getId();
                // 节点名称
                name = ((StartEvent)e).getName();
                // 配置表单(外置表单)
                formKey = ((StartEvent)e).getFormKey();
                // 配置表单(内置表单)
                formProperties = ((StartEvent)e).getFormProperties();
            }
            // 判断节点类型 -- 结束任务
            if(e instanceof  EndEvent) {
                entity.setNodeTypeEnum(NodeTypeEnum.EndEvent);
                // 节点Id
                id =((EndEvent)e).getId();
                // 节点名称
                name = ((EndEvent)e).getName();
            }
             entity.setId(id);
             entity.setName(name);
             entity.setFormKey(formKey);
             entity.setFormPropertys(formProperties);
             list.add(entity);
        }
        return Resp.OK(list);
    }
}

package com.zzg.common.activiti.entity;

import com.zzg.common.activiti.enums.NodeTypeEnum;
import org.activiti.bpmn.model.FormProperty;

import java.util.List;


public class NodeEntity implements java.io.Serializable{

    private String id;

    private String name;

    
    private String formKey;

    
    private List formPropertys;

    private NodeTypeEnum nodeTypeEnum;

    public NodeTypeEnum getNodeTypeEnum() {
        return nodeTypeEnum;
    }

    public void setNodeTypeEnum(NodeTypeEnum nodeTypeEnum) {
        this.nodeTypeEnum = nodeTypeEnum;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFormKey() {
        return formKey;
    }

    public void setFormKey(String formKey) {
        this.formKey = formKey;
    }

    public List getFormPropertys() {
        return formPropertys;
    }

    public void setFormPropertys(List formPropertys) {
        this.formPropertys = formPropertys;
    }
}

 

package com.zzg.common.activiti.enums;


public enum NodeTypeEnum {
    StartEvent("开始节点", "start_event"), UserTask("用户任务", "user_task"), EndEvent("结束节点", "end_event");

    private String name;

    private String type;

    NodeTypeEnum(String name, String type) {
        this.name = name;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

Model.html 页面添加表单配置前端代码:




    
    
    **系统 - Layui
    



    
        ** 系统
        
  • 超级管理员
    基本资料
    安全设置
  • 退了
  • 流程管理
    流程定义
    表单定义
  • 用户管理
    查询用户
    新增用户
  • 借阅信息
    所有记录
    个人记录
  • 帮助
流程名称:
© layui.com - **系统

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号