activiti审批完成时添加审批意见

本文介绍如何在工作流中使用Activiti引擎通过代码添加审批意见,并展示如何查询已添加的审批意见。具体实现包括设置审批人身份、添加审批意见至任务、完成任务以及查询特定任务的所有审批意见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 

添加审批意见

String userId="zhang3";
//需要添加此句否则审批意见表中ACT_HI_COMMENT,审批人的userId是空的
Authentication.setAuthenticatedUserId(userId);
taskService.addComment(taskId,processInstanceId,message);
taskService.complete(taskId);

查询审批意见:

List<Comment> comments=taskService.getTaskComments(taskId);

2.也可以通过为task设置本地local变量来添加审批意见和其他需要的额外字段

<think>好的,用户想优化Activiti审批流程的性能。首先得了解Activiti的性能瓶颈可能在哪里。根据引用[2],历史数据会保存很多信息,比如流程实例的启动间和任务参与者。如果历史记录配置过多,可能会影响性能。所以可能需要调整历史记录的级别,减少不必要的数据存储。 接下来,数据库优化是关键。Activiti依赖数据库,所以表结构优化和索引添加很重要。比如,在经常查询的字段上建立索引,比如PROC_INST_ID_或ACT_ID_,可以提升查询速度。引用[5]提到排序操作,如果查询历史活动实例按开始间排序,确保相关字段有索引。 流程设计方面,引用[3]提到工作流自动化执行管理,流程设计是否合理直接影响性能。避免复杂的网关和嵌套子流程,简化BPMN结构,使用异步服务任务来处理耗操作,这样可以避免阻塞流程实例。 批量操作和缓存机制也是优化点。比如批量处理任务审批,减少数据库交互次数。同,利用Activiti的缓存,如开启流程定义缓存,减少数据库查询次数。 代码层面的优化,比如避免在循环中频繁调用API,使用更高效的查询方法。例如,使用Native Query代替Criteria API可能会更快。引用[4]中的配置方式,可能需要检查配置文件中的参数,比如异步执行器的配置,调整线程池大小来处理任务。 还有,定期清理历史数据。引用[2]提到历史服务保存大量数据,如果不需要全部历史记录,可以设置定任务清理旧数据,减轻数据库负担。 最后,监控和日志分析。通过监控工具找出慢查询或耗操作,针对性优化。调整日志级别,避免输出过多调试信息,提升执行效率。 需要综合这些方面,逐步排查和优化,才能有效提升Activiti审批流程的性能。</think>### Activiti工作流引擎审批流程性能优化方法 #### 一、历史数据配置优化 1. **调整历史记录级别**:在`activiti.cfg.xml`中配置`history`参数为`audit`或`none`,减少冗余历史数据存储[^2] ```xml <property name="history" value="audit"/> ``` 2. **选择性历史存储**:通过`HistoryService`接口按需查询历史数据,避免全量存储 ```java historyService.createHistoricProcessInstanceQuery() .orderByProcessInstanceStartTime().asc() .listPage(0, 10); // 分页查询示例[^5] ``` #### 二、数据库优化 1. **索引优化**: - 在`ACT_HI_ACTINST`表的`PROC_INST_ID_`字段创建索引 - 为`ACT_RU_TASK`表的`ASSIGNEE_`字段添加复合索引 2. **批量操作**:使用`BulkInsert`接口进行批量审批操作 ```java taskService.addCommentBatch(taskIds, comment); // 伪代码示例 ``` #### 三、流程设计优化 1. **简化BPMN结构**: - 避免多层嵌套子流程 - 使用`Exclusive Gateway`替代复杂网关组合 2. **异步任务处理**:对耗操作配置异步服务任务 ```xml <serviceTask id="asyncServiceTask" activiti:async="true" activiti:class="com.example.AsyncDelegate"/> ``` #### 四、执行引擎配置 1. **调整线程池配置**: ```xml <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="asyncExecutorActivate" value="true"/> <property name="asyncExecutorThreadPoolQueueSize" value="100"/> </bean> ``` 2. **启用查询缓存**: ```java ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery() .cacheable(); ``` #### 五、代码层优化 1. **避免N+1查询**:使用`.list()`代替循环中的`.singleResult()` 2. **使用原生SQL查询**:对复杂统计使用Native Query ```java String sql = "SELECT COUNT(*) FROM ACT_HI_TASKINST WHERE PROC_DEF_ID_ = #{processDefinitionId}"; Long count = managementService.executeCustomSql(new CustomSqlExecution<>(sql, processDefinitionId)); ``` #### 六、监控与调优 1. **启用性能监控**: ```xml <property name="enableDatabaseEventLogging" value="true"/> ``` 2. **分析执行计划**:通过`EXPLAIN`命令分析慢查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值