@Override
    @Transactional(rollbackFor = Throwable.class)
    public String save(InlongGroupRequest request, String operator) {
        LOGGER.debug("begin to save inlong group={} by user={}", request, operator);
        Preconditions.expectNotNull(request, "inlong group request cannot be empty");

        String groupId = request.getInlongGroupId();
        InlongGroupEntity entity = groupMapper.selectByGroupIdWithoutTenant(groupId);
        if (entity != null) {
            LOGGER.error("groupId={} has already exists", groupId);
            throw new BusinessException(ErrorCodeEnum.GROUP_DUPLICATE);
        }

        if (request.getEnableZookeeper() == null) {
            request.setEnableZookeeper(enableZookeeper ? InlongConstants.ENABLE_ZK : InlongConstants.DISABLE_ZK);
        }
        InlongGroupOperator instance = groupOperatorFactory.getInstance(request.getMqType());
        groupId = instance.saveOpt(request, operator);

        // save ext info
        this.saveOrUpdateExt(groupId, request.getExtList());

        // save schedule info for offline group
        if (DATASYNC_OFFLINE_MODE.equals(request.getInlongGroupMode())) {
            constrainStartAndEndTime(request);
            scheduleOperator.saveOpt(CommonBeanUtils.copyProperties(request, ScheduleInfoRequest::new), operator);
        }

        LOGGER.info("success to save inlong group for groupId={} by user={}", groupId, operator);
        return groupId;
    }
Check whether modification is supported under the current group status, and which fields can be modified.

@param entity original inlong group entity
@param request request of updated
@param operator current operator
inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java