崛起於Springboot2.X + Activiti5.22(42)

《SpringBoot2.X心法總綱》  html

   (本篇博客已於2019-08-28優化更新)java

      聲明:該博客主要是Springboot1.X和Springboot2.X集成Activiti5.22版本,並說一下兩個版本的搭建不一樣的地方node

      技術:Springboot2.0.3+mysql+jpa(自動生成25張表)+Activiti5.22 /而後Springboot1.5.9從新集成一下mysql

      Git地址:簡單集成activiti地址git

一、建立工程

    版本2.0.X,沒有測試2.1.X,你們能夠試一下。web

二、pom文件

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </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>5.22.0</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring</artifactId>
        <version>5.22.0</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-modeler</artifactId>
        <version>5.22.0</version>
    </dependency>
    <!--jpa-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

三、application.yml

#整合Activit
spring:
  jpa:
    hibernate:
      ddl-auto: update   # first:create table ,next :update table
    database: MYSQL
    #整合JPA
    show-sql: true
  activiti:
    check-process-definitions: false
  datasource:
    url: jdbc:mysql://192.138.3.15:3306/testMdxl?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
    username: 
    password: 
    driver-class-name: com.mysql.jdbc.Driver
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    testWhileIdle: true
  security:
    user:
      name: user
      password: 1234

四、導入Activiti的源碼

      就是下載activiti的框架,而後從裏面拿出部分代碼做爲本身項目的一部分全的。spring

  碼雲地址==》點擊  三個java文件,一個public文件夾,還有一個json文件:三部分。sql

五、controller層

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by mujiuitan on 2018/12/17.
 */
@RestController
@RequestMapping(value = "/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, "hello1111");
            modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
            String description = "hello1111";
            modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
            modelData.setMetaInfo(modelObjectNode.toString());
            modelData.setName("hello1111");
            modelData.setKey("12313123");
            //保存模型
            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("建立模型失敗:");
        }
    }
}

六、在啓動類上添加

@EnableAutoConfiguration(exclude = {
        //org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
        org.activiti.spring.boot.SecurityAutoConfiguration.class
})

七、啓動測試

      訪問路徑:http://localhost:8080/activiti/createjson

      剛開始訪問的時候會有一個彈框:提供用戶名和密碼,剛剛在配置文件已經寫了,user和1234填寫這兩個就行了。canvas

而後生成的25張表,我記憶裏好像是21張,至於多出來不知道哈,用Jpa實現的。

八、Springboot1.X配置

      不一樣版本Springboot1.X集成Activiti5.22 的不一樣之處,在配置文件中,Springboot1.X就不用寫下面的配置,也不會有彈框

security:
  user:
    name: user
    password: 1234

      7.2 在啓動類,Springboot1.X須要多添加一個類

@EnableAutoConfiguration(exclude = {
        org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
        org.activiti.spring.boot.SecurityAutoConfiguration.class
})

      org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class 這個類在Springboot2.X已經註釋了,由於版本升級已經找不到這個類了,可是1.X還有,把這個加上就不會有彈框出現讓填寫用戶名和密碼了。

      結束,感謝!

相關文章
相關標籤/搜索