当前位置:首页 > 技术 > 正文内容

Activiti 5 流程引擎应用指南

访客 技术 2026年6月6日 1

Activiti 是一个开源的业务流程管理(BPM)平台,它实现了 BPMN 2.0 标准,允许用户设计、部署和执行业务流程。作为一款轻量级且高度可扩展的引擎,Activiti 被广泛应用于构建高效的 BPM 应用程序。

Activiti 强调其组件和服务接口的设计,旨在为开发者提供便捷的开发体验。下面将详细介绍 Activiti 的核心组件和服务接口,并通过示例展示如何使用它们进行工作流的创建与管理。

核心组件介绍

  1. 关键对象
  • DeployObj: 流程部署对象,在部署时创建。
  • ProcDef: 流程定义,成功部署后自动生成。
  • ProcInst: 流程实例,启动流程时生成。
  • UserTask: 用户任务,指需要人工参与的任务节点。
  • ExecPlan: 执行计划,涵盖了所有流程实例及其执行状态。
  1. 服务接口
  • EngineService: 获取所需服务的核心入口。
  • RepoService: 管理流程定义资源的服务。
  • RuntimeSvc: 提供流程实例生命周期管理的功能。
  • TaskSvc: 处理用户任务相关操作的服务。
  • IdentitySvc: 管理用户和组信息的服务。
  • MgmtSvc: 维护和管理系统的服务。
  • HistorySvc: 提供历史流程数据查询功能。

以下是一个简单的单元测试示例,用于验证配置文件是否正确以及流程能否被成功部署:

public class WorkflowTest {
    @Test
    public void testDeployment() {
        ProcessEngine engine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("config.xml").buildProcessEngine();
        RepositoryService repoSvc = engine.getRepositoryService();
        Deployment deploy = repoSvc.createDeployment().addClasspathResource("WorkFlow.bpmn").deploy();
        assertNotNull(deploy);
    }
}

为了更好地集成 Spring 框架,了解基于 Spring 配置 Activiti 和事务处理的方法非常重要。

官方示例(activiti-explorer)

下载 Activiti Explorer 示例项目,并根据 MySQL 数据库修改配置文件如下:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/activiti?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=password

访问地址 http://localhost:8080/activiti-explorer 使用默认账号 kermit 登录。

IDEA 中开发 Activiti 工作流

安装 actiBPM 插件并创建 Maven 工程,添加依赖项:

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
    <version>5.22.0</version>
</dependency>

创建数据库表结构:

public class DBSetup {
    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration().buildProcessEngine();
        System.out.println(engine);
    }
}

部署流程并启动:

@Test
public void deployAndStartProcess() {
    ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
    RepositoryService repoSvc = engine.getRepositoryService();
    repoSvc.createDeployment().addClasspathResource("WorkFlow.bpmn").deploy();

    RuntimeService runtimeSvc = engine.getRuntimeService();
    runtimeSvc.startProcessInstanceByKey("workflowKey");
}

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。