activiti+5.21+mysql_ydl-workflow基于SAAS服务,完美整合springboot + activiti5 + MyBatis

薛兴言
2023-12-01

workflow V1.0

ydl-workflow基于SAAS服务,完美整合springboot + activiti5 + MyBatis 通用 Mapper + 分页插件 PageInfo!

说明

项目引入了下面依赖:

org.activiti

activiti-spring-boot-starter-basic

5.22.0

# 扩展说明

1. 增加了审批配置,业务表单,审批抄送人,操作流程等扩展表

2 支持流程会签,驳回,消息通知审批人

3 生成了节点实体类,支持用户原生生成流程定义

4 支持扩展用户自定义流程

## 功能简介

1. 流程定义

2. 流程发布

3. 流程审批

4. 流程驳回

5. 查询待办任务

6. 查询审批历史

7. 查询流程定义

### 如何启动项目

workflow目前支持三种启动方式:

1. 在IDE里运行Application类中的main方法启动

2. 执行如下maven命令

clean package -Dmaven.test.skip=true

并从target目录中找到ydl-workflow-biz-1.0.0-SNAPSHOT.jar,并在jar包的目录下执行如下java命令

java -jar ydl-workflow-biz-1.0.0-SNAPSHOT.jar

3. 修改pom.xml中如下片段

jar

改为

war

并打包放入到tomcat中执行

### 注意

最新版项目最低支持jdk1.7

## 所用框架

1. activiti v5.2

2. jdk1.7

3. mysql v5.5

4. springcloud v4.0

5. pagehelper v4.1.6

## 项目包结构说明

├─main │ │

│ ├─java │ │ │ │ │ ├─com.yidouinc.ydl.workflow----------------项目主代码 │ │ │ │ │ │ │ ├─domain----------------项目实体类 │ │ │ │ │ │ │ ├─config----------------项目配置代码 │ │ │ │ │ │ │ ├─filter----------------项目过滤器 │ │ │ │ │ │ │ ├─mapper----------------项目映射数据库层 │ │ │ │ │ │ │ ├─service类----------------项目业务逻辑 │ │ │ │ │ │ │ └─Application类----------------以main方法启动springboot的类 │ │ │ │ │ └─generator----------------mybatis-plus Entity生成器 │ │ │ ├─resources----------------项目资源文件 │ │ │ ├─bpmn----------------流程定义文件 │ │ │ ├─application.properties----------------springboot项目配置 │ │ │ ├─mapper.xml----------------项目实体数据库映射文件 │ │ │ └─disconf.xml----------------项目disconf配置文件 │

注:SpringBoot项目默认不支持将静态资源和模板(web页面)放到webapp目录,但是个人感觉resources目录只放项目的配置更加简洁.

## 基于springboot启动方式

@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients(basePackages="com.yidouinc")

@ImportResource({"classpath:disconf.xml"})

public class Application {

@Bean

@LoadBalanced

RestTemplate restTemplate() {

return new RestTemplate();

}

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

loadLogBack();

}

## 流程启动代码

/**

* 启动流程

*

* @param dto

* @return

*/

public String startWorkflow(ProcInstanceDto dto) {

ProcessInstance processInstance = null;

if (dto.getStartUserId() != null) {

identityService.setAuthenticatedUserId(dto.getStartUserId().toString());

}

OperResult result = actOperatingFormService.saveOperatingForm(dto);

dto.setOperatingFormId(result.getId());

String companyId = String.valueOf(dto.getCompanyId());

processInstance = runtimeService.startProcessInstanceByKeyAndTenantId(dto.getProcDefKey(), dto.getBusinessType() + "-" + dto.getBusinessKey(),

companyId);

dto.setProcInstId(processInstance.getId());

workflowBusinessService.saveWorkflowRelateInfo(dto);

return processInstance.getId();

}

## 流程业务类注册

@Autowired

private DataSource dataSource;

@Autowired

private DataSourceTransactionManager dataSourceTransactionManager;

@Bean(name = "processEngineConfiguration")

public SpringProcessEngineConfiguration getProcessEnginConfiguration() {

SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();

processEngineConfiguration.setDataSource(dataSource);

processEngineConfiguration.setTransactionManager(dataSourceTransactionManager);

processEngineConfiguration.setDatabaseSchemaUpdate("true");

processEngineConfiguration.setJobExecutorActivate(false);

return processEngineConfiguration;

}

@Bean(name = "processEngine")

public ProcessEngineFactoryBean getProcessEngineFactoryBean() {

ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();

processEngineFactoryBean.setProcessEngineConfiguration(this.getProcessEnginConfiguration());

return processEngineFactoryBean;

}

@Bean(name = "repositoryService")

public RepositoryService getRepositoryService() {

return this.getProcessEnginConfiguration().getRepositoryService();

}

@Bean(name = "runtimeService")

public RuntimeService getRuntimeService() {

return this.getProcessEnginConfiguration().getRuntimeService();

}

@Bean(name = "taskService")

public TaskService getTaskService() {

return this.getProcessEnginConfiguration().getTaskService();

}

@Bean(name = "historyService")

public HistoryService getHistoryService() {

return this.getProcessEnginConfiguration().getHistoryService();

}

@Bean(name = "managementService")

public ManagementService getManagementService() {

return this.getProcessEnginConfiguration().getManagementService();

}

@Bean(name = "identityService")

public IdentityService getIdentityService() {

return this.getProcessEnginConfiguration().getIdentityService();

}

 类似资料: