• springmvc 整合 camunda


    参考官网:Process Engine 配置 | docs.camunda.org

    一 POM

    注意:

    1 低版本c3p0会报错:Method com/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z 

    千万记得要删除Target包下的旧版本!!!
    
        com.mchange
        c3p0
        0.9.5.4
    

    2 低版本jackson会报错:com.fasterxml.jackson.databind.exc.InvalidDefinitionException

    
        com.fasterxml.jackson.core
        jackson-databind
        2.9.8
    

    3 如果先前创建过Camunda会报错:HistoryLevel mismatch

    删除Camunda,重新创建

    4 springmvc4 中 web.xml配置的Log4jConfigListener

    在springmvc5中已经弃用,所以需要修改

    参考:spring5.0解决Log4jConfigListener过期问题_dabaishaflyw的博客-CSDN博客

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <parent>
    5. <artifactId>abc.parentartifactId>
    6. <groupId>com.abcgroupId>
    7. <version>0.0.1-SNAPSHOTversion>
    8. parent>
    9. <modelVersion>4.0.0modelVersion>
    10. <artifactId>abc.webApproveartifactId>
    11. <packaging>warpackaging>
    12. <name>abc.webApprove Maven Webappname>
    13. <url>http://www.example.comurl>
    14. <properties>
    15. <camunda.version>7.17.0camunda.version>
    16. <spring.version>5.3.18spring.version>
    17. <h2.version>2.0.206h2.version>
    18. <slf4j.version>1.7.36slf4j.version>
    19. <maven.compiler.source>1.8maven.compiler.source>
    20. <maven.compiler.target>1.8maven.compiler.target>
    21. properties>
    22. <dependencies>
    23. <dependency>
    24. <groupId>com.abcgroupId>
    25. <artifactId>abc.webartifactId>
    26. dependency>
    27. <dependency>
    28. <groupId>org.hibernategroupId>
    29. <artifactId>hibernate-coreartifactId>
    30. <version>5.4.12.Finalversion>
    31. dependency>
    32. <dependency>
    33. <groupId>org.hibernategroupId>
    34. <artifactId>hibernate-entitymanagerartifactId>
    35. <version>5.4.12.Finalversion>
    36. dependency>
    37. <dependency>
    38. <groupId>org.hibernategroupId>
    39. <artifactId>hibernate-ehcacheartifactId>
    40. <version>5.4.12.Finalversion>
    41. dependency>
    42. <dependency>
    43. <groupId>org.springframework.datagroupId>
    44. <artifactId>spring-data-jpaartifactId>
    45. <version>1.11.13.RELEASEversion>
    46. dependency>
    47. <dependency>
    48. <groupId>org.camunda.bpmgroupId>
    49. <artifactId>camunda-engineartifactId>
    50. dependency>
    51. <dependency>
    52. <groupId>org.camunda.bpmgroupId>
    53. <artifactId>camunda-engine-springartifactId>
    54. dependency>
    55. <dependency>
    56. <groupId>org.springframeworkgroupId>
    57. <artifactId>spring-contextartifactId>
    58. dependency>
    59. <dependency>
    60. <groupId>org.springframeworkgroupId>
    61. <artifactId>spring-jdbcartifactId>
    62. dependency>
    63. <dependency>
    64. <groupId>org.springframeworkgroupId>
    65. <artifactId>spring-txartifactId>
    66. dependency>
    67. <dependency>
    68. <groupId>org.springframeworkgroupId>
    69. <artifactId>spring-ormartifactId>
    70. dependency>
    71. <dependency>
    72. <groupId>org.springframeworkgroupId>
    73. <artifactId>spring-webartifactId>
    74. dependency>
    75. <dependency>
    76. <groupId>com.mchangegroupId>
    77. <artifactId>c3p0artifactId>
    78. <version>0.9.5.4version>
    79. dependency>
    80. <dependency>
    81. <groupId>mysqlgroupId>
    82. <artifactId>mysql-connector-javaartifactId>
    83. dependency>
    84. <dependency>
    85. <groupId>com.fasterxml.jackson.coregroupId>
    86. <artifactId>jackson-databindartifactId>
    87. <version>2.9.8version>
    88. dependency>
    89. <dependency>
    90. <groupId>org.apache.logging.log4jgroupId>
    91. <artifactId>log4j-apiartifactId>
    92. <version>2.10.0version>
    93. dependency>
    94. <dependency>
    95. <groupId>org.apache.logging.log4jgroupId>
    96. <artifactId>log4j-coreartifactId>
    97. <version>2.10.0version>
    98. dependency>
    99. <dependency>
    100. <groupId>org.apache.logging.log4jgroupId>
    101. <artifactId>log4j-webartifactId>
    102. <version>2.9.1version>
    103. dependency>
    104. <dependency>
    105. <groupId>org.projectlombokgroupId>
    106. <artifactId>lombokartifactId>
    107. dependency>
    108. dependencies>
    109. <dependencyManagement>
    110. <dependencies>
    111. <dependency>
    112. <groupId>org.camunda.bpmgroupId>
    113. <artifactId>camunda-bomartifactId>
    114. <version>${camunda.version}version>
    115. <scope>importscope>
    116. <type>pomtype>
    117. dependency>
    118. <dependency>
    119. <groupId>org.springframeworkgroupId>
    120. <artifactId>spring-framework-bomartifactId>
    121. <version>${spring.version}version>
    122. <scope>importscope>
    123. <type>pomtype>
    124. dependency>
    125. dependencies>
    126. dependencyManagement>
    127. <build>
    128. <finalName>${project.artifactId}finalName>
    129. <plugins>
    130. <plugin>
    131. <groupId>org.apache.maven.pluginsgroupId>
    132. <artifactId>maven-war-pluginartifactId>
    133. plugin>
    134. <plugin>
    135. <groupId>org.apache.maven.pluginsgroupId>
    136. <artifactId>maven-assembly-pluginartifactId>
    137. plugin>
    138. <plugin>
    139. <groupId>org.apache.tomcat.mavengroupId>
    140. <artifactId>tomcat7-maven-pluginartifactId>
    141. <configuration>
    142. <uriEncoding>utf8uriEncoding>
    143. <port>9007port>
    144. <path>/path>
    145. configuration>
    146. plugin>
    147. plugins>
    148. <testResources>
    149. <testResource>
    150. <directory>${project.basedir}/src/test/resourcesdirectory>
    151. testResource>
    152. <testResource>
    153. <directory>${project.basedir}/src/main/resourcesdirectory>
    154. testResource>
    155. testResources>
    156. build>
    157. project>

    二 web.xml

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
    4. <display-name>webApprove</display-name>
    5. <description>审批系统</description>
    6. <context-param>
    7. <param-name>webAppRootKey</param-name>
    8. <param-value>webApprove.root</param-value>
    9. </context-param>
    10. <context-param>
    11. <param-name>log4jConfigLocation</param-name>
    12. <param-value>classpath:log4j/log4j.properties</param-value>
    13. </context-param>
    14. <context-param>
    15. <param-name>log4jRefreshInterval</param-name>
    16. <param-value>6000</param-value>
    17. </context-param>
    18. <context-param>
    19. <param-name>contextConfigLocation</param-name>
    20. <param-value>classpath:spring/applicationContext.xml</param-value>
    21. </context-param>
    22. <!-- log4j2-begin -->
    23. <listener>
    24. <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
    25. </listener>
    26. <filter>
    27. <filter-name>log4jServletFilter</filter-name>
    28. <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
    29. </filter>
    30. <filter-mapping>
    31. <filter-name>log4jServletFilter</filter-name>
    32. <url-pattern>/*</url-pattern>
    33. <dispatcher>REQUEST</dispatcher>
    34. <dispatcher>FORWARD</dispatcher>
    35. <dispatcher>INCLUDE</dispatcher>
    36. <dispatcher>ERROR</dispatcher>
    37. </filter-mapping>
    38. <!-- log4j2-end -->
    39. <listener>
    40. <description>spring监听器</description>
    41. <listener-class>org.springframework.web.context.ContextLoaderListener
    42. </listener-class>
    43. </listener>
    44. <listener>
    45. <description>防止内存泄露</description>
    46. <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    47. </listener>
    48. <listener>
    49. <listener-class>
    50. org.springframework.web.context.request.RequestContextListener
    51. </listener-class>
    52. </listener>
    53. <filter>
    54. <filter-name>springSessionRepositoryFilter</filter-name>
    55. <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    56. </filter>
    57. <filter-mapping>
    58. <filter-name>springSessionRepositoryFilter</filter-name>
    59. <url-pattern>/*</url-pattern>
    60. <dispatcher>REQUEST</dispatcher>
    61. <dispatcher>ERROR</dispatcher>
    62. </filter-mapping>
    63. <filter>
    64. <filter-name>characterEncodingFilter</filter-name>
    65. <filter-class>org.springframework.web.filter.CharacterEncodingFilter
    66. </filter-class>
    67. <init-param>
    68. <param-name>encoding</param-name>
    69. <param-value>UTF-8</param-value>
    70. </init-param>
    71. <init-param>
    72. <param-name>forceEncoding</param-name>
    73. <param-value>true</param-value>
    74. </init-param>
    75. </filter>
    76. <filter-mapping>
    77. <filter-name>characterEncodingFilter</filter-name>
    78. <url-pattern>/*</url-pattern>
    79. </filter-mapping>
    80. <filter>
    81. <filter-name>setBasePathFilter</filter-name>
    82. <filter-class>com.abc.web.filter.SetBasePathFilter</filter-class>
    83. </filter>
    84. <filter-mapping>
    85. <filter-name>setBasePathFilter</filter-name>
    86. <url-pattern>/*</url-pattern>
    87. </filter-mapping>
    88. <filter>
    89. <filter-name>checkSessionFilter</filter-name>
    90. <filter-class>com.abc.web.filter.CheckSessionFilter</filter-class>
    91. <init-param>
    92. <param-name>excludeUrl</param-name>
    93. <param-value>.*(login|check|setCookie).do.*</param-value>
    94. </init-param>
    95. </filter>
    96. <filter-mapping>
    97. <filter-name>checkSessionFilter</filter-name>
    98. <url-pattern>*.do</url-pattern>
    99. </filter-mapping>
    100. <filter>
    101. <filter-name>hibernateFilter</filter-name>
    102. <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    103. <!-- <init-param>
    104. <param-name>excludeSuffixs</param-name>
    105. <param-value>js,css,jpg,gif</param-value>
    106. </init-param>
    107. <init-param>
    108. <param-name>singleSession</param-name>
    109. <param-value>true</param-value>
    110. </init-param> -->
    111. <init-param>
    112. <param-name>sessionFactoryBeanName</param-name>
    113. <param-value>sessionFactory</param-value>
    114. </init-param>
    115. </filter>
    116. <filter-mapping>
    117. <filter-name>hibernateFilter</filter-name>
    118. <url-pattern>*.do</url-pattern>
    119. </filter-mapping>
    120. <servlet>
    121. <servlet-name>webApprove</servlet-name>
    122. <servlet-class>org.springframework.web.servlet.DispatcherServlet
    123. </servlet-class>
    124. <init-param>
    125. <param-name>contextConfigLocation</param-name>
    126. <param-value>classpath:spring/springmvc-servlet.xml</param-value>
    127. </init-param>
    128. <init-param>
    129. <param-name>detectAllHandlerExceptionResolvers</param-name>
    130. <param-value>false</param-value>
    131. </init-param>
    132. <load-on-startup>1</load-on-startup>
    133. </servlet>
    134. <servlet-mapping>
    135. <servlet-name>webApprove</servlet-name>
    136. <url-pattern>/</url-pattern>
    137. </servlet-mapping>
    138. <session-config>
    139. <session-timeout>120</session-timeout>
    140. <tracking-mode>COOKIE</tracking-mode>
    141. </session-config>
    142. <welcome-file-list>
    143. <welcome-file>index.jsp</welcome-file>
    144. </welcome-file-list>
    145. </web-app>

    三 官网中配置了:

    但我的datasource已经在application.xml中配置了。

    所以此处注释了

    1. package com.abc.webApprove.config;
    2. import org.camunda.bpm.engine.*;
    3. import org.camunda.bpm.engine.spring.ProcessEngineFactoryBean;
    4. import org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.context.annotation.Bean;
    7. import org.springframework.context.annotation.Configuration;
    8. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    9. import org.springframework.jdbc.datasource.DriverManagerDataSource;
    10. import org.springframework.transaction.PlatformTransactionManager;
    11. import javax.sql.DataSource;
    12. @Configuration
    13. public class LoanApplicationContext {
    14. // @Bean
    15. // public DataSource dataSource() {
    16. // DriverManagerDataSource dataSource = new DriverManagerDataSource();
    17. // dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    18. // dataSource.setUrl("jdbc:mysql://ip/abc_camunda?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true\n");
    19. // dataSource.setUsername(" ");
    20. // dataSource.setPassword(" ");
    21. // return dataSource;
    22. // }
    23. @Bean
    24. public PlatformTransactionManager transactionManager(DataSource dataSource) {
    25. return new DataSourceTransactionManager(dataSource);
    26. }
    27. @Bean
    28. public SpringProcessEngineConfiguration engineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager) {
    29. SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
    30. configuration.setProcessEngineName("engine");
    31. configuration.setDataSource(dataSource);
    32. configuration.setTransactionManager(transactionManager);
    33. configuration.setDatabaseSchemaUpdate("true");
    34. configuration.setJobExecutorActivate(false);
    35. return configuration;
    36. }
    37. @Bean
    38. public ProcessEngineFactoryBean engineFactory(SpringProcessEngineConfiguration engineConfiguration) {
    39. ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
    40. factoryBean.setProcessEngineConfiguration(engineConfiguration);
    41. return factoryBean;
    42. }
    43. @Bean
    44. public ProcessEngine processEngine(ProcessEngineFactoryBean factoryBean) throws Exception {
    45. return factoryBean.getObject();
    46. }
    47. @Bean
    48. public RepositoryService repositoryService(ProcessEngine processEngine) {
    49. return processEngine.getRepositoryService();
    50. }
    51. @Bean
    52. public RuntimeService runtimeService(ProcessEngine processEngine) {
    53. return processEngine.getRuntimeService();
    54. }
    55. @Bean
    56. public TaskService taskService(ProcessEngine processEngine) {
    57. return processEngine.getTaskService();
    58. }
    59. @Bean
    60. public HistoryService historyService(ProcessEngine processEngine) {
    61. return processEngine.getHistoryService();
    62. }
    63. @Bean
    64. public ManagementService managementService(ProcessEngine processEngine) {
    65. return processEngine.getManagementService();
    66. }
    67. }

    四 测试参考官网

    因为bpmn文件发送比较麻烦,所以这里就不演示了。

  • 相关阅读:
    在单机(物理机)上用虚拟机部署kubernetes集群
    集合的基本运算
    iOS基础开发介绍
    行业大洗牌,软件测试饱和了?到底怎样才能走出职场困境......
    SpringBoot定时任务 - Spring自带的定时任务是如何实现的?有何注意点?
    案例赏析 | 土耳其开赛利:闲置屋顶坐享“阳光收益”,助力企业实现绿色低碳转型
    Flask 的 ORM 模型 - 概述
    【学习笔记38】JavaScript中的本地存储
    Tomcat部署及优化
    vue面试如何准备,这几道面试题助力你拿到理想offer
  • 原文地址:https://blog.csdn.net/hanjun0612/article/details/127774582