Activiti 如何在本地部署运用

Activiti 在本地部署和运用的完整指南

Activiti 是一个轻量级的开源工作流和业务流程管理(BPM)引擎,下面我将详细介绍如何在本地环境中部署和运用 Activiti。

一、环境准备

1. 系统要求

  • JDK 8 或更高版本

  • Maven 3.x

  • 数据库(支持 H2、MySQL、PostgreSQL、Oracle 等)

  • IDE(如 IntelliJ IDEA 或 Eclipse)

2. 添加 Maven 依赖


    org.activiti
    activiti-engine
    7.1.0.M6


    org.activiti
    activiti-spring
    7.1.0.M6

二、快速启动

1. 配置 Activiti 引擎

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;

public class ActivitiSetup {
    public static void main(String[] args) {
        // 创建独立配置
        ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
            .setJdbcUrl("jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000")
            .setJdbcUsername("sa")
            .setJdbcPassword("")
            .setJdbcDriver("org.h2.Driver")
            .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        
        // 构建流程引擎
        ProcessEngine processEngine = cfg.buildProcessEngine();
        
        System.out.println("Activiti 流程引擎已启动: " + processEngine.getName());
    }
}

2. 使用 Spring Boot 快速集成

@SpringBootApplication
public class ActivitiApplication {
    public static void main(String[] args) {
        SpringApplication.run(ActivitiApplication.class, args);
    }
}

application.properties 配置:

# 数据库配置
spring.datasource.url=jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver

# Activiti 配置
spring.activiti.database-schema-update=true
spring.activiti.check-process-definitions=false

三、核心功能使用

1. 部署流程定义

@Autowired
private RepositoryService repositoryService;

public void deployProcess() {
    Deployment deployment = repositoryService.createDeployment()
        .addClasspathResource("processes/leave-approval.bpmn20.xml")
        .name("请假审批流程")
        .deploy();
    
    System.out.println("流程部署成功,部署ID: " + deployment.getId());
}

2. 启动流程实例

@Autowired
private RuntimeService runtimeService;

public void startProcess() {
    Map variables = new HashMap<>();
    variables.put("employee", "张三");
    variables.put("days", 3);
    
    ProcessInstance instance = runtimeService.startProcessInstanceByKey("leaveApproval", variables);
    
    System.out.println("流程实例已启动,实例ID: " + instance.getId());
}

3. 查询和完成任务

@Autowired
private TaskService taskService;

public void completeTask() {
    // 查询任务
    List tasks = taskService.createTaskQuery()
        .taskAssignee("李四") // 分配给李四的任务
        .list();
    
    // 完成任务
    for (Task task : tasks) {
        System.out.println("完成任务: " + task.getName());
        taskService.complete(task.getId());
    }
}

四、流程设计

1. 使用 Activiti Modeler 设计流程

  1. 下载 Activiti Modeler (可从 Activiti 官网获取)

  2. 设计 BPMN 2.0 流程图

  3. 保存为 .bpmn 或 .bpmn20.xml 文件

2. 简单请假流程示例 (XML)



    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
            
                 3}]]>
            
        
        
        
            
                
            
        
        
        
        
        
        
        
        
        
    

五、数据库配置

1. 使用 MySQL 数据库

修改 application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/activiti?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

2. 数据库表结构

Activiti 会自动创建以下表:

  • ACT_RE_*: 资源存储表

  • ACT_RU_*: 运行时表

  • ACT_ID_*: 身份表

  • ACT_HI_*: 历史表

  • ACT_GE_*: 通用数据表

六、REST API 支持

Activiti 提供了 REST API,可以通过以下方式启用:

@Configuration
public class ActivitiRestConfiguration extends AbstractActivitiRestConfiguration {
    // 自动配置 REST API
}

然后可以通过以下 URL 访问:

  • http://localhost:8080/activiti-rest/service/repository/deployments - 获取部署列表

七、监控和管理

1. Activiti Explorer

  1. 下载 Activiti Explorer WAR 文件

  2. 部署到 Tomcat 或其他 Servlet 容器

  3. 访问 http://localhost:8080/activiti-explorer

2. 使用 Actuator (Spring Boot)

management.endpoints.web.exposure.include=*

访问 http://localhost:8080/actuator 查看端点

八、常见问题解决

  1. 表不存在错误:确保 spring.activiti.database-schema-update=true

  2. 流程定义未找到:检查 BPMN 文件是否在 resources/processes/ 目录下

  3. 任务分配问题:确保任务分配人(assignee)已正确设置

通过以上步骤,应该能够在本地成功部署和运用 Activiti 工作流引擎。根据实际需求,可以进一步探索 Activiti 的高级功能,如事件监听器、异步执行、多实例任务等。

你可能感兴趣的:(Activiti,java)