[22] actividad de integración de springboot7 (1) demostración práctica

        Los siguientes capítulos de este capítulo integrarán springboot + activiti7 para registrar su propio proceso de aprendizaje. Dado que la demostración es demasiado larga, se describirá en varios capítulos. Después de terminar de escribir, se adjuntarán enlaces a los siguientes capítulos al final del Artículo. Este capítulo describe principalmente los requisitos de la demostración y una demostración del efecto final. La construcción e implementación específicas se describirán a su vez en los siguientes capítulos.

Navegación del grupo de intercambio Qq ——> 231378628

Tabla de contenido

1. Descripción de la demostración

2. Preparación

3. Visualización de efectos


 La columna general del capítulo Springboot: 


[1] springboot integra swagger (súper detallado

[2] springboot integra swagger (personalizado) (súper detallado)

[3] token de integración springboot (súper detallado)

[4] springboot integra mybatis-plus (súper detallado) (activado)

[5] springboot integra mybatis-plus (súper detallado) (abajo)

[6] springboot integra manejo de excepciones global personalizado

[7] springboot integra redis (súper detallado)

[8] springboot integra AOP para realizar operaciones de registro (súper detallado)

[Nueve] tareas de sincronización integradas de Springboot (súper detalladas)

[10] springboot integra redis para realizar el servicio de inicio, es decir, guardar los datos del punto de acceso en global y redis (súper detallado)

[Eleven] Springboot integra Quartz para optimizar las tareas de sincronización (súper detallado)

[Doce] Springboot integra el grupo de subprocesos para resolver la alta concurrencia (súper detallado, para que sigas comprendiendo)

[Trece] springboot integra llamadas asincrónicas y obtiene valores de retorno (súper detallado)

[14] springboot integra WebService (súper detallado)

[Quince] Springboot integra WebService (sobre pasar parámetros) (súper detallado)

[16] springboot integra WebSocket (súper detallado)

[Seventeen] Springboot integra WebSocket para realizar una sala de chat (súper detallado)

[Dieciocho] Springboot implementa un manejo de excepciones global personalizado

[Diecinueve] Springboot integra el combate real de ElasticSearch (diez mil caracteres)

[Veinte] combate de filtro de integración springboot

[21] springboot integra interceptores en combate real y compara filtros

[22] actividad de integración de springboot7 (1) demostración práctica

【23】 Explicación detallada del negocio de primavera integrado de Springboot y combate real

[24] Springboot utiliza EasyExcel y un grupo de subprocesos para realizar la importación de datos de Excel mediante subprocesos múltiples

[25] springboot integra filtros jedis y redisson Bloom para manejar la penetración de caché

[26] springboot implementa el procesamiento de transacciones multiproceso_springboot transacción multiproceso

[27] springboot realiza la función de guardar la información de inicio de sesión actual como la sesión a través del analizador de parámetros threadLocal +


1. Descripción de la demostración

         Escenario: Supongamos que una determinada empresa se encuentra actualmente en una rectificación de gestión, si un gerente de producto quiere plantear una demanda, además de satisfacer a la Parte A, también debe satisfacer a los codificadores, en este momento puede haber un proceso de aprobación. como sigue:

ae1fed7d41ec4f828b47ade851c405b7.png        Posteriormente, el proceso de aprobación anterior se realizará integrando actividades.

        El efecto logrado es: desde el gerente de producto para iniciar el proceso, cada nodo posterior se puede pasar o devolver, y el retorno es regresar al paso del gerente de producto. Luego implemente una función de seguimiento de registros de proceso y seguimiento de diagrama de flujo. Excepto por la aprobación y el regreso al nodo inicial, otras operaciones estarán vacías más adelante y luego aprenderán lentamente.


2. Preparación

1. El primer paso

        Preparar la base de datos.

Necesita la tabla de activi y su propia tabla de negocios. La tabla de Activiti se creará automáticamente cuando se implemente. Por ahora, las tablas de negocios involucradas en esta demostración son las siguientes:

Nombre de la tabla describir
usuario tabla de usuarios
role tabla de roles
rol del usuario Tabla de asociación de roles de usuario
demanda Formulario de solicitud
CREATE TABLE `demand` (
  `id` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主键',
  `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '流程状态,-1是未启动,0是填写表单,1是组长审批,2是开发经理审批,3是项目经理审批,4是结束',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '需求名称',
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '需求具体内容',
  `salt` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '盐字段',
  `taskid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '任务id',
  `createuser` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '发起人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
CREATE TABLE `role` (
  `id` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '主键',
  `role` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '角色名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

1f85600967674a1480133b5bbd2999b0.png

CREATE TABLE `user` (
  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
  `username` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '用户名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

c39ef4c1ea3749c88dbbd342f6b5b4cb.png

CREATE TABLE `user_role` (
  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
  `userid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '用户id',
  `roleid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '角色id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

 e635816df9f84d09a7f6c4fc8892daea.png

2. El segundo paso

        La idea instala el complemento y dibuja un diagrama de flujo.

Dibuje un diagrama de flujo que activiti pueda reconocer e implementar la implementación. De forma predeterminada, activiti puede implementar archivos que terminen en .bpmn y **.bpmn20.xml.

idea tiene muchos complementos para dibujar diagramas bpmn y elegí el visualizador activiti BPMN.

a9e728971b2c481683d934690c9dd523.png

Una vez completada la instalación, reinicie la idea y haga clic derecho para crear el siguiente archivo en el directorio de recursos del proyecto springboot creado.

d84b89221fe84608a4cb35f2e27df6de.png

 73d375cb201a44f59471949acc48967d.png

Una vez completada la creación, se generará un archivo xml. Haga clic derecho en este archivo y seleccione ver... para abrir el diagrama de flujo.

5e91ea8ffe674542b608582a4d617eb2.png

Agregue al dibujo haciendo clic derecho en el gráfico.

8f9575002cd84fc6862391ddd91fdf12.png

Finalmente, el diagrama de flujo anterior se dibujó de acuerdo con el escenario de demanda de la demostración. Los diamantes son puertas de enlace exclusivas y los rectángulos son eventos de usuario .

Los parámetros específicos en cada nodo y línea se discutirán más adelante. Aquí, hablemos de un parámetro , es mejor no usar el mismo nombre , de lo contrario habrá problemas. 

3. El tercer paso

        Cree un proyecto e importe las dependencias necesarias.

Aquí está la estructura de directorios de mi proyecto :

ba719a1dbebc4ec4bc0e99b94f835c3c.png

Luego importe las dependencias requeridas por esta demostración , de la siguiente manera:

<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>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M3.1</version>
            <exclusions>
                <exclusion><!-- 排除activiti的mybatis,避免和外面的mybatis-plus冲突 -->
                    <!-- 重点坑,不然启动项目会报错mybatisplus缺少类   -->
                    <artifactId>mybatis</artifactId>
                    <groupId>org.mybatis</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.22</version>
        </dependency>

        <!--   数据依赖     -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--流程图依赖-->
        <!--  试了几个版本的,有些版本的会导致图片展示不全,注意  -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-image-generator</artifactId>
            <version>5.20.0</version>
        </dependency>

    </dependencies>

Hay algunos errores a los que se debe prestar atención, que están marcados en los comentarios anteriores, por ejemplo, el conflicto entre mybatisplus y activiti y la dependencia de la función de diagrama de flujo de vista previa posterior conducirá a una visualización incompleta, etc. 

4. Modificar el archivo de configuración.

989c35d040f0480b8ffbee15c4e5af79.png


server:
  port: 8080

spring:
  datasource:
    username: root
    password: 123456
    #    加上nullCatalogMeansCurrent=true才能自动创建activiti需要的表
    url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true

  activiti:
    database-schema-update: true
    check-process-definitions: true
    #  注意,如果activiti后面加上了/,就要求启动的时候process文件夹中需要有流程定义文件
    #  是指定activiti流程描述文件的前缀(路径),启动时,activiti就会去寻找此路径下的流程描述文件,并且自动部署
    process-definition-location-prefix: classpath:/activiti/
    #  suffix 是一个String数组,表示描述文件的默认后缀名,默认**.bpmn和**.bpmn20.xml
    #    process-definition-location-suffixes:
    #      - **.bpmn
    #      - **.bpmn20.xml
    #  Activiti7历史数据无法自动插入,开启下面两个配置
    history-level: audit
    db-history-used: true
#  mapper.xml文件所在路径
mybatis-plus:
  mapper-locations: classpath*:mapper/**/*Mapper.xml
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志

He escrito la descripción específica en los comentarios.


3. Visualización de efectos

        Una vez finalizado el trabajo preparatorio, se puede iniciar la codificación. Hay muchos códigos de demostración, por lo que lo siguiente solo mostrará el efecto.

1. Primero, inicie sesión en Zhang San (gerente de producto, ID es 1) de manera simulada e ingrese a la interfaz Mis requisitos para realizar una solicitud.

a5f513d47f4041408d6f62379b651632.png

6aadfc91921d4fbd9bbe77fb7a844891.png

9d4f9ac5da0b45bdb1c4473b60672e9f.png

2. Una vez completada la adición, el proceso no se inicia. Zhang San hace clic para iniciar el proceso y hace clic en el botón Enviar para revisión, selecciona el aprobador y hace clic en Guardar.

f9e48bef6e3b46c482b5e89e72e7b1bb.png

9a48f4447e964f85857e1123bc71c446.pngb0a50bded19843a08d675a0e6afcb06b.png

3. En este momento, haga clic en el botón Ver proceso.5dc4f48d8b7c4a7291be3bf470a36bdf.png

4. Puede ver que el proceso ahora está en el lugar del líder del equipo, es decir, Li Si en la configuración de la base de datos, y luego iniciar sesión en la cuenta de Li Si, ingresar a la interfaz de tareas pendientes y ver la lista de tareas pendientes. 680e3c3045664243b0e3cbe6ef878b39.png9110ef8dd48b477da0f63dc0160daa62.png 5. Haga clic en el botón Atrás para regresar a Zhang San y reescribir los requisitos.

fe1a95835ddf45d59d26969af81eacc2.png0a6500ba5a3942be9e3dfed297e0cef0.png

6. Inicie sesión en la cuenta de Zhang San (id: 1) y vuelva a enviar la solicitud. 125ae210306b4fd49ea76a789f54dbce.pngb752efe68075425c95967d53bb61e2aa.png44969aab6bd54f79b26e5026f3d2ba32.png 7. Haga clic en Enviar para revisión y continúe seleccionando aprobadores.

0f8ebfd719a74cd5baa9745599e56f05.png800325c9d83b4c23b100d38347ca2e4a.png

8. Inicie sesión en la cuenta de Li Si y vuelva a aprobar (id: 2)  38df6137f3b34dbb8fdc775aecf2b475.pnge1e0168c04454092857e458c9bfeb314.png 9. Elija aceptar esta veza305f976a29c4d76855ad289b71e5047.png195d2f14cfc6468683bd65331f329b96.png

10. Verifique el diagrama de flujo nuevamented6473af806db450188d9fdf1c6f974ed.png

11. Inicie sesión en la cuenta de Wang Wu (id: 3)a988f3cdb12247dd96bc32cf6d567130.png

6a8ee90536824bda8d0e9c656d06688b.png

12. Haga clic en Aceptar 3cebf0d76a58402fb9b70157ce62878a.png0114d147711d48ada650966df9e84faf.png13. Vea el diagrama de flujo39d42a8467154675a8ac2e900d1774dd.png

14. Inicie sesión en la cuenta de Zhao Liu para su aprobación (id: 4)9df57d83178c4249adaa91ebff1cc498.png724347a1ad6147aba409b44daa5e2052.png

15. Haga clic en2c11ead80f2c40cdb3dd1642e37b466a.pngdf4566d13ee349bb87d2820c647634da.png

16. Volviendo a la lista de demandas de Zhang San, el estado del proceso ha finalizado.67ed7ee39843424cb354c138d2171811.png1dd7bf2f4b7a4509906766c04cfa8578.png

El efecto general es así. Los siguientes capítulos mostrarán y describirán el código de cada función, y lo escribirán lentamente cuando tenga tiempo.

-------------------------------------------------- --FIN----------------------------------------------- -----------


Supongo que te gusta

Origin blog.csdn.net/weixin_56995925/article/details/124530843
Recomendado
Clasificación