日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

最佳實踐:文件管理OpenAPI基礎實踐

本篇文章將詳細介紹DataWorks OpenAPI從初始化客戶端、創(chuàng)建業(yè)務流程以及節(jié)點發(fā)布上線,再到刪除節(jié)點和業(yè)務流程,幫助您快速上手使用DataWorks OpenAPI。

背景信息

DataWorks OpenAPI進行數(shù)據(jù)開發(fā)時,整體流程如下圖所示。

image

操作步驟

  1. 初始化客戶端。

    public class IdePopApiTest {
        // 賬號信息
        @Value("${aliyun.akId}")
        private String akId;
        @Value("${aliyun.akSecret}")
        private String akSecret ;
        
        // 例:cn-shanghai
        @Value("${aliyun.region}")
        private String region;
        // 例:dataworks.cn-shanghai.aliyuncs.com
        @Value("${aliyun.endpoint}")
        private String endpoint;
    
        private IAcsClient client;
    
    
        @Before
        public void init() throws ClientException {
            String product = "dataworks-public";
            IClientProfile profile = DefaultProfile.getProfile(region, akId, akSecret);
            DefaultProfile.addEndpoint(region, product, endpoint);
            client = new DefaultAcsClient(profile);
        }
    }   
  2. 創(chuàng)建業(yè)務流程。

    public void createBusiness() throws ClientException {
            CreateBusinessRequest request = new CreateBusinessRequest();
            //右上角小扳手里,工作空間ID
            request.setProjectId(78837L);
            //右上角小扳手里,工作空間名稱
            request.setProjectIdentifier("zxy_8221431");
            //新業(yè)務流程名,唯一值
            request.setBusinessName("test_create_business");
            //NORMAL(數(shù)據(jù)開發(fā))、MANUAL_BIZ(手動業(yè)務流程)
            request.setUseType("NORMAL");
            CreateBusinessResponse acsResponse = client.getAcsResponse(request);
            log.info(acsResponse.toString());
    }
    說明
    • UpdateBusinessDeleteBusiness可以修改和刪除業(yè)務流程,刪除業(yè)務流程是要保證指定的業(yè)務流程中所有的節(jié)點已經(jīng)刪除。

    • ListBusiness可以查看指定工作空間下符合匹配條件的所有業(yè)務流程。

    • GetBusiness可以查看查詢業(yè)務流程的詳情。

  3. 創(chuàng)建文件夾。

    public void createFloder() throws ClientException {
            CreateFolderRequest request = new CreateFolderRequest();
            request.setProjectId(78837L);
            // 路徑:“業(yè)務流程/” + 目標業(yè)務流程名 + 目錄名 + 最新文件夾名
            request.setFolderPath("業(yè)務流程/test_create_business/通用/test_floder_123");
            CreateFolderResponse acsResponse = client.getAcsResponse(request);
            log.info(acsResponse.toString());
        }
    說明

    UpdateFolder可以修改文件夾的名稱,DeleteFolder刪除數(shù)據(jù)開發(fā)頁面的文件夾(要確保此文件夾下的節(jié)點已經(jīng)全部刪除)。

  4. 創(chuàng)建、提交、發(fā)布節(jié)點。

    1. 創(chuàng)建節(jié)點。

      public void createFile() throws ClientException{
              CreateFileRequest request = new CreateFileRequest();
              request.setProjectId(78837L);
              request.setProjectIdentifier("zxy_8221431");
              request.setFileName("test_vi_file_name2");
              request.setFileDescription("Description");
              request.setFileFolderPath("業(yè)務流程/test_create_business/通用/test_floder_123");
              //節(jié)點類型。節(jié)點類型要符合目錄類型。例如:fileType=23的離線同步節(jié)點,應該在數(shù)據(jù)集成目錄下。
              request.setFileType(99);
              // 文件依賴的上游文件的輸出,此處依賴根節(jié)點projectIdentifier_root。必填,不然無法提交。
              request.setInputList("zxy_8221431_root");
              // 對應ide頁面調度配置重跑類型。必填,不然無法提交。
              //ALL_ALLOWED(運行成功或失敗后皆可重跑)
              //FAILURE_ALLOWED(運行成功后不可重跑,運行失敗后可以重跑)
              //ALL_DENIED(運行成功或失敗皆不可重跑)
              request.setRerunMode("ALL_ALLOWED");
              CreateFileResponse acsResponse = client.getAcsResponse(request);
              // acsResponse.getData() 為節(jié)點id 提交節(jié)點時使用
              Long fileId = acsResponse.getData();
              log.info(acsResponse.toString());
          }
      說明
      • 節(jié)點類型要符合目錄類型。例如fileType=23的離線同步節(jié)點,應該在數(shù)據(jù)集成目錄下。

      • 您可以通過ListFile查詢對應文件,GetFile獲取文件的詳情。

      • 在調用UpdateFile更新已有的文件節(jié)點時,填寫的參數(shù)必須和該節(jié)點原本的文件配置不同。例如源節(jié)點的某參數(shù)值為A,則需要變更為B后再提交。如果仍填寫A,會報invalid異常。

    2. 提交節(jié)點。

       public void submitFile() throws ClientException{
              SubmitFileRequest request = new SubmitFileRequest();
              request.setProjectId(78837L);
              request.setProjectIdentifier("zxy_8221431");
              // 此節(jié)點id為創(chuàng)建節(jié)點時返回的id,對應數(shù)據(jù)庫file表的file_id,不是數(shù)據(jù)開發(fā)頁面上調度配置里的節(jié)點Id。
              request.setFileId(501576542L);
              request.setComment("備注");
              SubmitFileResponse acsResponse = client.getAcsResponse(request);
              // 調用GetDeployment接口獲取本次發(fā)布的具體情況。
              Long deploymentId = acsResponse.getData();
              log.info(acsResponse.toString());
      }
      說明

      若項目空間是標準模式,則還需要發(fā)布節(jié)點到生產(chǎn)環(huán)境。在刪除節(jié)點時標準環(huán)境中要把刪除操作發(fā)布到生成環(huán)境,在提交節(jié)點或發(fā)布節(jié)點后可以調用GetDeployment獲取發(fā)布包的詳情。

    3. 發(fā)布節(jié)點。

       public void deploy() throws ClientException{
              DeployFileRequest request = new DeployFileRequest();
              // request.setProjectId(78837L);
              request.setProjectIdentifier("zxy_8221431");
              request.setFileId(501576542L);
              request.setComment("備注");
              // 和file_id二選一。NodeId的值為數(shù)據(jù)開發(fā)頁面調度配置里基礎屬性中的節(jié)點Id。
              request.setNodeId(700004537241L);
              DeployFileResponse acsResponse = client.getAcsResponse(request);
              // 調用GetDeployment接口,獲取本次發(fā)布的具體情況。
              Long deploymentId = acsResponse.getData();
              log.info(acsResponse.getData().toString());
          }
      說明

      如果項目空間是簡單模式,則不區(qū)分生產(chǎn)和開發(fā)環(huán)境,只需要調用提交接口即可。

  5. 獲取發(fā)布包詳情。

    public void getDeployment() throws ClientException{
            GetDeploymentRequest request = new GetDeploymentRequest();
            request.setProjectId(78837L);
            request.setProjectIdentifier("zxy_8221431");
            //deploymentId為提交、發(fā)布的返回值。
            request.setDeploymentId(2776067L);
            GetDeploymentResponse acsResponse = client.getAcsResponse(request);
            log.info(acsResponse.getData().toString());
        }
    說明

    在提交和發(fā)布時,Response會返回deploymentId,此接口可獲取發(fā)布包的詳情。當返回狀態(tài)為1時則表示發(fā)布成功,詳細返回參數(shù)定義參考GetDeployment

  6. 刪除節(jié)點。

    public void deleteFile() throws ClientException{
            DeleteFileRequest request = new DeleteFileRequest();
            request.setProjectId(78837L);
            request.setProjectIdentifier("zxy_8221431");
    
            request.setFileId(501576542L);
            DeleteFileResponse acsResponse = client.getAcsResponse(request);
            log.info(acsResponse.toString());
            // 標準模式需要把刪除發(fā)布到線上。
            DeployFileRequest deployFileRequest = new DeployFileRequest();
            request.setProjectId(78837L);
            deployFileRequest.setProjectIdentifier("zxy_8221431");
            deployFileRequest.setFileId(501576542L);
            deployFileRequest.setComment("備注");
            // 和file_id二選一。nodeId 的值為數(shù)據(jù)開發(fā)頁面調度配置里基礎屬性中節(jié)點Id。
            deployFileRequest.setNodeId(700004537241L);
            DeployFileResponse deployFileResponse = client.getAcsResponse(deployFileRequest);
            Long deploymentId = deployFileResponse.getData();
            log.info(deployFileResponse.getData().toString());
    
        }
    說明

    在標準模式中刪除節(jié)點是需調用發(fā)布接口DeployFileRequest,將刪除操作發(fā)布到線上。

  7. 刪除文件夾。

    刪除文件夾是要先刪除文件夾下所有節(jié)點和文件夾。ListFilesRequest可以查詢文件夾下的所有節(jié)點,逐個刪除后才能刪除文件夾。調用接口順序為如下。

    1. ListFolders查詢要刪除的文件夾ID和對應的文件夾的路徑。

    2. ListFiles查詢此文件夾路徑下所有的節(jié)點信息。

    3. DeleteFile刪除所有節(jié)點。若為標準環(huán)境,還要調用deploy接口將刪除操作發(fā)布到線上。

    4. DeleteFolder刪除文件夾。

    public void deleteFolder() throws ClientException{
            //刪除之前要先刪除此目錄下到所有節(jié)點。listFile查詢節(jié)點。
            List<ListFilesResponse.Data.File> files = listFiles();
            for (ListFilesResponse.Data.File file : files) {
                //刪除此文件夾下所有節(jié)點。
                deleteFile(file);
            }
            DeleteFolderRequest request = new DeleteFolderRequest();
            request.setProjectId(78837L);
            request.setProjectIdentifier("zxy_8221431");
            //調用listFolders獲取folderId。
            request.setFolderId("*****");
            DeleteFolderResponse acsResponse = client.getAcsResponse(request);
            log.info(acsResponse.toString());
     }
    
    /**
         * 查詢節(jié)點
         * @return
         * @throws ClientException
         */
    public List<ListFilesResponse.Data.File> listFiles() throws ClientException{
            ListFilesRequest request = new ListFilesRequest();
            request.setProjectId(78837L);
            request.setProjectIdentifier("zxy_8221431");
            request.setPageNumber(1);
            request.setPageSize(10);
            request.setFileFolderPath("業(yè)務流程/test_create_business/通用/test_floder_123");
            //關鍵字匹配。
            //request.setKeyword("");
            //文件所屬的功能模塊,包括NORMAL(數(shù)據(jù)開發(fā))、MANUAL(手動任務)、MANUAL_BIZ(手動工作流)、SKIP(數(shù)據(jù)開發(fā)空跑調度)、ADHOCQUERY(臨時查詢)和COMPONENT(組件管理)
            request.setUseType("NORMAL");
            //節(jié)點類型。多個用逗號分開。
            request.setFileTypes("10,23,99");
            ListFilesResponse acsResponse = client.getAcsResponse(request);
            return acsResponse.getData().getFiles();
        }
    
    /**
         * 查詢文件夾
         * @return
         * @throws ClientException
         */
     public List<ListFoldersResponse.Data.FoldersItem> listFolders() throws ClientException{
            ListFoldersRequest request = new ListFoldersRequest();
            request.setProjectId(78837L);
            request.setProjectIdentifier("zxy_8221431");
            request.setPageNumber(1);
            request.setPageSize(10);
            //父文件夾的路徑。
            request.setParentFolderPath("業(yè)務流程/test_create_business/通用");
            ListFoldersResponse acsResponse = client.getAcsResponse(request);
            return acsResponse.getData().getFolders();
        }
  8. 刪除業(yè)務流程。

    刪除業(yè)務流程時也要刪除此業(yè)務流程下掉所有節(jié)點。調用接口順序為如下。

    1. ListFiles 查詢業(yè)務流程下所有的節(jié)點信息。

    2. DeleteFile刪除所有節(jié)點。若為標準環(huán)境,還要調用deploy接口將刪除操作發(fā)布到線上。

    3. DeleteFolder刪除文件夾。

    public void deleteBusiness() throws ClientException{
            //要先刪除此業(yè)務流程下所有節(jié)點。
            DeleteBusinessRequest request = new DeleteBusinessRequest();
            request.setProjectId(78837L);
            request.setProjectIdentifier("zxy_8221431");
            //調用ListBusiness接口,根據(jù)名稱查詢對應業(yè)務流程的ID。
            List<ListBusinessResponse.Data.BusinessItem> businessItems = listBusiness();
    
            request.setBusinessId(businessItems.get(0).getBusinessId());
            DeleteBusinessResponse acsResponse = client.getAcsResponse(request);
            log.info(acsResponse.toString());
    
        }
    
        public List<ListBusinessResponse.Data.BusinessItem> listBusiness()  throws ClientException{
            ListBusinessRequest request = new ListBusinessRequest();
            request.setProjectId(78837L);
            request.setProjectIdentifier("zxy_8221431");
            request.setPageNumber(1);
            request.setPageSize(10);
            request.setKeyword("test_create");
            ListBusinessResponse acsResponse = client.getAcsResponse(request);
            return acsResponse.getData().getBusiness();
        }