@Override
    @Transactional(rollbackFor = Throwable.class)
    public Boolean updateOpt(ScheduleInfoRequest request, String operator) {
        // if the inlong group exist without schedule info
        // then, save the new schedule info when updating inlong group
        if (!scheduleInfoExist(request.getInlongGroupId())) {
            saveOpt(request, operator);
            return true;
        }
        ScheduleInfo scheduleInfo = CommonBeanUtils.copyProperties(request, ScheduleInfo::new);
        if (!needUpdate(scheduleInfo)) {
            LOGGER.info("schedule info not changed for group {}", request.getInlongGroupId());
            return false;
        }
        // update schedule info
        boolean res = scheduleService.update(request, operator);
        // update status
        scheduleService.updateStatus(request.getInlongGroupId(), UPDATED, operator);
        return res;
    }
If an inlong group in DATASYNC_OFFLINE_MODE created first without schedule info and has been approved, it should
be registered to schedule engine once the schedule info for this group is added.
inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/schedule/ScheduleOperatorImpl.java