日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot集成flowable-modeler(6.4.1) 实现免登

發布時間:2024/9/27 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot集成flowable-modeler(6.4.1) 实现免登 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因公司需求需要將flowable的流程設計器集成到項目中,下面將最近的研究成果記錄一下。



文章目錄

    • 一、下載flowable-modeler源碼
    • 二、添加相關maven包
    • 三、調用idm服務重新接口
    • 四、配置類
    • 五、啟動類跳過登陸攔截
    • 六、配置文件

一、下載flowable-modeler源碼

  • 把flowable-ui-modeler-app\src\main\resources\static下面的代碼拷貝至我們自己的工程

二、添加相關maven包

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.gblfy</groupId><artifactId>flowable</artifactId><version>0.0.1-SNAPSHOT</version><name>flowable_modeler</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!--去除本身的logback,使用log4j,如果想要使用logback需要添加commons-logging--><exclusions><!-- 去除舊log依賴 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><exclusions><!--去除本身的logback,使用log4j,如果想要使用logback需要添加commons-logging--><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>org.flowable</groupId><artifactId>flowable-groovy-script-static-engine</artifactId><version>6.4.1</version></dependency><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.5.4</version><type>pom</type></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!-- https://mvnrepository.com/artifact/org.liquibase/liquibase-core --><dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId><version>3.6.2</version></dependency><!-- Logging --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-test --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.9.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.flowable/flowable-spring-boot-starter-process --><dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter-process</artifactId><version>6.4.1</version></dependency><dependency><groupId>org.flowable</groupId><artifactId>flowable-ui-modeler-rest</artifactId><version>6.4.1</version></dependency><!-- dbpool的jar --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency><!-- mysql驅動包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.28</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

三、調用idm服務重新接口

  • flowable獲取用戶是調用idm服務,這里前端修改獲取用戶信息接口自己實現接口
package com.gblfy.flowable.controller;import org.flowable.idm.api.User; import org.flowable.idm.engine.impl.persistence.entity.UserEntityImpl; import org.flowable.ui.common.model.UserRepresentation; import org.flowable.ui.common.security.SecurityUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList; import java.util.List;/*** @ClassName GblfyRemoteAccountResource* @Description 內置用戶登錄* @Author gblfy* @Date 2019/11/17 20:12*/ @RestController @RequestMapping("/gblfy") public class GblfyRemoteAccountResource {/*** GET /rest/account -> get the current user.*/@RequestMapping(value = "/rest/account", method = RequestMethod.GET, produces = "application/json")public UserRepresentation getAccount() {User user=new UserEntityImpl();user.setId("gblfy");SecurityUtils.assumeUser(user);UserRepresentation userRepresentation = new UserRepresentation();userRepresentation.setId("gblfy");userRepresentation.setFirstName("gblfy");List<String> privileges=new ArrayList<>();privileges.add("flowable-idm");privileges.add("flowable-modeler");privileges.add("flowable-task");userRepresentation.setPrivileges(privileges);return userRepresentation;} }

四、配置類

