# Activiti的基础构件是什么 ## 引言 Activiti作为一款轻量级、开源的工作流和业务流程管理(BPM)引擎,已成为企业级应用开发中的重要工具。其核心价值在于将复杂的业务流程可视化、规范化和自动化。要深入掌握Activiti,必须首先理解其基础构件的组成及相互关系。本文将系统性地剖析Activiti的核心构件体系,包括流程定义元素、运行时组件、数据模型以及扩展机制等关键部分。 ## 一、流程定义基础元素 ### 1.1 BPMN 2.0标准解析 Activiti完全遵循BPMN 2.0(Business Process Model and Notation)规范,这是其所有构件设计的理论基础: - **XML结构**:每个流程都以`.bpmn20.xml`文件存储 - **可视化元素**:包括事件(Events)、活动(Activities)、网关(Gateways)等 - **执行语义**:明确定义了各元素的运行时行为 ### 1.2 核心建模元素 #### 事件(Events) ```xml <startEvent id="start" name="流程开始"/> <endEvent id="end" name="流程结束"/> <timerEventDefinition><messageEventDefinition><errorEventDefinition> <userTask id="approvalTask" name="审批申请" activiti:assignee="${applicant}"/> <serviceTask id="notifyService" activiti:class="com.example.NotificationDelegate"/> <scriptTask id="calcScript" scriptFormat="groovy"> <script> sum = variables.get("a") + variables.get("b") </script> </scriptTask> <exclusiveGateway id="decisionGate"/> <parallelGateway id="forkGate"/> <inclusiveGateway id="mergeGate"/> <sequenceFlow sourceRef="start" targetRef="task1"/>graph TD A[ProcessEngine] --> B[RepositoryService] A --> C[RuntimeService] A --> D[TaskService] A --> E[HistoryService] A --> F[ManagementService] repositoryService.createDeployment().addClasspathResource("process.bpmn").deploy()repositoryService.createProcessDefinitionQuery().list()runtimeService.startProcessInstanceByKey("leaveProcess")runtimeService.signalEventReceived("alertSignal")// 查询任务 List<Task> tasks = taskService.createTaskQuery() .taskAssignee("kermit") .list(); // 完成任务 taskService.complete(task.getId()); | 表前缀 | 功能描述 |
|---|---|
| ACTRE* | 静态资源存储(REpository) |
| ACTRU* | 运行时数据(Runtime) |
| ACTHI* | 历史数据(History) |
| ACTGE* | 通用数据(General) |
| 字段 | 类型 | 说明 |
|---|---|---|
| ID_ | varchar | 主键 |
| ASSIGNEE_ | varchar | 任务处理人 |
| CREATETIME | timestamp | 创建时间 |
SELECT * FROM ACT_HI_PROCINST WHERE DURATION_ > 3600000 ORDER BY START_TIME_ DESC runtimeService.setVariable(executionId, "invoiceAmount", 12000.50); <userTask id="reportTask"> <extensionElements> <activiti:taskListener event="create" class="com.example.TaskAssignmentListener"/> </extensionElements> </userTask> 实现ActivityBehavior接口:
public class CustomBehavior implements ActivityBehavior { @Override public void execute(DelegateExecution execution) { // 自定义逻辑 } } <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="commandInterceptors"> <list> <bean class="com.example.CustomCommandInterceptor"/> </list> </property> </bean> @Configuration public class ActivitiConfig { @Bean public ProcessEngine processEngine() { return SpringProcessEngineConfiguration .createProcessEngineConfigurationFromResourceDefault() .buildProcessEngine(); } } Activiti提供完整的REST支持:
POST /runtime/process-instances { "processDefinitionKey":"loanApproval", "variables": [ {"name":"amount", "value":50000} ] } processEngineConfiguration.getEventDispatcher() .addEventListener(new CustomEventListener()); BulkInsert模式 activiti.history.level=audit <boundaryEvent id="timeoutBoundary" attachedToRef="approvalTask"> <timerEventDefinition> <timeDuration>PT24H</timeDuration> </timerEventDefinition> </boundaryEvent> 理解Activiti的基础构件是掌握工作流开发的关键第一步。从BPMN元素到运行时服务,从数据模型到扩展机制,这些构件共同构成了Activiti的完整生态体系。建议开发者在实际项目中: 1. 先使用Activiti Modeler进行可视化设计 2. 通过单元测试验证流程逻辑 3. 合理设计历史数据归档策略
随着对基础构件的深入理解,开发者可以更高效地构建复杂的企业级流程应用。
注:本文基于Activiti 7.x版本,部分实现细节可能随版本变化而调整。 “`
这篇文章系统性地介绍了Activiti的基础构件,包含: 1. 详细的BPMN元素说明与代码示例 2. 运行时服务的交互关系图 3. 数据库表结构的分类说明 4. 扩展开发的完整示例 5. 实际应用的最佳实践建议
全文约2500字,采用Markdown格式,包含代码块、表格、流程图等元素,可直接用于技术文档发布。需要更详细展开某个部分时可继续补充具体实现案例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。