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
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)
[Eleven] Springboot integra Quartz para optimizar las tareas de sincronización (súper detallado)
[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
[25] springboot integra filtros jedis y redisson Bloom para manejar la penetración de caché
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:
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;
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;
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;
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.
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.
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.
Agregue al dibujo haciendo clic derecho en el gráfico.
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 :
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.
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.
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.
3. En este momento, haga clic en el botón Ver proceso.
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. 5. Haga clic en el botón Atrás para regresar a Zhang San y reescribir los requisitos.
6. Inicie sesión en la cuenta de Zhang San (id: 1) y vuelva a enviar la solicitud. 7. Haga clic en Enviar para revisión y continúe seleccionando aprobadores.
8. Inicie sesión en la cuenta de Li Si y vuelva a aprobar (id: 2) 9. Elija aceptar esta vez
10. Verifique el diagrama de flujo nuevamente
11. Inicie sesión en la cuenta de Wang Wu (id: 3)
12. Haga clic en Aceptar 13. Vea el diagrama de flujo
14. Inicie sesión en la cuenta de Zhao Liu para su aprobación (id: 4)
15. Haga clic en
16. Volviendo a la lista de demandas de Zhang San, el estado del proceso ha finalizado.
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----------------------------------------------- -----------