Spring Boot入门样例-801-activiti-diagram整合activiti工作流在线设计工作流程

Spring Boot入门样例-801-activiti-diagram整合activiti工作流在线设计工作流程

activiti工作流可以通过网页设计,本demo演示整合activiti实现工作流在线设计工作流程。

前言

本Spring Boot入门样例准备工作参考:

idea中需要安装actibpm插件设计,bpmn才能正确显示 插件参考Spring Boot入门样例-003-idea 安装配置和插件

准备工作

  1. 下载activiti包:https://www.activiti.org/get-started,因为6.x版本前端页面尚不完善,我们下载5.22版本,也可以通过网盘 下载链接: https://pan.baidu.com/s/1Qx4LsOl_rmfC_8SdDP1dyg 提取码: m8vg

  2. 解压后再/database/create 文件夹中找到对应数据库的sql文件 创建表,mysql三张表activiti.mysql.create.identity.sql、activiti.mysql.create.history.sql、activiti.mysql.create.engine.sql

  3. 解压war/activiti-explorer.war,将diagram-viewer,editor-app,modeler.html文件拷贝到resource/static目录下,将stencilset.json拷贝到resource/目录下

  4. 修改editor-app/app-cfg.js,演示版不需要路径

ACTIVITI.CONFIG = {
	//'contextRoot' : '/activiti-explorer/service',
	'contextRoot' : '',
};

5.解压libs\activiti-modeler-5.22.0-sources.jar 文件,将ModelEditorJsonRestResource.java/ModelSaveRestResource.java/StencilsetRestResource.java三个文件拷贝到controller文件

6.新建resources/processes目录

pox.xml

必要的依赖如下,具体参见该项目的pox.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- Activiti 启动器 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- Activiti 流程图 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-diagram-rest</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- Activiti 在线设计 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-modeler</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

配置文件

resources/application.yml配置内容

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://localhost:3306/springbootdemo?useUnicode=true&characterEncoding=utf-8&useSSL=false&useAffectedRows=true
    username: root
    password: root
    hikari:
      minimum-idle: 5
      maximum-pool-size: 15
      auto-commit: true
      idle-timeout: 30000
      pool-name: DatebookHikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1

  activiti:
    check-process-definitions: false # activti是否自动部署
    db-identity-used: false #是否使用activti自带的用户体系
    database-schema-update: true #是否每次都更新数据库

代码解析

ActivitiController.java 如下 先创建模型再跳转到在线设计页面

@RestController
@RequestMapping("/activiti")
public class ActivitiController {
    /**
     * 创建模型
     */
    @RequestMapping("/create")
    public void create(HttpServletRequest request, HttpServletResponse response) {
        try {
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

            RepositoryService repositoryService = processEngine.getRepositoryService();

            ObjectMapper objectMapper = new ObjectMapper();
            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);
            Model modelData = repositoryService.newModel();

            ObjectNode modelObjectNode = objectMapper.createObjectNode();
            modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, "bootan-test");
            modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
            String description = "bootan-test";
            modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
            modelData.setMetaInfo(modelObjectNode.toString());
            modelData.setName("bootan-test");
            modelData.setKey("bootan-test123");

            //保存模型
            repositoryService.saveModel(modelData);
            repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));
            response.sendRedirect(request.getContextPath() + "/modeler.html?modelId=" + modelData.getId());
        } catch (Exception e) {
            System.out.println("创建模型失败:");
        }
    }

}

SpringBootDemo801ActivitiDiagramApplication.java 如下增加exclude = {org.activiti.spring.boot.SecurityAutoConfiguration.class, org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class},不使用activiti中的安全验证

@SpringBootApplication(exclude = {
        org.activiti.spring.boot.SecurityAutoConfiguration.class,
        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})
public class SpringBootDemo801ActivitiDiagramApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemo801ActivitiDiagramApplication.class, args);
    }

}


运行

点击运行

浏览器访问 http://localhost:8080/activiti/create
创建模型后会自动跳转到  http://localhost:8080/modeler.html?modelId=12503

图片

设计完成后点击左上方的保存,官方的代码ModelEditorJsonRestResource.java会保存但是还是会报错,可以参考bootan的actitivi工作流

参考

如果您喜欢本Spring Boot入门样例和样例代码,请点赞Star

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值