青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長(zhǎng)網(wǎng)

SpringBoot整合Activiti7的實(shí)現(xiàn)代碼

2022-10-15 09:49| 查看: 1440 |來(lái)源: 互聯(lián)網(wǎng)

Activiti7發(fā)布正式版之后,它與SpringBoot2.x已經(jīng)完全支持整合開發(fā)。我們可以將Activiti7與SpringBoot整合開發(fā)的坐標(biāo)引入到工程中,從而達(dá)到SpringBoot支持Activ ...

Activiti7發(fā)布正式版之后,它與SpringBoot2.x已經(jīng)完全支持整合開發(fā)。我們可以將Activiti7與SpringBoot整合開發(fā)的坐標(biāo)引入到工程中,從而達(dá)到SpringBoot支持Activti7整合。

1.使用IDEA創(chuàng)建SpringBoot項(xiàng)目

在工程的pom.xml文件中引入相關(guān)的依賴,具體依賴如下所示

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.1.RELEASE
com.example
activiti
0.0.1-SNAPSHOT
activiti
Demo project for Spring Boot
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.activiti
activiti-spring-boot-starter
7.0.0.Beta2
org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
5.1.27
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-maven-plugin

2.application.yml文件配置

為了能夠?qū)崿F(xiàn)Activiti7生成的表放到Mysql數(shù)據(jù)庫(kù)中,需要在配置文件application.yml中添加相關(guān)的配置

server:
 port: 8085
spring:
 application:
  name: spring-activiti
 datasource:
  url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&nullCatalogMeansCurrent=true
  username: root
  password: 123456
  driver-class-name: com.mysql.jdbc.Driver
 activiti:
  #1.flase: 默認(rèn)值。activiti在啟動(dòng)時(shí),會(huì)對(duì)比數(shù)據(jù)庫(kù)表中保存的版本,如果沒有表或者版本不匹配,將拋出異常
  #2.true: activiti會(huì)對(duì)數(shù)據(jù)庫(kù)中所有表進(jìn)行更新操作。如果表不存在,則自動(dòng)創(chuàng)建
  #3.create_drop: 在activiti啟動(dòng)時(shí)創(chuàng)建表,在關(guān)閉時(shí)刪除表(必須手動(dòng)關(guān)閉引擎,才能刪除表)
  #4.drop-create: 在activiti啟動(dòng)時(shí)刪除原來(lái)的舊表,然后在創(chuàng)建新表(不需要手動(dòng)關(guān)閉引擎)
  database-schema-update: true
  #檢測(cè)歷史表是否存在
  db-history-used: true
  #記錄歷史等級(jí) 可配置的歷史級(jí)別有none, activity, audit, full
  history-level: full
  #校驗(yàn)流程文件,默認(rèn)校驗(yàn)resources下的processes文件夾里的流程文件
  check-process-definitions: false

3.添加SpringSecurity安全框架整合配置

Activiti7與SpringBoot整合后,默認(rèn)情況下,集成了SpringSecurity安全框架,這樣我們就要去準(zhǔn)備SpringSecurity整合進(jìn)來(lái)的相關(guān)用戶權(quán)限配置信息

1)添加SecurityUtil類

為了能夠快速實(shí)現(xiàn)SpringSecurity安全框架的配置,所添加的一個(gè)組件。

@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
getAuthorities() {
        return user.getAuthorities();
      }

      @Override
      public Object getCredentials() {
        return user.getPassword();
      }

      @Override
      public Object getDetails() {
        return user;
      }

      @Override
      public Object getPrincipal() {
        return user;
      }

      @Override
      public boolean isAuthenticated() {
        return true;
      }

      @Override
      public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {

      }

      @Override
      public String getName() {
        return user.getUsername();
      }
    }));
    org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(username);
  }
}

這個(gè)類可以從Activiti7官方提供的Example中找到。

2)添加DemoApplicationConfig類

它的作用是為了實(shí)現(xiàn)SpringSecurity框架的用戶權(quán)限的配置,這樣我們就可以在系統(tǒng)中使用用戶權(quán)限信息

@Configuration
public class DemoApplicationConfiguration {

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

