docs: public void modify(Pipeline pipeline) {
          Assert.assertNotNull(pipeline);
          try {
  
              PipelineDO pipelineDo = modelToDo(pipeline);
  
              if (!pipelineDao.checkUnique(pipelineDo)) {
                  String exceptionCause = "exist the same name pipeline under the channel(" + pipelineDo.getChannelId()
                                          + ") in the database.";
                  logger.warn("WARN ## " + exceptionCause);
                  throw new RepeatConfigureException(exceptionCause);
              }
  
              pipelineNodeRelationDao.deleteByPipelineId(pipelineDo.getId());
  
              pipelineDao.update(pipelineDo);
  
              List<PipelineNodeRelationDO> pipelineNodeRelationDos = new ArrayList<PipelineNodeRelationDO>();
  
              for (Node node : pipeline.getSelectNodes()) {
                  PipelineNodeRelationDO pipelineNodeRelationDo = new PipelineNodeRelationDO();
                  pipelineNodeRelationDo.setPipelineId(pipelineDo.getId());
                  pipelineNodeRelationDo.setNodeId(node.getId());
                  pipelineNodeRelationDo.setLocation(Location.SELECT);
                  pipelineNodeRelationDos.add(pipelineNodeRelationDo);
              }
  
              for (Node node : pipeline.getExtractNodes()) {
                  PipelineNodeRelationDO pipelineNodeRelationDo = new PipelineNodeRelationDO();
                  pipelineNodeRelationDo.setPipelineId(pipelineDo.getId());
                  pipelineNodeRelationDo.setNodeId(node.getId());
                  pipelineNodeRelationDo.setLocation(Location.EXTRACT);
                  pipelineNodeRelationDos.add(pipelineNodeRelationDo);
              }
  
              for (Node node : pipeline.getLoadNodes()) {
                  PipelineNodeRelationDO pipelineNodeRelationDo = new PipelineNodeRelationDO();
                  pipelineNodeRelationDo.setPipelineId(pipelineDo.getId());
                  pipelineNodeRelationDo.setNodeId(node.getId());
                  pipelineNodeRelationDo.setLocation(Location.LOAD);
                  pipelineNodeRelationDos.add(pipelineNodeRelationDo);
              }
  
              pipelineNodeRelationDao.insertBatch(pipelineNodeRelationDos);
          } catch (Exception e) {
              logger.error("ERROR ## modify the pipeline(" + pipeline.getId() + ") has an exception!");
              throw new ManagerException(e);
          }
      }