package com.gblfy.flowable.config;import liquibase.Liquibase; import liquibase.database.Database; import liquibase.database.DatabaseConnection; import liquibase.database.DatabaseFactory; import liquibase.database.jvm.JdbcConnection; import liquibase.exception.DatabaseException; import liquibase.resource.ClassLoaderResourceAccessor; import org.apache.ibatis.session.SqlSessionFactory; import org.flowable.common.engine.api.FlowableException; import org.flowable.spring.SpringProcessEngineConfiguration; import org.flowable.ui.common.service.exception.InternalServerErrorException; import org.mybatis.spring.SqlSessionFactoryBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.support.ResourcePatternUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.Properties;/*** @ClassName ZhuangzProcessEngine* @Description TODO 構造流程引擎配置類* @Author gblfy* @Date 2019/11/17 20:12*/ @Configuration public class GblfyProcessEngine {private static final Logger LOGGER = LoggerFactory.getLogger(GblfyProcessEngine.class);//TODO 解決創建流程時報act_re_model找不到protected static final String LIQUIBASE_CHANGELOG_PREFIX = "ACT_DE_";@Autowiredprivate DataSource dataSource;@Autowiredprotected ResourceLoader resourceLoader;//事務管理器@Beanpublic DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource);return dataSourceTransactionManager;}@Beanpublic SpringProcessEngineConfiguration springProcessEngineConfiguration(){SpringProcessEngineConfiguration springProcessEngineConfiguration =new SpringProcessEngineConfiguration();springProcessEngineConfiguration.setDataSource(dataSource);springProcessEngineConfiguration.setDatabaseSchemaUpdate("true");springProcessEngineConfiguration.setTransactionManager(dataSourceTransactionManager(dataSource));return springProcessEngineConfiguration;}@Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);String databaseType = initDatabaseType(dataSource);if (databaseType == null) {throw new FlowableException("couldn't deduct database type");}try {Properties properties = new Properties();properties.put("prefix", "");properties.put("blobType", "BLOB");properties.put("boolValue", "TRUE");properties.load(this.getClass().getClassLoader().getResourceAsStream("properties/" + databaseType + ".properties"));sqlSessionFactoryBean.setConfigurationProperties(properties);sqlSessionFactoryBean.setMapperLocations(ResourcePatternUtils.getResourcePatternResolver(resourceLoader).getResources("classpath:/META-INF/modeler-mybatis-mappings/*.xml"));sqlSessionFactoryBean.afterPropertiesSet();return sqlSessionFactoryBean.getObject();} catch (Exception e) {throw new FlowableException("Could not create sqlSessionFactory", e);}}protected String initDatabaseType(DataSource dataSource) {String databaseType = null;Connection connection = null;try {connection = dataSource.getConnection();DatabaseMetaData databaseMetaData = connection.getMetaData();String databaseProductName = databaseMetaData.getDatabaseProductName();LOGGER.info("database product name: '{}'", databaseProductName);databaseType = databaseTypeMappings.getProperty(databaseProductName);if (databaseType == null) {throw new FlowableException("couldn't deduct database type from database product name '" + databaseProductName + "'");}LOGGER.info("using database type: {}", databaseType);} catch (SQLException e) {LOGGER.error("Exception while initializing Database connection", e);} finally {try {if (connection != null) {connection.close();}} catch (SQLException e) {LOGGER.error("Exception while closing the Database connection", e);}}return databaseType;}protected static Properties databaseTypeMappings = getDefaultDatabaseTypeMappings();public static final String DATABASE_TYPE_MYSQL = "mysql";public static final String DATABASE_TYPE_ORACLE = "oracle";public static Properties getDefaultDatabaseTypeMappings() {Properties databaseTypeMappings = new Properties();databaseTypeMappings.setProperty("MySQL", DATABASE_TYPE_MYSQL);databaseTypeMappings.setProperty("Oracle", DATABASE_TYPE_ORACLE);return databaseTypeMappings;}@Beanpublic Liquibase liquibase(DataSource dataSource) {LOGGER.info("Configuring Liquibase");Liquibase liquibase = null;try {DatabaseConnection connection = new JdbcConnection(dataSource.getConnection());Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);//TODO 解決創建流程時報act_re_model找不到database.setDatabaseChangeLogTableName(LIQUIBASE_CHANGELOG_PREFIX + database.getDatabaseChangeLogTableName());database.setDatabaseChangeLogLockTableName(LIQUIBASE_CHANGELOG_PREFIX + database.getDatabaseChangeLogLockTableName());liquibase = new Liquibase("META-INF/liquibase/flowable-modeler-app-db-changelog.xml", new ClassLoaderResourceAccessor(), database);liquibase.update("flowable");return liquibase;} catch (Exception e) {throw new InternalServerErrorException("Error creating liquibase database", e);} finally {closeDatabase(liquibase);}}private void closeDatabase(Liquibase liquibase) {if (liquibase != null) {Database database = liquibase.getDatabase();if (database != null) {try {database.close();} catch (DatabaseException e) {LOGGER.warn("Error closing database", e);}}}} }

五、啟動類跳過登陸攔截

package com.gblfy.flowable;import org.flowable.ui.modeler.properties.FlowableModelerAppProperties; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan;/*** SpringBoot啟動類** @Description跳過登陸攔截* @Author gblfy* @Date 2019/11/17 20:12*/ @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) @ComponentScan(basePackages = {"com.gblfy.flowable","org.flowable.ui.modeler","org.flowable.ui.common"}) public class FlowableApplication {public static void main(String[] args) {SpringApplication.run(FlowableApplication.class, args);}@Beanpublic FlowableModelerAppProperties flowableModelerAppProperties(){FlowableModelerAppProperties flowableModelerAppProperties = new FlowableModelerAppProperties();return flowableModelerAppProperties;} }