  @Bean
  public UserDetailsService myUserDetailsService() {

    InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();

    String[][] usersGroupsAndRoles = {
        {"salaboy", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"},
        {"ryandawsonuk", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"},
        {"erdemedeiros", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"},
        {"other", "password", "ROLE_ACTIVITI_USER", "GROUP_otherTeam"},
        {"system", "password", "ROLE_ACTIVITI_USER"},
        {"admin", "password", "ROLE_ACTIVITI_ADMIN"},
    };

    for (String[] user : usersGroupsAndRoles) {
      List
authoritiesStrings = Arrays.asList(Arrays.copyOfRange(user, 2, user.length));
      logger.info("> Registering new user: " + user[0] + " with the following Authorities[" + authoritiesStrings + "]");
      inMemoryUserDetailsManager.createUser(new User(user[0], passwordEncoder().encode(user[1]),
          authoritiesStrings.stream().map(s -> new SimpleGrantedAuthority(s)).collect(Collectors.toList())));
    }


    return inMemoryUserDetailsManager;
  }


  @Bean
  public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
  }

}

4)創(chuàng)建測(cè)試類

@SpringBootTest
@Slf4j
class ActivitiApplicationTests {

  @Autowired
  private ProcessEngine processEngine;

  /**
   * 流程定義的部署
   */
  @Test
  public void createDeploy() { 
    RepositoryService repositoryService = processEngine.getRepositoryService();

    Deployment deployment = repositoryService.createDeployment()
        .addClasspathResource("diagram/holiday.bpmn")//添加bpmn資源
        .addClasspathResource("diagram/holiday.png")
        .name("請(qǐng)假申請(qǐng)單流程")
        .deploy(); 
        
    log.info("流程部署id:" + deployment.getName());
    log.info("流程部署名稱:" + deployment.getId());
  }
}

運(yùn)行結(jié)果:

遇到的問題:

1)歷史表默認(rèn)不會(huì)生成,需在application.yml中配置

spring:
 activiti:
  #檢測(cè)歷史表是否存在
  db-history-used: true
  #記錄歷史等級(jí) 可配置的歷史級(jí)別有none, activity, audit, full
  history-level: full

以上所述是小編給大家介紹的SpringBoot整合Activiti7的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)17站長(zhǎng)網(wǎng)的支持!

本文最后更新于 2022-10-15 09:49,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)诰W(wǎng)站留言或聯(lián)系站長(zhǎng):[email protected]
·END·
站長(zhǎng)網(wǎng)微信號(hào):w17tui,關(guān)注站長(zhǎng)、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營(yíng)銷服務(wù)中心

免責(zé)聲明:本站部分文章和圖片均來(lái)自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!

17站長(zhǎng)網(wǎng)微信二維碼

始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信

大家都在看

熱門排行

    最近更新

      返回頂部
      主站蜘蛛池模板: 亚洲精品AV无码重口另类 | 在线观看亚洲AV无码每日更新 | 丝袜美女被艹 | 在线看片亚洲 | 国产成人精品午夜福麻豆报告 | www.99在线| 久久亚洲A片COM人成A | 久久综合九色综合国产 | 在线观看国产人视频免费中国 | 6080yy亚洲久久无码 | 18禁黄无遮挡禁游戏在线下载 | 国产精品久久久久a影院 | 麻豆国产96在线日韩麻豆 | 秋霞电影网午夜免费鲁丝片 | 小妇人电影免费完整观看2021 | 男人J放进女人屁股免费观看 | 4480yy午夜私人影院 | 国产中文字幕乱码免费 | 久久亚洲精品AV无码四区 | 色欲人妻无码AV专区 | 中文字幕国产在线观看 | 亚洲春色AV无码专区456 | 无码内射成人免费喷射 | 日本无码免费久久久精品 | 97超碰免费人妻中文 | 扒开老师大腿猛进AAA片邪恶 | 午夜福利理论片高清在线 | 国产乱人视频在线观看 | 亚洲伊人久久大香线蕉综合图片 | 国产亚洲一区二区三区啪 | 中文字幕视频免费在线观看 | 亚洲一级毛片免费在线观看 | 欧美18精品久久久无码午夜福利 | 午夜视频在线瓜伦 | 国产精品免费一区二区区 | avv天堂| 美女网站免费看 | 男女一边摸一边做羞羞的事情免费 | 97精品少妇偷拍AV | 国产露脸无码A区久久蘑菇 国产露脸无码A区久久 | 野花社区视频WWW高清 |