springboot整合activiti设计器

springboot整合activiti设计器

工作流我也是第一次接触,刚开始接手这个项目的时候,工作流的部署方式是通过postman发送一些json格式的流程代码去部署,我去学习如何用json写流程的时候简直太痛苦了,后面我就开始查询activiti设计器,终于完美的把设计器整合到我们项目中,每次去绘制发布新的流程的时候,比之前直观多了,但是绘制流程图的过程也是很重要的一门学问,今天我们主要是说如何把activiti设计器整合到springboot中

开始

我们先去官网将设计器前端代码下载下来,进行解压,将文件放在我们的项目资源路径下:

  1. 下载地址 https://www.activiti.org/get-started

  2. 我这边下载的版本是activiti-5.22.0

  3. 下载后解压,进入目录解压wars包,将diagram-viewer,editor-app,modeler.html拷贝到项目的静态文件夹下;

  4. 我这边存放在resource下static目录下
    在这里插入图片描述

  5. 解压libs/activiti-modeler-5.22.0-sources.jar文件,将这两个包文件拷贝到我们的项目中,为这三个文件加入注解:@RequestMapping("/service")
    在这里插入图片描述

  6. 这时候我们的项目结构为:
    在这里插入图片描述

  7. 我们可以修改editor-app/app-cfg.js里面的路径,保持和我们刚刚写的service请求路径一致

  8. 新建ModelController,提供进入编辑器的跳转请求,要注意的是这个controller的注解为@Controller,因为我们需要通过他跳转页面

@RequestMapping("/create")
    public void newModel(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
        try {
            //初始化一个空模型
            Model model = repositoryService.newModel();

            //设置一些默认信息
            String name = "new-process";
            String description = "";
            int revision = 1;
            String key = "process";

            ObjectNode modelNode = objectMapper.createObjectNode();
            modelNode.put(ModelDataJsonConstants.MODEL_NAME, name);
            modelNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
            modelNode.put(ModelDataJsonConstants.MODEL_REVISION, revision);

            model.setName(name);
            model.setKey(key);
            model.setMetaInfo(modelNode.toString());

            repositoryService.saveModel(model);
            String id = model.getId();

            //完善ModelEditorSource
            ObjectNode editorNode = objectMapper.createObjectNode();
            editorNode.put("id", "canvas");
            editorNode.put("resourceId", "canvas");
            ObjectNode stencilSetNode = objectMapper.createObjectNode();
            stencilSetNode.put("namespace",
                    "http://b3mn.org/stencilset/bpmn2.0#");
            editorNode.put("stencilset", stencilSetNode);
            repositoryService.addModelEditorSource(id, editorNode.toString().getBytes("utf-8"));
            response.sendRedirect(request.getContextPath() + "/modeler.html?modelId=" + id);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
  1. 启动项目,访问 http://localhost:8080/model/create可以正常访问,但是进入页面后,页面栏目都空白,查询项目控制台,发现stencilset.json文件找不到,这时候我们把stencilset.json文件拷贝到resource目录下,再次访问,如果你发现拷贝进去了还是访问不到这个文件,clean一下,就好了,说明stencilset.json没有编译,这时候你再访问http://localhost:8080/model/create 就正常了
  2. stencilset.json我这边是个汉化版文件 下载地址
    在这里插入图片描述
  3. 这时候你可以正常绘制流程图,然后点击保存,流程就进入到act_re_model这张表中,发布后数据会存储在act_re_procdef表中,整个整合流程就结束了

遇到问题

  1. 静态资源文件被拦截问题,添加拦截器
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("/favicon.ico")
                .addResourceLocations("classpath:/static/favicon.ico");
    }

}
  1. 访问时需要登录账户密码问题,首先账户密码是存在act_id_user表中,如果表中没有记录,那么你可以自己添加一条用户密码进入,就可以登录了

  2. 项目启动报错Could not update Activiti database schema: unknown version from database: ‘5.22.0.0’,那是因为你导入activit包的版本和数据库中act_ge_property版本不一致导致的,改为一致就可以了

源码下载

我这边做了一些简单的模型查询,发布,流程定义,流程实例,当前任务,历史实例查询的功能,附上源码,前端页面采用的layui,简单实现以下,供大家使用,关于怎么通过设计器去画流程图,以及会签和或签的设置,点击这里查询
源码地址:https://download.csdn.net/download/u010796208/12792239
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值