Activiti 面试题及详细答案(实战无模板版)_第1页
Activiti 面试题及详细答案(实战无模板版)_第2页
Activiti 面试题及详细答案(实战无模板版)_第3页
Activiti 面试题及详细答案(实战无模板版)_第4页
Activiti 面试题及详细答案(实战无模板版)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Activiti面试题及详细答案(实战无模板版)一、基础概念类1、简单说说你对Activiti的理解,它主要用来做什么?参考答案:Activiti是一款开源的、基于BPMN2.0规范的工作流引擎,主要用于业务流程的自动化管理。日常开发里,我们用它来把复杂的人工审批、业务流转流程代码化、可视化。简单说就是把传统硬写在代码里的if/else流转逻辑,抽离成可视化流程图,流程的节点、审批人、流转规则都配置化,后续改流程不用改代码、不用重启服务,极大减少迭代成本。常见使用场景就是各类审批:请假、报销、采购、合同、入职离职审批等。2、BPMN2.0是什么?Activiti为什么要基于这个规范?参考答案:BPMN2.0是业界通用的业务流程建模标准,统一了流程图的节点、连线、规则定义,是行业通用规范。Activiti基于这个规范,最大的好处就是通用性强、可读性高。不管是开发、产品还是业务人员,都能看懂流程图;而且流程文件是标准xml,可移植性好,换兼容引擎也能适配,不会出现自定义流程框架那种只能自己看懂、无法通用的问题。3、Activiti核心七大服务分别是什么?各自作用?参考答案:日常开发最常用的就是七大核心Service,基本覆盖所有流程操作:1、RepositoryService仓库服务:负责流程部署、流程定义管理。主要用来部署bpmn文件、查询已部署的流程定义、删除流程定义。2、RuntimeService运行时服务:负责流程实例启动、流转、变量存取。启动流程、推进流程、设置流程全局变量都用它。3、TaskService任务服务:最常用,处理用户任务。查询待办、已办任务、签收任务、办理任务、驳回任务、设置任务变量都靠这个服务。4、HistoryService历史服务:查询所有流程历史数据,包括已完成的流程、历史任务、流转记录,做流程日志、审批轨迹查询必备。5、IdentityService身份服务:管理用户、用户组、角色,用来绑定流程的审批人、角色权限。6、FormService表单服务:处理流程绑定的表单数据,获取表单字段、提交表单数据。7、ManagementService管理服务:引擎管理、定时任务、数据库表维护、日志查询,开发中用得最少,多用于运维排查。4、Activiti核心数据表有哪些?各自作用?参考答案:不用记全表,记住高频核心表即可,面试够用、工作常用:流程定义相关1、act_re_deployment:流程部署记录表,每部署一次流程生成一条记录。2、act_re_procdef:流程定义表,存储所有已部署成功的流程模板信息。运行时流程相关1、act_ru_execution:流程实例运行表,正在运行的流程实例数据,流程结束后数据会清空。2、act_ru_task:运行中的任务表,所有待办、待处理任务都在这里,任务完成后数据清空。3、act_ru_variable:运行时流程变量表。历史记录相关1、act_hi_procinst:历史流程实例表,所有启动过、已结束的流程记录。2、act_hi_taskinst:历史任务表,所有已完成、已驳回的审批任务记录。3、act_hi_actinst:历史活动节点表,记录每一个节点的进入、完成时间。4、act_hi_varinst:历史变量表,存储流程全程的变量记录。二、流程开发实操类5、说说Activiti完整的流程开发、使用步骤?参考答案:我平时开发一套工作流流程,固定是这几步:1、画图建模:用Activiti绘图工具,按照业务需求画流程图,配置开始节点、用户任务、网关、结束节点,配置每个节点的审批人、流转条件。2、导出文件:导出bpmn2.0格式的xml文件。3、部署流程:通过RepositoryService把bpmn文件部署到引擎,数据库生成流程定义记录。4、启动流程:业务端发起申请,后端通过RuntimeService启动对应流程定义的实例,传入业务ID、流程变量。5、任务处理:审批人通过TaskService查询待办,签收、审批、驳回、转交任务。6、流程结束:走到结束节点后,流程实例完结,运行时数据清空,历史数据入库留存。7、轨迹查询:通过HistoryService查询审批记录、流转轨迹,做页面展示。6、Activiti怎么指定审批人?有几种方式?参考答案:工作中常用三种方式,各有适用场景:1、固定审批人:直接在流程图节点固定写死用户ID或用户名,适合固定岗位、固定人员的简单流程,缺点是不灵活,人员变动要改流程图。2、流程变量指定:启动流程时传入审批人变量,节点配置取变量值作为审批人,最常用、最灵活,适配绝大多数动态审批场景。3、监听器动态赋值:给任务节点配置任务监听器,在节点创建的时候,通过代码动态查询角色、上级、对应审批人,手动设置assignee,适合审批人需要复杂业务计算的场景。7、Activiti有哪些常用网关?分别什么场景用?参考答案:日常开发主要用四种网关,区分清楚场景就不会用错:1、排他网关(ExclusiveGateway):单选,多个分支只会走满足条件的一条,最常用。比如请假流程,请假天数不同,走不同审批层级,互斥分支就用这个。2、并行网关(ParallelGateway):所有分支同时执行,不分条件、全部走完,适合需要多个部门同时审批、多人并行处理的场景,所有分支全部完成才会继续往下走。3、包容网关(InclusiveGateway):满足条件的分支都会执行,可以单条也可以多条,介于排他和并行之间。比如根据申请类型,触发对应多个辅助审批节点。4、事件网关:多用于定时、消息触发的特殊流转,业务普通审批基本不用。8、什么是流程变量?全局变量和局部变量的区别?参考答案:流程变量就是流程运行过程中传递、存储的业务参数,比如请假天数、申请金额、申请人ID,用来控制流转条件、存储业务数据。全局变量:整个流程实例全程有效,所有节点、所有分支都能获取、修改,流程结束前一直存在,大部分业务参数都用全局变量。局部变量:只针对单个任务节点有效,节点完成后变量失效,只适合存储当前任务临时数据,几乎很少用。9、任务监听器和流程监听器的区别?各自使用场景?参考答案:1、任务监听器:作用于单个用户任务节点,监听任务的创建、指派、完成、删除事件。常用场景:动态设置审批人、任务创建后发送消息通知、任务完成后更新业务状态。2、流程监听器:作用于整个流程实例,监听流程启动、结束、节点进入、节点完成等全局事件。常用场景:流程启动初始化数据、流程完结后回调业务接口、记录整体流程日志。三、难点与问题排查类10、Activiti流程部署重复怎么处理?版本机制了解吗?参考答案:Activiti有自带的版本控制机制,同一个key的流程,重复部署会自动版本+1,不会覆盖旧流程。旧的流程实例会继续使用旧版本流程定义走完,新发起的流程自动使用最新版本,保证线上流程平稳过渡,不会因为更新流程影响正在运行的旧流程。日常迭代流程,直接重新部署即可,不用删除旧版本;如果是废弃的旧流程,可以手动删除对应部署记录。11、Activiti常见异常有哪些?你怎么排查问题?参考答案:工作中遇到最多的几个问题:1、流程启动失败:大概率是流程变量缺失、网关条件配置错误、节点审批人未赋值。排查方式:看引擎报错日志,核对所需变量是否传入,检查流程图条件表达式。2、任务消失、流程卡死:多半是并行网关未全部走完、排他网关条件重叠或无匹配条件,导致流程无法向下流转。排查运行时执行表数据,看当前停留节点。3、重复部署、版本混乱:多为重复部署操作导致,通过流程定义表核对版本,区分新旧流程。4、历史记录查询不到:检查是否开启历史记录级别,默认配置过低会导致部分历史数据不存储。12、说说Activiti历史级别有哪几种?区别是什么?参考答案:一共四个级别,日常项目基本用FULL级别:1、none:不记录任何历史数据,生产绝对不用。2、activity:只记录节点流转记录,不记录详细任务和变量。3、audit:默认级别,记录流程、任务记录,不记录详细变量变更。4、full:完整记录所有数据,包括节点、任务、变量、操作轨迹,适合需要完整审批日志、溯源的业务系统。13、Activiti怎么实现任务驳回、退回上一步?参考答案:Activiti原生没有直接的驳回接口,需要自己封装实现,我项目里常用两种方式:1、连线回退:流程图提前画好驳回连线,通过流转条件判断,驳回时走反向连线,适合流程简单、固定驳回节点的场景,实现简单。2、动态回退(常用):通过历史任务查询上一个审批节点,手动创建任务、指定审批人,跳转至对应节点,适配任意节点驳回、自由退回的复杂业务,通用性更强。四、项目实战面试题14、你项目中用Activiti做过什么功能?说说整体流程参考答案:我在项目中主要用Activiti搭建了整套通用审批流程模块,覆盖日常的请假、报销、采购、合同审批等功能。整体架构是前端绘制流程图、配置每级审批的人员和流转条件,后端整合Activiti核心服务,封装了流程部署、发起、审批、驳回、转交、终止、轨迹查询一套通用接口。解决了之前业务审批逻辑全部硬编码、改流程需要改代码重启服务的问题,现在业务方可以自行配置流程,迭代效率提升很多。同时通过历史记录表做了完整的审批轨迹溯源,满足合规需求。15、Activiti和普通代码写死的流程相比,优势在哪?参考答案:1、解耦:流程逻辑和业务代码完全分离,代码更干净,不会出现大量嵌套的if/else流转判断。2、可配置:流程调整、新增审批节点、修改审批人都不用改代码,直接改流程图重新部署即可,无需重启服务。3、可视化:流程流转一目了然,排查问题、对接业务更清晰,不用通读代码猜流转逻辑。4、自带日志:原生支持流程、任务、节点历史记录,不用自己手写日志记录表,天然支持审批溯源。5、通用性强:基于标准BPMN,团队所有人都能看懂,学习、维护成本低。16、高并发场景下Activiti有什么问题?怎么优

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论