六、配置文件

server:port: 80 spring:datasource:url: jdbc:mysql://localhost:3306/flowable_boot?zeroDateTimeBehavior=convertToNull&useUnicode=true&useSSL=false&rewriteBatchedStatements=truedriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourceflowable:#關閉定時任務JOBasync-executor-activate: false將databaseSchemaUpdate設置為true。當Flowable發現庫與數據庫表結構不一致時,會自動將數據庫表結構升級至新版本。database-schema-update: truecommon:app:idm-url: http://127.0.0.1://80/flowable-idm

項目源碼下載:
https://gitee.com/gb_90/flow-modeler-sduty

總結

以上是生活随笔為你收集整理的SpringBoot集成flowable-modeler(6.4.1) 实现免登的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 极品毛片 | 制服丝袜亚洲 | 九九在线观看视频 | 18视频在线观看男男 | 日本三级少妇 | 激情丁香六月 | 免费黄色小视频 | 日韩欧美中文字幕在线观看 | 麻豆国产一区二区 | 欧美一级黄色片网站 | 天堂欧美城网站 | 人人玩人人弄 | 欧美电影一区 | 18岁禁黄网站 | 女人洗澡一级特黄毛片 | 免费级毛片 | 99视频久久 | 黄金网站在线观看 | 热99在线| 日本福利片在线观看 | 厨房性猛交hd | 国产专区一区二区三区 | 亚洲精品久久久久久久久久 | 一区二区三区小说 | 肉大捧一进一出免费视频 | 91理论片 | 国产视频一 | 精国产人伦一区二区三区 | 激情九月婷婷 | 国产av无码专区亚洲av毛网站 | 亚洲最大在线 | 欧美精品色婷婷五月综合 | 丰满雪白极品少妇流白浆 | 婷婷tv | 在线一区二区三区视频 | 91精品一区二区三区四区 | 久久精品久久精品久久 | 不卡的av在线免费观看 | 精品成人一区二区三区久久精品 | 亚洲乱码精品久久久久.. | 亚洲第一大综合区 | 亚洲中文在线一区 | 亚洲免费不卡视频 | 久久爱资源网 | 超碰人人草人人干 | 九九热九九热 | 国产无遮挡免费 | 成人黄色大片在线观看 | 欧美精品欧美极品欧美激情 | 成熟了的熟妇毛茸茸 | 日本黄页网站免费大全 | 日韩电影一区二区 | 奇米影视亚洲春色 | 精品韩国一区二区三区 | 成人av网站在线观看 | 国产重口老太伦 | 精品一区二区在线观看 | 老外黄色一级片 | 国产女人叫床高潮大片免费 | 免费特级黄色片 | 黑人借宿巨大中文字幕 | 视色影视| 电影寂寞少女免费观看 | 国产一级爽片 | 精品人妻少妇一区二区三区 | 91青草视频 | 国产男女无套免费网站 | 中文视频一区二区 | 欧美精品色婷婷五月综合 | 国产一区影院 | 国产av电影一区 | 国产一区二区福利 | 尤物视频在线观看国产性感 | 黄色片地址 | 黄色片在线免费观看视频 | 国产主播喷水 | 成人1区2区3区 | 最近中文字幕免费mv视频7 | 欧美亚洲天堂网 | 日本免费一区二区三区视频 | 男男受被啪到高潮自述 | 免费看片色 | 亚洲中文字幕一区 | 国产精品91av | 能看的av| aa在线| 男女黄网站 | 公交顶臀绿裙妇女配视频 | 国产一区免费看 | 午夜影院 | 粗大黑人巨茎大战欧美成人免费看 | 亚洲精品久久久久久久久 | 96在线观看 | 91青草视频| 美梦视频大全在线观看高清 | 日韩视频播放 | 亚一区二区 | 人妻熟女一区二区aⅴ水 | 午夜在线观看视频 |