2024年最新Activiti工作流引擎整合系列【收藏可做笔记系列】(1),2024年最新Web前端驱动面试

框架相关

原生JS虽能实现绝大部分功能,但要么就是过于繁琐,要么就是存在缺陷,故绝大多数开发者都会首选框架开发方案。现阶段较热门是React、Vue两大框架,两者工作原理上存在共通点,也存在一些不同点,对于校招来说,不需要两个框架都学得特别熟,一般面试官会针对你简历中写的框架进行提问。

在框架方面,生命周期、钩子函数、虚拟DOM这些基本知识是必须要掌握的,在学习的过程可以结合框架的官方文档

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

Vue框架

知识要点:
1. vue-cli工程
2. vue核心知识点
3. vue-router
4. vuex
5. http请求
6. UI样式
7. 常用功能
8. MVVM设计模式

React框架

知识要点:
1. 基本知识
2. React 组件
3. React Redux
4. React 路由

7.0.0.Beta1

org.activiti

activiti-bpmn-layout

7.0.0.Beta1

org.activiti.cloud

activiti-cloud-services-api

7.0.0.Beta1

aspectj

aspectjweaver

1.5.4

mysql

mysql-connector-java

5.1.40

junit

junit

4.12

org.springframework

spring-test

5.0.7.RELEASE

log4j

log4j

${log4j.version}

org.slf4j

slf4j-api

${slf4j.version}

org.slf4j

slf4j-log4j12

${slf4j.version}

org.slf4j

slf4j-nop

${slf4j.version}

org.mybatis

mybatis

3.4.5

commons-dbcp

commons-dbcp

1.4

alfresco

Activiti Releases

https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/

true

在Activiti中核心类的是ProcessEngine流程引擎,与Spring整合就是让Spring来管理ProcessEngine

通过org.activiti.spring.SpringProcessEngineConfiguration 与Spring整合方式来创建ProcessEngine对象。

创建spring与activiti的整合配置文件:activiti-spring.xml(名称不固定)

2)、创建activiti-spring.xml

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns:tx=“http://www.springframework.org/schema/tx”

xmlns:aop=“http://www.springframework.org/schema/aop”

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd">

<tx:advice id=“txAdvice” transaction-manager=“transactionManager”>

tx:attributes

<tx:method name=“save*” propagation=“REQUIRED”/>

<tx:method name=“insert*” propagation=“REQUIRED”/>

<tx:method name=“delete*” propagation=“REQUIRED”/>

<tx:method name=“update*” propagation=“REQUIRED”/>

<tx:method name=“find*” propagation=“SUPPORTS” read-only=“true”/>

<tx:method name=“get*” propagation=“SUPPORTS” read-only=“true”/>

</tx:attributes>

</tx:advice>

databaseSchemaUpdate的取值内容:

flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。(生产环境常用)

true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。(开发时常用)

create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。(单元测试常用)

drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。

1.2 测试Activiti与Spring整合


1)、测试代码

/**

测试activiti与spring整合是否成功

**/

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = “classpath:activiti-spring.xml”)

public class ActivitiTest {

@Autowired

private RepositoryService repositoryService;

@Test

public void test01(){

System.out.println(“部署对象:”+repositoryService);

}

}

2)、执行流程分析

下面我们一起来分析Activiti与Spring整合加载的过程。

1、加载activiti-spring.xml配置文件

2、加载SpringProcessEngineConfiguration对象,这个对象它需要依赖注入dataSource对象和transactionManager对象。

3、加载ProcessEngineFactoryBean工厂来创建ProcessEngine对象,而ProcessEngineFactoryBean工厂又需要依赖注入processEngineConfiguration对象。

4、processEngine对象来负责创建我们的Service对象,从而简化Activiti的开发过程。

二、Activiti7与SpringBoot整合开发

====================================================================================

Activiti7发布正式版之后,它与SpringBoot2.x已经完全支持整合开发。

