--- title: 6.流程引擎模块 description: activiti流程引擎模块的使用 published: true date: 2021-09-24T09:52:45.835Z tags: wg-basic, activiti editor: markdown dateCreated: 2021-09-01T09:28:31.684Z --- # 说明 流程引擎模块引入了 **activiti** 框架,目前可以完成流程的绘制、部署与流程图的查看。模块自带流程绘制功能,无需再使用插件绘制流程文件。 该模块需要手动添加管理菜案 # 依赖 ```xml ink.wgink module-activiti 1.0-SNAPSHOT ``` # 配置说明 ```yaml spring: # 流程引擎 activiti: # flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。 # true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。 # create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。 # drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎) database-schema-update: true #检测历史表是否存在 db-history-used: true # 记录历史等级 可配置的历史级别有none, acitivity, audit, all history-level: full # 检查流程定义 check-process-definitions: false rest-api-enabled: true rest-api-servlet-name: activiti-swagger-document SpringProcessEngineConfiguration: activityFontName: 宋体 labelFontName: 宋体 dataSource: datasource ``` 注意:`spring.datasource.druid.url` 配置中需要追加 **nullCatalogMeansCurrent=true** 参数用于防止项目启动自动建表失败的 # 启动类 启动类需要增加配置 `@SpringBootApplication` 注解增加 `exclude=SecurityAutoConfiguration.class` ``` @SpringBootApplication(exclude = SecurityAutoConfiguration.class) ``` # 添加菜单 菜单路径为:`/route/activiti/list` # 如何启动流程 1. 在流程管理菜单下将流程绘制好并部署后,会生成 **部署ID(deploymentId)** 2. 使用如下代码启动流程 ```java // 获取流程定义 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); // 获取流程定义ID String processDefinitionId = processDefinition.getId(); // 流程变量(如果需要) Map variableMap = new HashMap<>(); // 业务ID(如果需要) String businessId = "businessId"; // 启动流程 ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, "businessId", variableMap); ```