Browse Source

chore(build): 更新构建配置并修复流程服务空指针问题

- 将 Nexus 仓库地址从公网 IP 更新为内网地址 192.168.100.25
- 在 common 模块中新增 common-botp 子模块
- common-botp 依赖版本更新,common-core 改为变量引用方式
- FlowEntryServiceImpl 增加 tokenData 为空时的空指针防护逻辑
- FlowTaskTitleBackfillServiceImpl 移除 GlobalThreadLocal 调用,简化数据过滤逻辑
- FlowTaskTitleBackfillServiceImpl 重构 processDefinitionKey 判空逻辑为提前返回
dev-lml
chenchuchuan 2 weeks ago
parent
commit
e031e4dd51
  1. 6
      common/common-botp/pom.xml
  2. 10
      common/common-flow/src/main/java/apelet/common/flow/service/FlowEntryService.java
  3. 11
      common/common-flow/src/main/java/apelet/common/flow/service/impl/FlowEntryServiceImpl.java
  4. 21
      common/common-flow/src/main/java/apelet/common/flow/service/impl/FlowTaskTitleBackfillServiceImpl.java
  5. 2
      common/pom.xml
  6. 4
      pom.xml

6
common/common-botp/pom.xml

@ -17,17 +17,17 @@ @@ -17,17 +17,17 @@
<dependency>
<groupId>apelet</groupId>
<artifactId>common-core</artifactId>
<version>1.0.0</version>
<version>${common-core.version}</version>
</dependency>
<dependency>
<groupId>apelet</groupId>
<artifactId>common-generator</artifactId>
<version>1.0.3</version>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>apelet</groupId>
<artifactId>common-online</artifactId>
<version>1.0.3</version>
<version>1.0.6</version>
<scope>compile</scope>
</dependency>
<dependency>

10
common/common-flow/src/main/java/apelet/common/flow/service/FlowEntryService.java

@ -79,6 +79,16 @@ public interface FlowEntryService extends IBaseService<FlowEntry, Long> { @@ -79,6 +79,16 @@ public interface FlowEntryService extends IBaseService<FlowEntry, Long> {
*/
FlowEntry getFlowEntryFromCache(String processDefinitionKey);
/**
* 根据流程定义标识获取流程对象。从缓存中读取,如不存在则从数据库读取后,再同步到缓存。
*
* @param processDefinitionKey 流程定义标识。
* @param isToken 是否存在登录态
* @return 流程对象。
*/
FlowEntry getFlowEntryFromCache(String processDefinitionKey ,Boolean isToken);
/**
* 根据流程Id获取流程发布列表数据。
*

11
common/common-flow/src/main/java/apelet/common/flow/service/impl/FlowEntryServiceImpl.java

@ -240,10 +240,21 @@ public class FlowEntryServiceImpl extends BaseService<FlowEntry, Long> implement @@ -240,10 +240,21 @@ public class FlowEntryServiceImpl extends BaseService<FlowEntry, Long> implement
@Override
public FlowEntry getFlowEntryFromCache(String processDefinitionKey) {
return getFlowEntryFromCache(processDefinitionKey, true);
}
@Override
public FlowEntry getFlowEntryFromCache(String processDefinitionKey, Boolean isToken) {
String key = FlowRedisKeyUtil.makeFlowEntryKey(processDefinitionKey);
LambdaQueryWrapper<FlowEntry> qw = new LambdaQueryWrapper<>();
qw.eq(FlowEntry::getProcessDefinitionKey, processDefinitionKey);
if (Boolean.FALSE.equals(isToken)) {
return commonRedisUtil.getFromCacheWithQueryWrapper(key, qw, flowEntryMapper::selectOne, FlowEntry.class);
}
TokenData tokenData = TokenData.takeFromRequest();
if (tokenData == null) {
return null;
}
if (StrUtil.isNotBlank(tokenData.getAppCode())) {
qw.eq(FlowEntry::getAppCode, tokenData.getAppCode());
} else {

21
common/common-flow/src/main/java/apelet/common/flow/service/impl/FlowTaskTitleBackfillServiceImpl.java

@ -11,12 +11,7 @@ import apelet.common.flow.model.FlowTaskExt; @@ -11,12 +11,7 @@ import apelet.common.flow.model.FlowTaskExt;
import apelet.common.flow.model.FlowTaskInstanceExt;
import apelet.common.flow.model.FlowWorkOrder;
import apelet.common.flow.model.constant.FlowBindFormType;
import apelet.common.flow.service.FlowApiService;
import apelet.common.flow.service.FlowEntryService;
import apelet.common.flow.service.FlowTaskExtService;
import apelet.common.flow.service.FlowTaskInstanceExtService;
import apelet.common.flow.service.FlowTaskTitleBackfillService;
import apelet.common.flow.service.FlowWorkOrderService;
import apelet.common.flow.service.*;
import apelet.common.flow.vo.FlowTaskTitleBackfillVo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
@ -30,11 +25,7 @@ import org.flowable.task.api.history.HistoricTaskInstance; @@ -30,11 +25,7 @@ import org.flowable.task.api.history.HistoricTaskInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* 节点标题回填服务实现。
@ -84,7 +75,7 @@ public class FlowTaskTitleBackfillServiceImpl implements FlowTaskTitleBackfillSe @@ -84,7 +75,7 @@ public class FlowTaskTitleBackfillServiceImpl implements FlowTaskTitleBackfillSe
result.setDryRun(onlyCount);
// 回填是没有登录态的运维动作,且要跨租户跑;关掉数据权限过滤,
// 否则 getMasterData -> buildDataPermFilter -> processDataPerm 会因 TokenData 为空而 NPE。
boolean dataFilterEnabled = GlobalThreadLocal.setDataFilter(false);
boolean dataFilterEnabled = false;
try {
List<FlowWorkOrder> workOrderList = flowWorkOrderService.getListByWorkOrderIdAfter(cursorWorkOrderId, size);
for (FlowWorkOrder workOrder : workOrderList) {
@ -113,8 +104,10 @@ public class FlowTaskTitleBackfillServiceImpl implements FlowTaskTitleBackfillSe @@ -113,8 +104,10 @@ public class FlowTaskTitleBackfillServiceImpl implements FlowTaskTitleBackfillSe
if (StrUtil.isBlank(processInstanceId)) {
return;
}
FlowEntry flowEntry = StrUtil.isBlank(workOrder.getProcessDefinitionKey()) ? null
: flowEntryService.getFlowEntryFromCache(workOrder.getProcessDefinitionKey());
if (StrUtil.isBlank(workOrder.getProcessDefinitionKey())) {
return;
}
FlowEntry flowEntry = flowEntryService.getFlowEntryFromCache(workOrder.getProcessDefinitionKey(), false);
// 路由表单流程本来就没有标题,跳过
if (flowEntry == null || !ObjectUtil.equal(flowEntry.getBindFormType(), FlowBindFormType.ONLINE_FORM)) {
return;

2
common/pom.xml

@ -24,6 +24,8 @@ @@ -24,6 +24,8 @@
<module>common-openapi</module>
<module>common-core</module>
<module>common-botp</module>
</modules>

4
pom.xml

@ -138,13 +138,13 @@ @@ -138,13 +138,13 @@
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://58.48.135.45:8081/repository/maven-releases/</url>
<url>http://192.168.100.25:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>maven-snapshots</name>
<url>http://58.48.135.45:8081/repository/maven-snapshots/</url>
<url>http://192.168.100.25:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>

Loading…
Cancel
Save