2.1 SpringBoot整合Activiti7的配置


为了能够实现SpringBoot与Activiti7整合开发,首先我们要引入相关的依赖支持。

在工程的pom.xml文件中引入相关的依赖,其中activiti的依赖是:activiti-spring-boot-starter。

具体依赖如下所示:

org.springframework.boot

spring-boot-starter-parent

2.1.0.RELEASE

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-jdbc

org.springframework.boot

spring-boot-starter-test

org.activiti

activiti-spring-boot-starter

7.0.0.Beta2

mysql

mysql-connector-java

5.1.29

org.projectlombok

lombok

org.springframework.boot

spring-boot-maven-plugin

通过该pom.xml文件所导入的坐标,我们就可以实现activiti7与Springboot整合。

2.2 SpringBoot的application.yml文件配置


为了能够实现Activiti7生成的表放到Mysql数据库中,需要在配置文件application.yml中添加相关的配置

注意:activiti7默认没有开启数据库历史记录,需要手动配置开启

spring:

datasource:

url: jdbc:mysql:///actspringboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT

username: root

password: 123456

driver-class-name: com.mysql.jdbc.Driver

activiti:

#1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常

#2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建

#3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)

#4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)

database-schema-update: true

#检测历史表是否存在 activiti7默认没有开启数据库历史记录 启动数据库历史记录

db-history-used: true

#记录历史等级 可配置的历史级别有none, activity, audit, full

#none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。

#activity:级别高于none,保存流程实例与流程行为,其他数据不保存。

#audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。

#full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。

history-level: full

#校验流程文件,默认校验resources下的processes文件夹里的流程文件

check-process-definitions: false

2.3 编写启动类


package com.itheima;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class ActApplication {

public static void main(String[] args) {

SpringApplication.run(ActApplication.class,args);

}

}

2.4 添加SpringSecurity安全框架整合配置


因为Activiti7与SpringBoot整合后,默认情况下,集成了SpringSecurity安全框架,这样我们就要去准备SpringSecurity整合进来的相关用户权限配置信息。

SpringBoot的依赖包已经将SpringSecurity的依赖包也添加进项目中。

2.4.1 添加SecurityUtil类

为了能够快速实现SpringSecurity安全框架的配置,所添加的一个组件。

package com.itheima.utils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.security.core.Authentication;

import org.springframework.security.core.GrantedAuthority;

import org.springframework.security.core.context.SecurityContextHolder;

import org.springframework.security.core.context.SecurityContextImpl;

import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.security.core.userdetails.UserDetailsService;

import org.springframework.stereotype.Component;

import java.util.Collection;

@Component

public class SecurityUtil {

private Logger logger = LoggerFactory.getLogger(SecurityUtil.class);

@Autowired

@Qualifier(“myUserDetailsService”)

private UserDetailsService userDetailsService;

public void logInAs(String username) {

UserDetails user = userDetailsService.loadUserByUsername(username);

if (user == null) {

throw new IllegalStateException(“User " + username + " doesn’t exist, please provide a valid user”);

}

logger.info("> Logged in as: " + username);

SecurityContextHolder.setContext(

new SecurityContextImpl(

new Authentication() {

@Override

public Collection<? extends GrantedAuthority> getAuthorities() {

return user.getAuthorities();

}

@Override

public Object getCredentials() {

return user.getPassword();

}

@Override

public Object getDetails() {

return user;

}

@Override

public Object getPrincipal() {

return user;

}

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

older.setContext(

new SecurityContextImpl(

new Authentication() {

@Override

public Collection<? extends GrantedAuthority> getAuthorities() {

return user.getAuthorities();

}

@Override

public Object getCredentials() {

return user.getPassword();

}

@Override

public Object getDetails() {

return user;

}

@Override

public Object getPrincipal() {

return user;

}

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-H2oNWy0h-1715694421259)]

[外链图片转存中…(img-nyFBPV45-1715694421260)]

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值