• Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0


    以前在工作当中做过不少与工作流Activiti有关的工作,当时都是spring集成activiti5.22的项目,现在回过头去看,其实版本已经稍微老了,因此,基于先前的工作经验,决定用较新版本的技术来重新梳理下以前接触过的技术。

    决定用springboot2.0+Activiti6.0来做实践总结。

    第一步,在springboot项目pom.xml文件引入相关依赖:

     1 <!--Activiti 工作流-->
     2 <dependency>
     3     <groupId>mysql</groupId>
     4     <artifactId>mysql-connector-java</artifactId>
     5     <scope>5.1.35</scope>
     6 </dependency>
     7 
     8 <dependency>
     9     <groupId>org.activiti</groupId>
    10     <artifactId>activiti-spring</artifactId>
    11     <version>6.0.0</version>
    12 </dependency>
    13 
    14 <dependency>
    15     <groupId>com.fasterxml.jackson.core</groupId>
    16     <artifactId>jackson-core</artifactId>
    17     <version>2.9.5</version>
    18 </dependency>

    第二步,建立Activiti的配置类

     1 @Configuration
     2 public class Activiticonfig {
     3 
     4     /**
     5      * 流程实例类,启动流程时创建
     6      * @return
     7      */
     8     @Bean
     9     public ProcessEngine processEngine(){
    10           ProcessEngineConfiguration pro=ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
    11           pro.setJdbcDriver("com.mysql.jdbc.Driver");
    12           pro.setJdbcUrl("jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&nullCatalogMeansCurrent=true");
    13           pro.setJdbcUsername("root");
    14           pro.setJdbcPassword("root");
    15           //避免发布的图片和xml中文出现乱码
    16           pro.setActivityFontName("宋体");
    17           pro.setLabelFontName("宋体");
    18           pro.setAnnotationFontName("宋体");
    19           pro.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
    20           return pro.buildProcessEngine();
    21     }
    22 
    23 
    24     /**
    25      * 仓库服务类,用于管理bpmn文件与流程图片
    26      * @return
    27      */
    28     @Bean
    29     public RepositoryService repositoryService(){
    30         return processEngine().getRepositoryService();
    31     }
    32 
    33     /**
    34      * 流程运行服务类,用于获取流程执行相关信息
    35      * @return
    36      */
    37     @Bean
    38     public RuntimeService runtimeService(){
    39         return processEngine().getRuntimeService();
    40     }
    41 
    42     /**
    43      * 任务服务类,用户获取任务信息
    44      * @return
    45      */
    46     @Bean
    47     public TaskService taskService(){
    48         return processEngine().getTaskService();
    49     }
    50 
    51 
    52     /**
    53      * 获取正在运行或已经完成的流程实例历史信息
    54      * @return
    55      */
    56     @Bean
    57     public HistoryService historyService(){
    58         return processEngine().getHistoryService();
    59     }
    60 
    61     /**
    62      * 流程引擎的管理与维护
    63      * @return
    64      */
    65     @Bean
    66     public ManagementService managementService(){
    67         return processEngine().getManagementService();
    68     }
    69 
    70     /**
    71      * 创建、更新、删除,查询群组和用户
    72      * @return
    73      */
    74     @Bean
    75     public IdentityService identityService(){
    76         return processEngine().getIdentityService();
    77     }
    78 
    79 }

    在springboot工程里简单加完这些配置后,启动项目,原以为可以正常生成Activi6.0工作流自带的28张表,但这时出现了一堆错误:

    ### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'example.act_ge_property' doesn't exist
    ### The error may exist in org/activiti/db/mapping/entity/Property.xml
    ### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntityImpl.selectProperty-Inline
    ### The error occurred while setting parameters
    ### SQL: select * from ACT_GE_PROPERTY where NAME_ = ?
    ### Cause: java.sql.SQLSyntaxErrorException: Table 'example.act_ge_property' doesn't exist

    image
    出现这种问题主要是因为MySql的版本问题,在连接mysql的url后边加一个&nullCatalogMeansCurrent=true即可解决。
    再次运行后,成功创建了28张Activiti自带的数据表——

    接下来,将基于该搭建,对Activiti工作流引擎做更多操作实践。

    
    
  • 相关阅读:
    duilib clabelui 属性
    C++ 时间戳和时间的互相转换
    VS提示已有主体显示 的error解决办法
    Webrtc createoffer以后没有 onsuccess的回调
    VS error LNK2019: 无法解析的外部符号 _AcquireCredentialsHandleA
    VS LNK2019 无法解析的外部符号_GetAdaptersAddresses@20 错误解决办法
    duilib xml布局文件的属性设置
    Doris安装
    Oozie初探
    Notepad++ 常规骚操作
  • 原文地址:https://www.cnblogs.com/zhujiqian/p/12650756.html
Copyright © 2020-2023  润新知