docs: private Long getMinTransformedProcessId(Long loadedProcessId) {
          ProcessMonitor processMonitor = ArbitrateFactory.getInstance(getPipelineId(), ProcessMonitor.class);
          List<Long> processIds = processMonitor.getCurrentProcessIds();
          // 如果需要当前node处理当前process的load时，rpc请求一定会将对应的stage状态发到这机器上，并保存到progress中
          if (!CollectionUtils.isEmpty(processIds) && !CollectionUtils.isEmpty(progress)) {
              // 上一次load成功的在当前的processId中不存在，可能有两种情况:
              // 1. zk还未将数据通知过来，当前current processIds还是为老版本的值
              // 2. processId已经被删除，比如好久没有数据同步了，定时触发时发觉列表一直为空
              // if (loadedProcessId != null && !processIds.contains(loadedProcessId)) {
              // // 强制刷新一次，不过也可能是刷到老版本的值，杭州leader还没同步到美国
              // processIds = processMonitor.getCurrentProcessIds(true);
              // }
  
              Long result = null;
              // 做的一个优化，如果上一个processId load成功是在本机，直接忽略
              // 因为存在一个问题：比如两个process，都先完成了T模块，然后逐个触发L模块，此时第二个process需要等zookeeper回调watcher时才会被触发
              for (Long processId : processIds) {
                  if (loadedProcessId == null || processId > loadedProcessId) {
                      result = processId;
                      break;
                  }
              }
  
              // 如果不存在符合>loadedProcessId的记录，直接假设下一个processId就是上一个id+1
              // 因为processId目前的机制永远只会递增
              if (result == null) {
                  result = loadedProcessId + 1;
              }
  
              if (result != null) {
                  StageProgress stage = progress.get(result);
                  if (stage != null && stage.getStage().isTransform()) {
                      return result;
                  } else {
                      logger.info("rpc compute [{}] but stage [{}]", result, stage == null ? null : stage.getStage());
                      return null;
                  }
              }
          }
  
          return null;
      }