RuoYi-activiti核心源码解析:Activiti五大服务对象的职责划分与常用API速查表

发布时间:2026/8/22 13:52:14
RuoYi-activiti核心源码解析:Activiti五大服务对象的职责划分与常用API速查表 RuoYi-activiti核心源码解析Activiti五大服务对象的职责划分与常用API速查表【免费下载链接】RuoYi-activiti整合RuoYi框架基于Activiti6.0集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。项目地址: https://gitcode.com/gh_mirrors/sp/RuoYi-activitiRuoYi-activiti 是一个整合若依框架与 Activiti 6.0 的开源工作流开发平台集流程设计、流程部署、流程执行、任务办理、流程监控于一体。想要读懂它的后端源码抓住Activiti 五大服务对象就抓住了主线——RepositoryService、RuntimeService、TaskService、HistoryService、ManagementService它们分别管着存什么、怎么跑、谁来办、留了痕、怎么运维。本文带你逐一拆解职责边界并附上一张常用 API 速查表看完即可上手改造业务代码。五大服务对象一分钟建立心智模型 Activiti 引擎通过服务门面 查询器Query的模式对外提供能力。每个服务对象只负责流程生命周期中的一个阶段互不越权服务对象一句话职责管的数据表前缀RepositoryService流程仓库模型、部署、流程定义的增删查act_re_、act_ge_RuntimeService流程运行时发起实例、挂起/激活、推进流程act_ru_TaskService用户任务待办查询、指派、审批办理、评论act_ru_taskHistoryService历史记录已结束的流程、活动轨迹、变量留痕act_hi_ManagementService引擎运维作业定时/异步/死亡管理与监控act_ru_job 记忆口诀Repo 管存、Runtime 管跑、Task 管办、History 管痕、Management 管运维。在 RuoYi-activiti 中这些服务均通过 Spring 自动装配注入到控制器。例如流程管理控制器中一次性注入了四个服务源码位置FlowController.javaResource private RuntimeService runtimeService; Resource private TaskService taskService; Resource private RepositoryService repositoryService; Resource private IdentityService identityService;RepositoryService模型与部署的总仓库RepositoryService是流程的档案馆承担三类工作模型管理、流程部署、流程定义查询。在 ModelManageController.java 中可以看到完整链路新建模型newModel()创建模型对象saveModel()落库到act_re_model再用addModelEditorSource()把设计器 JSON 存进act_ge_bytearray发布模型getModelEditorSource()取回 JSON经BpmnJsonConverter转成BpmnModel最后createDeployment().addBpmnModel().deploy()一键部署定义查询与挂起createProcessDefinitionQuery()支持按 key、名称、最新版本组合过滤suspendProcessDefinitionById()/activateProcessDefinitionById()控制流程定义级别的开关。此外还藏了两个实用技巧getBpmnModel()配合ProcessDiagramGenerator可以动态生成流程图图片FlowController.java 的showresource接口exchangeProcessToModel接口则演示了把已部署的流程定义逆向转回设计器模型方便二次编辑。RuntimeService流程实例的油门与手刹流程部署后如何跑起来全靠RuntimeService。它是唯一能操作运行中流程实例的服务核心场景有三个发起流程startProcessInstanceById(流程定义ID, 变量Map)。发起前先调用identityService.setAuthenticatedUserId()设置发起人实例的startUserId就会自动记录——这是 FlowController.java 中startProcess接口的标准写法实例查询createProcessInstanceQuery()支持按业务 KeyprocessInstanceBusinessKey、流程名称组合过滤。RuoYi-activiti 的约定是业务表主键作为业务 Key传入审批时用它反查业务数据LeaveapplyController.java 的请假审批就是典型示例挂起与唤醒suspendProcessInstanceById()/activateProcessInstanceById()对应流程实例管理页面右侧的挂起/再挂起按钮。TaskService待办办理的主战场TaskService是工作流平台中使用频率最高的服务覆盖查待办 → 指派 → 办理 → 留评论全链路。以 TaskController.java 的completeTask接口为例一次标准审批就是四步组合拳createTaskQuery().taskId(taskId).singleResult()—— 按任务 ID 反查任务拿到所属流程实例setAssignee(taskId, username)—— 将任务指派给当前登录用户addComment(taskId, processInstanceId, 意见)—— 记录审批意见complete(taskId, variables)—— 携带表单变量完成任务流程自动流转到下一节点。而我的待办列表的精髓在于createTaskQuery().taskAssignee(username).active()taskAssignee限定办理人active()过滤掉已挂起流程中的任务——这两行就是待办中心的灵魂。 平台约定所有用户任务的办理都复用/task/manage/completeTask/{taskId}接口前端页面通过FormService.getTaskFormData(taskId)返回的formKey关联到具体业务表单实现了任务与页面的解耦。HistoryService流程的黑匣子记录仪流程结束后运行时会话act_ru_表会被清空一切轨迹都沉淀到历史表act_hi_表查询则交给HistoryService。它提供三个最常用的查询器createHistoricActivityInstanceQuery()查节点级活动轨迹开始/结束时间、办理人、节点名称。配合activityType(userTask)过滤出用户任务节点即可画出审批时间轴/task/manage/history/{taskId}接口createHistoricProcessInstanceQuery()查全部流程实例含运行中和已结束通过endTime null区分状态是运行历史页面的数据源createHistoricVariableInstanceQuery()查流程变量快照支撑流程变量监控页面。ManagementService引擎运维与作业管理中心ManagementService面向运维场景核心能力是作业Job管理。Activiti 的定时任务、异步续接都以 Job 形式存于act_ru_job表FlowMonitorController.java 的listJobs接口按类型分四路查询type查询器对应场景1createTimerJobQuery()定时作业Timer2createJobQuery()异步作业Async3createSuspendedJobQuery()挂起作业4createDeadLetterJobQuery()死亡作业执行失败可查看异常信息配合orderByJobDuedate()按触发时间排序就是作业管理监控页的完整实现出现死亡作业时还能直接拿到getExceptionMessage()定位故障。五大服务常用 API 速查表 ⚡服务对象常用 API用途项目中的出处RepositoryServicecreateDeployment().addInputStream()/addBpmnModel().deploy()部署 BPMN 文件或模型FlowController、ModelManageControllerRepositoryServicecreateProcessDefinitionQuery().latestVersion().listPage()分页查询流程定义FlowController#getlistRepositoryServicegetBpmnModel()ProcessDiagramGenerator动态渲染流程图图片FlowController#showresourceRepositoryServicenewModel()/saveModel()/addModelEditorSource()模型创建与保存ModelManageController#addSaveRepositoryServicesuspendProcessDefinitionById()/activateProcessDefinitionById()定义级挂起/激活FlowControllerRuntimeServicestartProcessInstanceById(定义ID, 变量)发起流程实例FlowController#startProcessRuntimeServicecreateProcessInstanceQuery().processInstanceBusinessKey()按业务 Key 查实例LeaveapplyController等RuntimeServicesuspendProcessInstanceById()/activateProcessInstanceById()实例级挂起/唤醒FlowMonitorControllerTaskServicecreateTaskQuery().taskAssignee().active()查我的待办TaskController#mylistTaskServicesetAssignee()/complete()/addComment()指派、办理、留痕TaskController#completeTaskHistoryServicecreateHistoricActivityInstanceQuery()节点活动轨迹/时间轴TaskController#historyHistoryServicecreateHistoricVariableInstanceQuery()流程变量查询FlowMonitorController#variablesManagementServicecreateTimerJobQuery()/createDeadLetterJobQuery()定时作业/死亡作业查询FlowMonitorController#listJobs源码阅读路径建议 推荐按业务功能 → 控制器 → 服务对象的顺序阅读全部工作流代码集中在ruoyi-admin/src/main/java/com/ruoyi/web/controller/activiti/目录下ModelManageController.java—— 模型管理理解act_re_*表与部署机制FlowController.java—— 部署管理 发起流程TaskController.java—— 待办与办理最高频代码FlowMonitorController.java—— 实例监控、历史追溯、作业管理DynamicFlowController.java—— 进阶撤销、驳回、跳转等动态流程操作ActivitiTracingChart.java—— 流程图进度追踪的高亮绘制工具。配套的请假、会议、采购三个业务 Controller如 LeaveapplyController.java则演示了工作流与业务表联动的标准姿势业务主键作业务 Key、外置表单、formKey 关联页面。按这条主线读下来RuoYi-activiti 的工作流骨架就清晰了动手开发自己的审批流程也只是复制一份模板改字段的距离。【免费下载链接】RuoYi-activiti整合RuoYi框架基于Activiti6.0集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。项目地址: https://gitcode.com/gh_mirrors/sp/RuoYi-activiti创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考