String product dataworks-public ; IClientProfile profile DefaultProfile.getProfile(region, akId, akSecret); DefaultProfile.addEndpoint(region, product, endpoint); client new DefaultAcsClient(profile); }
详细阅读DataWorks OpenAPI文档对开发非常有帮助 做API开发时如果对参数的约束不太理解时可参考DataWorks OpenAPI文档 里面对每个出入参、参数示例、错误码描述都有详细的解释。
以下是业务流程 文件夹和节点的创建、修改、删除和发布操作全流程。
public void createBusiness() throws ClientException { CreateBusinessRequest request new CreateBusinessRequest(); //右上角小扳手里 工作空间ID request.setProjectId(78837L); //右上角小扳手里 工作空间名称 request.setProjectIdentifier( zxy_8221431 ); //新业务流程名 唯一值 request.setBusinessName( test_create_business ); //NORMAL 数据开发 、MANUAL_BIZ 手动业务流程 request.setUseType( NORMAL ); CreateBusinessResponse acsResponse client.getAcsResponse(request); log.info(acsResponse.toString()); }
UpdateBusiness和DeleteBusiness可以修改和删除业务流程 删除业务流程是要保证指定的业务流程中所有的节点已经删除 ListBusiness 可以查看指定工作空间下符合匹配条件的所有业务流程 GetBusiness可以查看查询业务流程的详情。
public void createFloder() throws ClientException { CreateFolderRequest request new CreateFolderRequest(); request.setProjectId(78837L); // path “业务流程/” 目标业务流程名 目录名 最新文件夹名 request.setFolderPath( 业务流程/test_create_business/通用/test_floder_123 ); CreateFolderResponse acsResponse client.getAcsResponse(request); log.info(acsResponse.toString()); }
UpdateFolder可以修改文件夹的名称 DeleteFolder删除数据开发页面的文件夹 要确保此文件夹下掉节点已经全部删除
查看目录结构时首先隐藏引擎实例
下图为以下两个path创建的文件夹
folderPath 业务流程/test1/MaxCompute/test_floder_123
在MaxCompute中 文件夹刚创建成功时 目录结构时和数据开发同级的 在目录中新增一个节点后刷新页面会转移到对应的类型下 如下图新增一个odps_sql节点test_floder_123文件夹转移到数据开发下
folderPath 旧版工作流/test_floder_123 ;
下图路径为 业务流程/test_create_business/通用/test_floder_123
在查询的是后返回的路径可能和页面上字面值不一样 对应关系如下(调用接口路径还是按页面看到的填写)
folderAlgm - 算法
folderADBMysql - AnalyticDB for MySQL
folderCDH - CDH
folderDi - 数据集成
folderEMR - EMR
folderErd - 数据模型
folderFlink - Flink
folderGeneral - 通用
folderHologres - Hologres
folderADB - AnalyticDB for PostgreSQL
folderJdbc - 数据库
folderMaxCompute - MaxCompute
folderUserDefined - 自定义
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( 业务流程/test_create_business/通用/test_floder_123 ); //节点类型。 节点类型要符合目录类型 例如 fileType 23的离线同步节点 应该在数据集成目录下 request.setFileType(99); // 文件依赖的上游文件的输出 此处依赖跟节点 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() 为节点id 提交节点时使用 Long fileId acsResponse.getData(); log.info(acsResponse.toString()); }
节点类型要符合目录类型 例如 fileType 23的离线同步节点 应该在数据集成目录下。您可以通过ListFile查询对应文件,GetFile获取文件的详情,在调用UpdateFile更新已有的文件节点时 填写的参数必须和该节点原本的文件配置不同。例如 源节点的某参数值为A 则需要变更为B后再提交。如果仍填写A 会报invalid异常。
public void submitFile() throws ClientException{ SubmitFileRequest request new SubmitFileRequest(); request.setProjectId(78837L); request.setProjectIdentifier( zxy_8221431 ); // 此节点id为创建节点时返回的id. 对应数据库file表的file_id. 不是ide页面上调度配置里的节点Id request.setFileId(501576542L); request.setComment( 备注 ); SubmitFileResponse acsResponse client.getAcsResponse(request); //调用GetDeployment接口 获取本次发布的具体情况 Long deploymentId acsResponse.getData(); log.info(acsResponse.toString()); }
若项目空间是标准模式 则还需要发布节点到生产环境 在删除节点时标准环境中要把删除操作发布到生成环境,
在提交节点或发布节点后可以调用GetDeployment获取发布包的详情。
public void deploy() throws ClientException{ DeployFileRequest request new DeployFileRequest(); // request.setProjectId(78837L); request.setProjectIdentifier( zxy_8221431 ); request.setFileId(501576542L); request.setComment( 备注 ); // 和file_id 二选一 nodeId 的值为 ide页面调度配置里基础属性中 节点Id request.setNodeId(700004537241L); DeployFileResponse acsResponse client.getAcsResponse(request); // 调用GetDeployment接口 获取本次发布的具体情况 Long deploymentId acsResponse.getData(); log.info(acsResponse.getData().toString()); }
如果项目空间是简单模式 则不区分生产和开发环境 只需要调用提交接口即可
完整发布流程
1 新建节点 CreateFile
2 提交节点 SubmitFile
3 查询发布包状态 GetDeployment
4 提交成功后 标准模式发布到生产环境 DeployFile
5 查询发布包状态 GetDeployment
public void getDeployment() throws ClientException{ GetDeploymentRequest request new GetDeploymentRequest(); request.setProjectId(78837L); request.setProjectIdentifier( zxy_8221431 ); //deploymentId为提交/发布的返回值 request.setDeploymentId(2776067L); GetDeploymentResponse acsResponse client.getAcsResponse(request); log.info(acsResponse.getData().toString()); }
在提交和发布时 Response会返回deploymentId 此接口可获取发布包的详情。当返回状态为1时则表示发布成功
详细返回参数定义参考 deployment参数定义
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()); // 标准模式需要把删除发布到线上 DeployFileRequest deployFileRequest new DeployFileRequest(); request.setProjectId(78837L); deployFileRequest.setProjectIdentifier( zxy_8221431 ); deployFileRequest.setFileId(501576542L); deployFileRequest.setComment( 备注 ); // 和file_id 二选一 nodeId 的值为 ide页面调度配置里基础属性中 节点Id deployFileRequest.setNodeId(700004537241L); DeployFileResponse deployFileResponse client.getAcsResponse(deployFileRequest); Long deploymentId deployFileResponse.getData(); log.info(deployFileResponse.getData().toString()); }
在标准模式种删除节点是要记得调用发布接口DeployFileRequest把删除操作发布到线上
public void deleteFolder() throws ClientException{ //删除之前要先删除此目录下到所有节点 listFile查询节点 List ListFilesResponse.Data.File files listFiles(); for (ListFilesResponse.Data.File file : files) { //删除此文件夹下所有节点 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()); * 查询节点 * 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( 业务流程/test_create_business/通用/test_floder_123 ); //关键字匹配 //request.setKeyword( //文件所属的功能模块 包括NORMAL 数据开发 、MANUAL 手动任务 、MANUAL_BIZ 手动工作流 、SKIP 数据开发空跑调度 、ADHOCQUERY 临时查询 和COMPONENT 组件管理 request.setUseType( NORMAL ); //节点类型 多个用逗号分开 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( 业务流程/test_create_business/通用 ); ListFoldersResponse acsResponse client.getAcsResponse(request); return acsResponse.getData().getFolders(); }
删除文件夹是要先删除文件夹下所有节点和文件夹 ListFilesRequest 可以查询知道文件夹下的所有节点 逐个删除后才能删除文件夹 ?调用接口顺序为
1 ListFolders 查询到要删除的文件夹id和对应的文件夹的路径,
2 ListFiles 查询此文件夹路径下所有的节点信息
3 DeleteFile删除所有节点 若为标准环境 还要调用deploy接口把删除操作发布到线上
4 DeleteFolder删除文件夹
public void deleteBusiness() throws ClientException{ //要先删除此业务流程下所有节点 DeleteBusinessRequest request new DeleteBusinessRequest(); request.setProjectId(78837L); request.setProjectIdentifier( zxy_8221431 ); //调用ListBusiness接口 根据名称查询对应业务流程的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(); }
删除业务流程时也要删除此业务流程下掉所有节点
1 ListFiles 查询业务流程下所有的节点信息
2 DeleteFile删除所有节点 ?若为标准环境 还要调用deploy接口把删除操作发布到线上
3 DeleteFolder删除文件夹
DataWorks OpenAPI实现数据资产分布和排行分析
DataWorks OpenAPI-表结构变更时触发任务变更
DataWorks OpenAPI企业开发实战-运维监控大屏
DataWorks OpenAPI 实战-数据开发全流程介绍
DataWorks OpenAPI现开放7天免费试用 请使用钉钉扫码联系 提供试用账号的UID与Region即可。
提效神器 DataWorks OpenAPI开放7天免费试用
本文转自网络,原文链接:https://developer.aliyun.com/article/783555