├── .github └── workflows │ └── main.yml ├── .gitignore ├── .idea ├── .gitignore └── misc.xml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── README_zh_CN.md ├── client ├── client-common │ ├── pom.xml │ └── src │ │ └── main │ │ ├── bin │ │ └── common.py │ │ ├── conf │ │ └── logback.xml │ │ └── java │ │ └── com │ │ └── aliyun │ │ └── dataworks │ │ └── client │ │ └── command │ │ ├── AppMeta.java │ │ ├── AppType.java │ │ ├── CommandApp.java │ │ ├── CommandAppEntrance.java │ │ └── CommandAppFactory.java ├── client-spark-utils │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── aliyun │ │ │ └── dataworks │ │ │ └── client │ │ │ └── utils │ │ │ └── spark │ │ │ └── command │ │ │ ├── AbstractAppHandle.java │ │ │ ├── AbstractCommandBuilder.java │ │ │ ├── AbstractLauncher.java │ │ │ ├── ChildProcAppHandle.java │ │ │ ├── CommandBuilderUtils.java │ │ │ ├── FilteredObjectInputStream.java │ │ │ ├── InProcessAppHandle.java │ │ │ ├── InProcessLauncher.java │ │ │ ├── LauncherConnection.java │ │ │ ├── LauncherProtocol.java │ │ │ ├── LauncherServer.java │ │ │ ├── NamedThreadFactory.java │ │ │ ├── OutputRedirector.java │ │ │ ├── SparkAppHandle.java │ │ │ ├── SparkClassCommandBuilder.java │ │ │ ├── SparkLauncher.java │ │ │ ├── SparkSubmitCommandBuilder.java │ │ │ ├── SparkSubmitCommandUtils.java │ │ │ └── SparkSubmitOptionParser.java │ │ └── test │ │ └── java │ │ └── com │ │ └── aliyun │ │ └── dataworks │ │ └── client │ │ └── utils │ │ └── spark │ │ └── command │ │ └── SparkSubmitCommandUtilsTest.java ├── client-toolkits │ ├── package.xml │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── bin │ │ │ └── spec.py │ │ ├── conf │ │ │ └── apps.json │ │ └── java │ │ │ └── com │ │ │ └── aliyun │ │ │ └── dataworks │ │ │ └── client │ │ │ └── toolkits │ │ │ └── command │ │ │ ├── DataWorksSpecToolkit.java │ │ │ └── SpecCommandApp.java │ │ └── test │ │ └── java │ │ └── com │ │ └── aliyun │ │ └── dataworks │ │ └── AppTest.java ├── migrationx-transformer │ └── src │ │ └── main │ │ ├── python │ │ ├── airflow_dag_parser │ │ │ ├── README.MD │ │ │ ├── __init__.py │ │ │ ├── common │ │ │ │ ├── __init__.py │ │ │ │ ├── configs.py │ │ │ │ ├── datax.py │ │ │ │ └── supports.py │ │ │ ├── connections.py │ │ │ ├── converter │ │ │ │ ├── __init__.py │ │ │ │ ├── converters.py │ │ │ │ ├── dag_converter.py │ │ │ │ └── task_converter.py │ │ │ ├── dag_parser.py │ │ │ ├── downloader.py │ │ │ ├── get_dags.py │ │ │ ├── miscs │ │ │ │ ├── __init__.py │ │ │ │ └── helpers.py │ │ │ ├── models │ │ │ │ ├── __init__.py │ │ │ │ ├── dw_base.py │ │ │ │ ├── dw_eums.py │ │ │ │ ├── dw_node.py │ │ │ │ ├── dw_node_io.py │ │ │ │ ├── dw_spec.py │ │ │ │ ├── dw_workflow.py │ │ │ │ └── products.py │ │ │ ├── parser.py │ │ │ ├── patch │ │ │ │ ├── __init__.py │ │ │ │ ├── base_hook_patch.py │ │ │ │ ├── mysql_hook_patch.py │ │ │ │ ├── presto_hook_patch.py │ │ │ │ ├── presto_to_mysql_operator_patch.py │ │ │ │ ├── spark_submit_hook_patch.py │ │ │ │ ├── sqoop_hook_patch.py │ │ │ │ └── task_instance_patch.py │ │ │ └── test │ │ │ │ ├── __init__.py │ │ │ │ ├── code │ │ │ │ ├── __init__.py │ │ │ │ ├── example_bash_operator.py │ │ │ │ ├── example_dynamic_task_mapping.py │ │ │ │ ├── example_latest_only.py │ │ │ │ ├── example_mysql.py │ │ │ │ ├── example_params_trigger_ui.py │ │ │ │ ├── example_postgres.py │ │ │ │ ├── example_short_circuit_operator.py │ │ │ │ ├── example_task_group.py │ │ │ │ ├── example_trigger_controller_dag.py │ │ │ │ ├── example_trigger_target_dag.py │ │ │ │ ├── example_twitter_dag.py │ │ │ │ └── tutorial.py │ │ │ │ └── test_list_dags.py │ │ ├── build.sh │ │ ├── common.sh │ │ └── setup_env.sh │ │ └── scripts │ │ └── drop_table.sql ├── migrationx │ ├── migrationx-common │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── migrationx │ │ │ │ │ └── common │ │ │ │ │ ├── context │ │ │ │ │ └── TransformerContext.java │ │ │ │ │ ├── exception │ │ │ │ │ ├── BaseException.java │ │ │ │ │ ├── BizException.java │ │ │ │ │ ├── ErrorCode.java │ │ │ │ │ ├── SysException.java │ │ │ │ │ └── UnSupportedTypeException.java │ │ │ │ │ ├── http │ │ │ │ │ └── HttpClientUtil.java │ │ │ │ │ ├── metrics │ │ │ │ │ ├── DefaultMetricCollector.java │ │ │ │ │ ├── DolphinMetrics.java │ │ │ │ │ ├── DolphinMetricsCollector.java │ │ │ │ │ ├── Metrics.java │ │ │ │ │ ├── MetricsCollector.java │ │ │ │ │ ├── MetricsSummary.java │ │ │ │ │ ├── Progress.java │ │ │ │ │ └── enums │ │ │ │ │ │ └── CollectorType.java │ │ │ │ │ └── utils │ │ │ │ │ ├── BeanUtils.java │ │ │ │ │ ├── BeanValidateUtil.java │ │ │ │ │ ├── Config.java │ │ │ │ │ ├── DateUtils.java │ │ │ │ │ ├── ExecuteUtils.java │ │ │ │ │ ├── FileNameUtils.java │ │ │ │ │ ├── GsonUtils.java │ │ │ │ │ ├── IntlUtils.java │ │ │ │ │ ├── JSONUtils.java │ │ │ │ │ ├── JdbcUtils.java │ │ │ │ │ ├── JsonFileUtils.java │ │ │ │ │ ├── PaginateUtils.java │ │ │ │ │ ├── ThreadLocalUtils.java │ │ │ │ │ ├── UuidGenerators.java │ │ │ │ │ ├── UuidUtils.java │ │ │ │ │ └── ZipUtils.java │ │ │ └── resources │ │ │ │ ├── i18n │ │ │ │ ├── en_US.json │ │ │ │ └── zh_CN.json │ │ │ │ └── logback.xml │ │ │ └── test │ │ │ ├── java │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── migrationx │ │ │ │ └── common │ │ │ │ ├── context │ │ │ │ └── TransformerContextTest.java │ │ │ │ └── utils │ │ │ │ └── IntlUtilsTest.java │ │ │ └── resources │ │ │ └── i18n │ │ │ ├── en_US.json │ │ │ └── zh_CN.json │ ├── migrationx-domain │ │ ├── migrationx-domain-adf │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── domain │ │ │ │ │ └── adf │ │ │ │ │ ├── AdfConf.java │ │ │ │ │ ├── AdfPackage.java │ │ │ │ │ ├── AdfPackageFileService.java │ │ │ │ │ ├── AdfPackageLoader.java │ │ │ │ │ ├── Factory.java │ │ │ │ │ ├── Identity.java │ │ │ │ │ ├── LinkedService.java │ │ │ │ │ ├── Pipeline.java │ │ │ │ │ ├── RequestPayload.java │ │ │ │ │ ├── Tags.java │ │ │ │ │ └── Trigger.java │ │ │ │ └── test │ │ │ │ ├── java │ │ │ │ └── AdfPackageLoaderTest.java │ │ │ │ └── resources │ │ │ │ └── triggers.json │ │ ├── migrationx-domain-airflow │ │ │ ├── .gitignore │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── domain │ │ │ │ │ └── dataworks │ │ │ │ │ └── airflow │ │ │ │ │ ├── AirflowDumpItem.java │ │ │ │ │ ├── AirflowNode.java │ │ │ │ │ ├── AirflowWorkflow.java │ │ │ │ │ └── OperatorType.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── AppTest.java │ │ ├── migrationx-domain-aliyunemr │ │ │ ├── .gitignore │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── domain │ │ │ │ │ └── dataworks │ │ │ │ │ └── aliyunemr │ │ │ │ │ ├── AliyunEmrExportRequest.java │ │ │ │ │ ├── AliyunEmrExporterConstants.java │ │ │ │ │ ├── AliyunEmrProject.java │ │ │ │ │ ├── AliyunEmrService.java │ │ │ │ │ ├── CronUtil.java │ │ │ │ │ ├── Flow.java │ │ │ │ │ ├── PackageInfo.java │ │ │ │ │ └── ParamUtil.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── migrationx │ │ │ │ └── domain │ │ │ │ └── dataworks │ │ │ │ └── aliyunemr │ │ │ │ ├── AliyunEmrServiceTest.java │ │ │ │ ├── CronUtilTest.java │ │ │ │ └── ParamUtilTest.java │ │ ├── migrationx-domain-azkaban │ │ │ ├── .gitignore │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── domain │ │ │ │ │ └── dataworks │ │ │ │ │ └── azkaban │ │ │ │ │ ├── objects │ │ │ │ │ ├── CommandJob.java │ │ │ │ │ ├── ConfigProperty.java │ │ │ │ │ ├── Flow.java │ │ │ │ │ ├── FlowJob.java │ │ │ │ │ ├── HiveJob.java │ │ │ │ │ ├── Job.java │ │ │ │ │ ├── JobProperty.java │ │ │ │ │ ├── JobType.java │ │ │ │ │ ├── NoopJob.java │ │ │ │ │ └── Project.java │ │ │ │ │ └── service │ │ │ │ │ └── AzkabanPackageParser.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── AppTest.java │ │ ├── migrationx-domain-caiyunjian │ │ │ ├── .gitignore │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── domain │ │ │ │ │ └── dataworks │ │ │ │ │ └── caiyunjian │ │ │ │ │ ├── CaiyunjianTask.java │ │ │ │ │ ├── DITask.java │ │ │ │ │ ├── DateParser.java │ │ │ │ │ ├── DgDatasource.java │ │ │ │ │ ├── DgDatasourceType.java │ │ │ │ │ ├── DgDatasourceUtil.java │ │ │ │ │ ├── constant │ │ │ │ │ └── DataXConstants.java │ │ │ │ │ └── enums │ │ │ │ │ ├── CDPTypeEnum.java │ │ │ │ │ ├── DependentTypeEnum.java │ │ │ │ │ ├── RelationTypeEnum.java │ │ │ │ │ ├── ScheduleTypeEnum.java │ │ │ │ │ ├── ScriptTypeEnum.java │ │ │ │ │ └── TaskTypeEnum.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── AppTest.java │ │ ├── migrationx-domain-core │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── migrationx │ │ │ │ └── domain │ │ │ │ └── dataworks │ │ │ │ └── standard │ │ │ │ ├── objects │ │ │ │ ├── Entity.java │ │ │ │ └── Package.java │ │ │ │ ├── repository │ │ │ │ ├── BaseObject.java │ │ │ │ ├── PackageRepository.java │ │ │ │ └── Repository.java │ │ │ │ └── service │ │ │ │ ├── AbstractPackageFileService.java │ │ │ │ ├── Code.java │ │ │ │ ├── PackageFileService.java │ │ │ │ ├── PackageFileServiceFactory.java │ │ │ │ ├── PackageService.java │ │ │ │ ├── PaginDTO.java │ │ │ │ ├── Result.java │ │ │ │ └── ResultList.java │ │ ├── migrationx-domain-datago │ │ │ ├── .gitignore │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── domain │ │ │ │ │ └── dataworks │ │ │ │ │ └── datago │ │ │ │ │ ├── CronUtil.java │ │ │ │ │ ├── DataGoConstants.java │ │ │ │ │ ├── DataGoTask.java │ │ │ │ │ ├── DsfCycle.java │ │ │ │ │ ├── MergeSqlUtil.java │ │ │ │ │ ├── VelocityUtil.java │ │ │ │ │ ├── enums │ │ │ │ │ ├── DataImportMethodEnum.java │ │ │ │ │ ├── DataSyncTypeEnum.java │ │ │ │ │ ├── FrequencyTypeEnum.java │ │ │ │ │ ├── TaskCodeEnum.java │ │ │ │ │ └── TypeofEnum.java │ │ │ │ │ └── model │ │ │ │ │ ├── NewDataX2DI.java │ │ │ │ │ ├── OldDataX2DI.java │ │ │ │ │ └── cdp │ │ │ │ │ ├── BaseModel.java │ │ │ │ │ ├── ReaderModel.java │ │ │ │ │ └── WriterModel.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── AppTest.java │ │ ├── migrationx-domain-dataworks │ │ │ ├── .tmp │ │ │ │ └── test │ │ │ │ │ ├── DataStudio │ │ │ │ │ └── 业务流程 │ │ │ │ │ │ └── test_flow1 │ │ │ │ │ │ └── MaxCompute │ │ │ │ │ │ └── 数据开发 │ │ │ │ │ │ └── test1 │ │ │ │ │ │ ├── test1.schedule.json │ │ │ │ │ │ └── test1.sql │ │ │ │ │ └── SPEC.FORMAT │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── aliyun │ │ │ │ │ │ └── dataworks │ │ │ │ │ │ └── migrationx │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── dataworks │ │ │ │ │ │ ├── constants │ │ │ │ │ │ ├── ChangeType.java │ │ │ │ │ │ └── DataWorksConstants.java │ │ │ │ │ │ ├── objects │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ ├── ApiBaseDto.java │ │ │ │ │ │ │ ├── Asset.java │ │ │ │ │ │ │ ├── CostumedDateFormat.java │ │ │ │ │ │ │ ├── DataWorksPackage.java │ │ │ │ │ │ │ ├── Datasource.java │ │ │ │ │ │ │ ├── DmObject.java │ │ │ │ │ │ │ ├── DmObjectUniqueIdentity.java │ │ │ │ │ │ │ ├── DqcRule.java │ │ │ │ │ │ │ ├── DwDatasource.java │ │ │ │ │ │ │ ├── DwFolder.java │ │ │ │ │ │ │ ├── DwFunction.java │ │ │ │ │ │ │ ├── DwNode.java │ │ │ │ │ │ │ ├── DwNodeIo.java │ │ │ │ │ │ │ ├── DwProject.java │ │ │ │ │ │ │ ├── DwResource.java │ │ │ │ │ │ │ ├── DwTable.java │ │ │ │ │ │ │ ├── DwUserDefinedNode.java │ │ │ │ │ │ │ ├── DwWorkflow.java │ │ │ │ │ │ │ ├── Folder.java │ │ │ │ │ │ │ ├── Function.java │ │ │ │ │ │ │ ├── MappingConfig.java │ │ │ │ │ │ │ ├── Node.java │ │ │ │ │ │ │ ├── NodeContext.java │ │ │ │ │ │ │ ├── NodeIo.java │ │ │ │ │ │ │ ├── PackageInfo.java │ │ │ │ │ │ │ ├── Project.java │ │ │ │ │ │ │ ├── RefWorkflowSolution.java │ │ │ │ │ │ │ ├── Resource.java │ │ │ │ │ │ │ ├── ResourceDto.java │ │ │ │ │ │ │ ├── Solution.java │ │ │ │ │ │ │ ├── Table.java │ │ │ │ │ │ │ ├── UserDefinedNode.java │ │ │ │ │ │ │ ├── Workflow.java │ │ │ │ │ │ │ ├── WorkflowFilter.java │ │ │ │ │ │ │ ├── WorkflowParameter.java │ │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ │ ├── AbstractIdeListRequest.java │ │ │ │ │ │ │ │ ├── AbstractIdeRequest.java │ │ │ │ │ │ │ │ ├── Business.java │ │ │ │ │ │ │ │ ├── BusinessSearchRequest.java │ │ │ │ │ │ │ │ ├── ContentStage.java │ │ │ │ │ │ │ │ ├── CreateFileRequest.java │ │ │ │ │ │ │ │ ├── CreateResourceRequest.java │ │ │ │ │ │ │ │ ├── DeleteNodeByFileIdRequest.java │ │ │ │ │ │ │ │ ├── DeployDetail.java │ │ │ │ │ │ │ │ ├── DeployDetailStatus.java │ │ │ │ │ │ │ │ ├── DeployFileRequest.java │ │ │ │ │ │ │ │ ├── DeployStatusDto.java │ │ │ │ │ │ │ │ ├── Deployment.java │ │ │ │ │ │ │ │ ├── DiFileDsExt.java │ │ │ │ │ │ │ │ ├── ExportTask.java │ │ │ │ │ │ │ │ ├── File.java │ │ │ │ │ │ │ │ ├── FileDetail.java │ │ │ │ │ │ │ │ ├── FileInstanceInfo.java │ │ │ │ │ │ │ │ ├── FileNode.java │ │ │ │ │ │ │ │ ├── FileNodeCfg.java │ │ │ │ │ │ │ │ ├── FileNodeInputOutput.java │ │ │ │ │ │ │ │ ├── FileNodeInputOutputContext.java │ │ │ │ │ │ │ │ ├── FileRelation.java │ │ │ │ │ │ │ │ ├── FileVersion.java │ │ │ │ │ │ │ │ ├── Folder.java │ │ │ │ │ │ │ │ ├── GetDeployStatusRequest.java │ │ │ │ │ │ │ │ ├── GetFileByCloudUuidListRequest.java │ │ │ │ │ │ │ │ ├── GetFileByCloudUuidRequest.java │ │ │ │ │ │ │ │ ├── GetFileByFileIdRequest.java │ │ │ │ │ │ │ │ ├── GetResourceDownloadLinkRequest.java │ │ │ │ │ │ │ │ ├── IdeApiResponse.java │ │ │ │ │ │ │ │ ├── IdeExportRequest.java │ │ │ │ │ │ │ │ ├── IdeImportRequest.java │ │ │ │ │ │ │ │ ├── IdeListData.java │ │ │ │ │ │ │ │ ├── IdeOssNetworkType.java │ │ │ │ │ │ │ │ ├── IdeResponse.java │ │ │ │ │ │ │ │ ├── ListFolderRequest.java │ │ │ │ │ │ │ │ ├── NodeType.java │ │ │ │ │ │ │ │ ├── PackageItemStatus.java │ │ │ │ │ │ │ │ ├── PackageStatus.java │ │ │ │ │ │ │ │ ├── ResourceDownloadInfo.java │ │ │ │ │ │ │ │ ├── Solution.java │ │ │ │ │ │ │ │ ├── SolutionSearchRequest.java │ │ │ │ │ │ │ │ ├── SubmitFileRequest.java │ │ │ │ │ │ │ │ └── UpdateFileRequest.java │ │ │ │ │ │ │ ├── connection │ │ │ │ │ │ │ │ ├── AbstractConnection.java │ │ │ │ │ │ │ │ ├── FtpConnection.java │ │ │ │ │ │ │ │ ├── JdbcConnection.java │ │ │ │ │ │ │ │ └── OceanbaseConnection.java │ │ │ │ │ │ │ ├── nodemarket │ │ │ │ │ │ │ │ ├── AppConfigPack.java │ │ │ │ │ │ │ │ ├── BusinessFolder.java │ │ │ │ │ │ │ │ ├── BusinessFolderConfig.java │ │ │ │ │ │ │ │ ├── BusinessFolderModel.java │ │ │ │ │ │ │ │ ├── BusinessFolderNode.java │ │ │ │ │ │ │ │ ├── NodeTypeDesc.java │ │ │ │ │ │ │ │ ├── NodeTypeDetail.java │ │ │ │ │ │ │ │ └── PluginInfo.java │ │ │ │ │ │ │ ├── v1 │ │ │ │ │ │ │ │ ├── DeployType.java │ │ │ │ │ │ │ │ ├── Extension.java │ │ │ │ │ │ │ │ ├── Flow.java │ │ │ │ │ │ │ │ ├── Function.java │ │ │ │ │ │ │ │ ├── FunctionCode.java │ │ │ │ │ │ │ │ ├── Node.java │ │ │ │ │ │ │ │ ├── Project.java │ │ │ │ │ │ │ │ └── Resource.java │ │ │ │ │ │ │ ├── v2 │ │ │ │ │ │ │ │ ├── ExportProject.java │ │ │ │ │ │ │ │ ├── IdeApplication.java │ │ │ │ │ │ │ │ ├── IdeBizInfo.java │ │ │ │ │ │ │ │ ├── IdeEngineInfo.java │ │ │ │ │ │ │ │ ├── IdeEngineInstance.java │ │ │ │ │ │ │ │ ├── IdeEngineTypeInfo.java │ │ │ │ │ │ │ │ ├── IdeExportVersion.java │ │ │ │ │ │ │ │ ├── IdeFile.java │ │ │ │ │ │ │ │ ├── IdeFileRelation.java │ │ │ │ │ │ │ │ ├── IdeFolder.java │ │ │ │ │ │ │ │ ├── IdeFolderItemType.java │ │ │ │ │ │ │ │ ├── IdeFolderSubType.java │ │ │ │ │ │ │ │ ├── IdeNodeDef.java │ │ │ │ │ │ │ │ ├── IdeNodeExtend.java │ │ │ │ │ │ │ │ ├── IdeNodeInputOutput.java │ │ │ │ │ │ │ │ ├── IdeNodeInputOutputContext.java │ │ │ │ │ │ │ │ ├── IdeRefBizSol.java │ │ │ │ │ │ │ │ ├── IdeSolution.java │ │ │ │ │ │ │ │ ├── IdeUdfContent.java │ │ │ │ │ │ │ │ ├── IdeUserDefinedNode.java │ │ │ │ │ │ │ │ └── IdeZipType.java │ │ │ │ │ │ │ └── v5 │ │ │ │ │ │ │ │ └── DataSnapshot.java │ │ │ │ │ │ ├── serialize │ │ │ │ │ │ │ ├── CodeControlCharEscapeConverter.java │ │ │ │ │ │ │ ├── CodeControlCharUnEscapeConverter.java │ │ │ │ │ │ │ ├── JsonObject2StringConverter.java │ │ │ │ │ │ │ ├── String2JsonObjectConverter.java │ │ │ │ │ │ │ └── StringTypeObjectAdapter.java │ │ │ │ │ │ └── types │ │ │ │ │ │ │ ├── AssetType.java │ │ │ │ │ │ │ ├── CodeModeType.java │ │ │ │ │ │ │ ├── CycleType.java │ │ │ │ │ │ │ ├── DependentType.java │ │ │ │ │ │ │ ├── DmMajorVersion.java │ │ │ │ │ │ │ ├── DmObjectType.java │ │ │ │ │ │ │ ├── FolderType.java │ │ │ │ │ │ │ ├── IoParseType.java │ │ │ │ │ │ │ ├── NodeUseType.java │ │ │ │ │ │ │ ├── RerunMode.java │ │ │ │ │ │ │ ├── ResourceType.java │ │ │ │ │ │ │ ├── WorkflowType.java │ │ │ │ │ │ │ ├── WorkflowVersion.java │ │ │ │ │ │ │ └── tenant │ │ │ │ │ │ │ └── EnvType.java │ │ │ │ │ │ ├── service │ │ │ │ │ │ ├── PackageService.java │ │ │ │ │ │ ├── converter │ │ │ │ │ │ │ └── DataWorksSpecNodeConverter.java │ │ │ │ │ │ ├── impl │ │ │ │ │ │ │ ├── DataWorksDwmaPackageFileService.java │ │ │ │ │ │ │ └── DataWorksSpecPackageFileService.java │ │ │ │ │ │ ├── openapi │ │ │ │ │ │ │ └── DataWorksOpenApiService.java │ │ │ │ │ │ └── spec │ │ │ │ │ │ │ ├── FunctionSpecUpdateAdapter.java │ │ │ │ │ │ │ ├── NodeSpecAdapter.java │ │ │ │ │ │ │ ├── NodeSpecUpdateAdapter.java │ │ │ │ │ │ │ ├── ResourceSpecUpdateAdapter.java │ │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ ├── DwNodeEntity.java │ │ │ │ │ │ │ ├── DwNodeEntityAdapter.java │ │ │ │ │ │ │ ├── FileDetailEntityAdapter.java │ │ │ │ │ │ │ ├── SpecFileResourceEntityAdapter.java │ │ │ │ │ │ │ ├── SpecFunctionEntityAdapter.java │ │ │ │ │ │ │ └── SpecNodeEntityAdapter.java │ │ │ │ │ │ │ └── handler │ │ │ │ │ │ │ ├── BasicNodeSpecHandler.java │ │ │ │ │ │ │ ├── BranchNodeSpecHandler.java │ │ │ │ │ │ │ ├── CdhNodeSpecHandler.java │ │ │ │ │ │ │ ├── CombinedNodeSpecHandler.java │ │ │ │ │ │ │ ├── ComponentSpecHandler.java │ │ │ │ │ │ │ ├── ComponentSqlNodeSpecHandler.java │ │ │ │ │ │ │ ├── DowhileNodeSpecHandler.java │ │ │ │ │ │ │ ├── EmrNodeSpecHandler.java │ │ │ │ │ │ │ ├── ForeachNodeSpecHandler.java │ │ │ │ │ │ │ ├── JoinNodeSpecHandler.java │ │ │ │ │ │ │ ├── ParamHubNodeSpecHandler.java │ │ │ │ │ │ │ └── TemporalNodeSpecHandler.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ ├── CronExpressUtil.java │ │ │ │ │ │ ├── DataStudioCodeUtils.java │ │ │ │ │ │ ├── DefaultNodeTypeUtils.java │ │ │ │ │ │ ├── FolderUtils.java │ │ │ │ │ │ ├── JavaFunctionUtils.java │ │ │ │ │ │ ├── NodeUtils.java │ │ │ │ │ │ ├── ResourceUtils.java │ │ │ │ │ │ ├── SpecFileResourceTypeUtils.java │ │ │ │ │ │ ├── StringUtils.java │ │ │ │ │ │ └── quartz │ │ │ │ │ │ ├── CronExpression.java │ │ │ │ │ │ └── ExtendedQuartzCronExpression.java │ │ │ │ └── resources │ │ │ │ │ └── nodemarket │ │ │ │ │ └── config_pack_cache.json │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── migrationx │ │ │ │ └── domain │ │ │ │ └── dataworks │ │ │ │ ├── service │ │ │ │ ├── DataWorksSpecPackageFileServiceTest.java │ │ │ │ ├── converter │ │ │ │ │ └── DataWorksSpecNodeConverterTest.java │ │ │ │ └── spec │ │ │ │ │ ├── FunctionSpecUpdateAdapterTest.java │ │ │ │ │ ├── NodeSpecAdapterTest.java │ │ │ │ │ ├── NodeSpecUpdateAdapterTest.java │ │ │ │ │ ├── ResourceSpecUpdateAdapterTest.java │ │ │ │ │ └── handler │ │ │ │ │ ├── BasicNodeSpecHandlerTest.java │ │ │ │ │ ├── BranchNodeSpecHandlerTest.java │ │ │ │ │ ├── CdhNodeSpecHandlerTest.java │ │ │ │ │ ├── CombinedNodeSpecHandlerTest.java │ │ │ │ │ ├── ComponentSpecHandlerTest.java │ │ │ │ │ ├── ComponentSqlNodeSpecHandlerTest.java │ │ │ │ │ ├── DowhileNodeSpecHandlerTest.java │ │ │ │ │ ├── EmrNodeSpecHandlerTest.java │ │ │ │ │ ├── ForeachNodeSpecHandlerTest.java │ │ │ │ │ └── ParamHubNodeSpecHandlerTest.java │ │ │ │ └── utils │ │ │ │ └── DataStudioCodeUtilsTest.java │ │ ├── migrationx-domain-dolphinscheduler │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── domain │ │ │ │ │ └── dataworks │ │ │ │ │ └── dolphinscheduler │ │ │ │ │ ├── Constants.java │ │ │ │ │ ├── DolphinSchedulerPackage.java │ │ │ │ │ ├── DolphinSchedulerVersion.java │ │ │ │ │ ├── HttpMethod.java │ │ │ │ │ ├── HttpProperty.java │ │ │ │ │ ├── PackageInfo.java │ │ │ │ │ ├── Project.java │ │ │ │ │ ├── Property.java │ │ │ │ │ ├── service │ │ │ │ │ ├── DolphinSchedulerPackageFileService.java │ │ │ │ │ ├── DolphinSchedulerPackageLoader.java │ │ │ │ │ ├── DolphinSchedulerV1PackageLoader.java │ │ │ │ │ ├── DolphinSchedulerV2PackageLoader.java │ │ │ │ │ └── DolphinSchedulerV3PackageLoader.java │ │ │ │ │ ├── utils │ │ │ │ │ ├── ArgsUtils.java │ │ │ │ │ ├── LocationUtils.java │ │ │ │ │ ├── MapReduceArgsUtils.java │ │ │ │ │ ├── SparkArgsUtils.java │ │ │ │ │ └── StringTypeObjectAdapter.java │ │ │ │ │ ├── v1 │ │ │ │ │ ├── BatchExportProcessDefinitionByIdsRequest.java │ │ │ │ │ ├── DolphinSchedulerApi.java │ │ │ │ │ ├── DolphinSchedulerApiService.java │ │ │ │ │ ├── DolphinSchedulerProjectRequest.java │ │ │ │ │ ├── DolphinSchedulerRequest.java │ │ │ │ │ ├── DolphinSchedulerV1Context.java │ │ │ │ │ ├── DownloadResourceRequest.java │ │ │ │ │ ├── PaginateData.java │ │ │ │ │ ├── PaginateResponse.java │ │ │ │ │ ├── QueryDataSourceListByPaginateRequest.java │ │ │ │ │ ├── QueryProcessDefinitionByPaginateRequest.java │ │ │ │ │ ├── QueryResourceListRequest.java │ │ │ │ │ ├── QueryUdfFuncListByPaginateRequest.java │ │ │ │ │ ├── Response.java │ │ │ │ │ └── v139 │ │ │ │ │ │ ├── Constants.java │ │ │ │ │ │ ├── DependentItem.java │ │ │ │ │ │ ├── DependentTaskModel.java │ │ │ │ │ │ ├── Priority.java │ │ │ │ │ │ ├── ProcessData.java │ │ │ │ │ │ ├── ProcessMeta.java │ │ │ │ │ │ ├── SqoopJobType.java │ │ │ │ │ │ ├── TaskNode.java │ │ │ │ │ │ ├── TaskNodeConnect.java │ │ │ │ │ │ ├── UdfFunc.java │ │ │ │ │ │ ├── UdfType.java │ │ │ │ │ │ ├── datasource │ │ │ │ │ │ ├── BaseDataSource.java │ │ │ │ │ │ ├── ClickHouseDataSource.java │ │ │ │ │ │ ├── Constants.java │ │ │ │ │ │ ├── DB2ServerDataSource.java │ │ │ │ │ │ ├── DataSource.java │ │ │ │ │ │ ├── DataSourceFactory.java │ │ │ │ │ │ ├── HiveDataSource.java │ │ │ │ │ │ ├── MySQLDataSource.java │ │ │ │ │ │ ├── OracleDataSource.java │ │ │ │ │ │ ├── PostgreDataSource.java │ │ │ │ │ │ ├── SQLServerDataSource.java │ │ │ │ │ │ └── SparkDataSource.java │ │ │ │ │ │ ├── entity │ │ │ │ │ │ ├── Property.java │ │ │ │ │ │ └── ResourceInfo.java │ │ │ │ │ │ ├── enums │ │ │ │ │ │ ├── CommandType.java │ │ │ │ │ │ ├── DataType.java │ │ │ │ │ │ ├── DbConnectType.java │ │ │ │ │ │ ├── DbType.java │ │ │ │ │ │ ├── DependResult.java │ │ │ │ │ │ ├── DependentRelation.java │ │ │ │ │ │ ├── Direct.java │ │ │ │ │ │ ├── ExecutionStatus.java │ │ │ │ │ │ ├── Flag.java │ │ │ │ │ │ ├── HttpCheckCondition.java │ │ │ │ │ │ ├── HttpParametersType.java │ │ │ │ │ │ ├── ProgramType.java │ │ │ │ │ │ └── TaskType.java │ │ │ │ │ │ ├── task │ │ │ │ │ │ ├── AbstractParameters.java │ │ │ │ │ │ ├── Direct.java │ │ │ │ │ │ ├── IParameters.java │ │ │ │ │ │ ├── TaskTimeoutParameter.java │ │ │ │ │ │ ├── conditions │ │ │ │ │ │ │ └── ConditionsParameters.java │ │ │ │ │ │ ├── datax │ │ │ │ │ │ │ ├── DataxParameters.java │ │ │ │ │ │ │ └── DataxUtils.java │ │ │ │ │ │ ├── dependent │ │ │ │ │ │ │ └── DependentParameters.java │ │ │ │ │ │ ├── flink │ │ │ │ │ │ │ └── FlinkParameters.java │ │ │ │ │ │ ├── http │ │ │ │ │ │ │ └── HttpParameters.java │ │ │ │ │ │ ├── mr │ │ │ │ │ │ │ └── MapReduceParameters.java │ │ │ │ │ │ ├── procedure │ │ │ │ │ │ │ └── ProcedureParameters.java │ │ │ │ │ │ ├── python │ │ │ │ │ │ │ └── PythonParameters.java │ │ │ │ │ │ ├── shell │ │ │ │ │ │ │ └── ShellParameters.java │ │ │ │ │ │ ├── spark │ │ │ │ │ │ │ └── SparkParameters.java │ │ │ │ │ │ ├── sql │ │ │ │ │ │ │ ├── SqlBinds.java │ │ │ │ │ │ │ ├── SqlParameters.java │ │ │ │ │ │ │ └── SqlType.java │ │ │ │ │ │ ├── sqoop │ │ │ │ │ │ │ ├── SqoopConstants.java │ │ │ │ │ │ │ ├── SqoopParameters.java │ │ │ │ │ │ │ ├── sources │ │ │ │ │ │ │ │ ├── SourceHdfsParameter.java │ │ │ │ │ │ │ │ ├── SourceHiveParameter.java │ │ │ │ │ │ │ │ └── SourceMysqlParameter.java │ │ │ │ │ │ │ └── targets │ │ │ │ │ │ │ │ ├── TargetHdfsParameter.java │ │ │ │ │ │ │ │ ├── TargetHiveParameter.java │ │ │ │ │ │ │ │ └── TargetMysqlParameter.java │ │ │ │ │ │ └── subprocess │ │ │ │ │ │ │ └── SubProcessParameters.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ ├── BusinessTimeUtils.java │ │ │ │ │ │ ├── ParameterUtils.java │ │ │ │ │ │ ├── PlaceholderUtils.java │ │ │ │ │ │ ├── PropertyPlaceholderHelper.java │ │ │ │ │ │ └── TimePlaceholderUtils.java │ │ │ │ │ ├── v2 │ │ │ │ │ ├── Constants.java │ │ │ │ │ ├── DagData.java │ │ │ │ │ ├── DolphinSchedulerApiV2Service.java │ │ │ │ │ ├── DolphinSchedulerV2Context.java │ │ │ │ │ ├── ProcessDefinition.java │ │ │ │ │ ├── ProcessTaskRelation.java │ │ │ │ │ ├── Schedule.java │ │ │ │ │ ├── TaskDefinition.java │ │ │ │ │ ├── entity │ │ │ │ │ │ ├── DataSource.java │ │ │ │ │ │ ├── Project.java │ │ │ │ │ │ ├── ResourceComponent.java │ │ │ │ │ │ ├── UDFUser.java │ │ │ │ │ │ └── UdfFunc.java │ │ │ │ │ ├── enums │ │ │ │ │ │ ├── ConditionType.java │ │ │ │ │ │ ├── DataType.java │ │ │ │ │ │ ├── DbType.java │ │ │ │ │ │ ├── DependResult.java │ │ │ │ │ │ ├── DependentRelation.java │ │ │ │ │ │ ├── Direct.java │ │ │ │ │ │ ├── ExecutionStatus.java │ │ │ │ │ │ ├── FailureStrategy.java │ │ │ │ │ │ ├── Flag.java │ │ │ │ │ │ ├── HttpCheckCondition.java │ │ │ │ │ │ ├── HttpMethod.java │ │ │ │ │ │ ├── HttpParametersType.java │ │ │ │ │ │ ├── Priority.java │ │ │ │ │ │ ├── ProgramType.java │ │ │ │ │ │ ├── ReleaseState.java │ │ │ │ │ │ ├── SqoopJobType.java │ │ │ │ │ │ ├── TaskTimeoutStrategy.java │ │ │ │ │ │ ├── TaskType.java │ │ │ │ │ │ ├── TimeoutFlag.java │ │ │ │ │ │ ├── UdfType.java │ │ │ │ │ │ └── WarningType.java │ │ │ │ │ ├── model │ │ │ │ │ │ ├── DependentItem.java │ │ │ │ │ │ ├── DependentTaskModel.java │ │ │ │ │ │ ├── PreviousTaskNode.java │ │ │ │ │ │ ├── TaskNode.java │ │ │ │ │ │ └── TaskNodeRelation.java │ │ │ │ │ ├── process │ │ │ │ │ │ ├── HttpProperty.java │ │ │ │ │ │ ├── Property.java │ │ │ │ │ │ └── ResourceInfo.java │ │ │ │ │ ├── task │ │ │ │ │ │ ├── AbstractParameters.java │ │ │ │ │ │ ├── IParameters.java │ │ │ │ │ │ ├── TaskTimeoutParameter.java │ │ │ │ │ │ ├── conditions │ │ │ │ │ │ │ ├── ConditionResult.java │ │ │ │ │ │ │ └── ConditionsParameters.java │ │ │ │ │ │ ├── datax │ │ │ │ │ │ │ ├── DataxParameters.java │ │ │ │ │ │ │ └── DataxUtils.java │ │ │ │ │ │ ├── dependent │ │ │ │ │ │ │ └── DependentParameters.java │ │ │ │ │ │ ├── flink │ │ │ │ │ │ │ └── FlinkParameters.java │ │ │ │ │ │ ├── http │ │ │ │ │ │ │ └── HttpParameters.java │ │ │ │ │ │ ├── mr │ │ │ │ │ │ │ ├── MapReduceParameters.java │ │ │ │ │ │ │ └── MapReduceTaskConstants.java │ │ │ │ │ │ ├── procedure │ │ │ │ │ │ │ └── ProcedureParameters.java │ │ │ │ │ │ ├── python │ │ │ │ │ │ │ └── PythonParameters.java │ │ │ │ │ │ ├── shell │ │ │ │ │ │ │ └── ShellParameters.java │ │ │ │ │ │ ├── spark │ │ │ │ │ │ │ └── SparkParameters.java │ │ │ │ │ │ ├── sql │ │ │ │ │ │ │ ├── SqlBinds.java │ │ │ │ │ │ │ ├── SqlParameters.java │ │ │ │ │ │ │ └── SqlType.java │ │ │ │ │ │ ├── sqoop │ │ │ │ │ │ │ ├── SqoopParameters.java │ │ │ │ │ │ │ ├── sources │ │ │ │ │ │ │ │ ├── SourceHdfsParameter.java │ │ │ │ │ │ │ │ ├── SourceHiveParameter.java │ │ │ │ │ │ │ │ └── SourceMysqlParameter.java │ │ │ │ │ │ │ └── targets │ │ │ │ │ │ │ │ ├── TargetHdfsParameter.java │ │ │ │ │ │ │ │ ├── TargetHiveParameter.java │ │ │ │ │ │ │ │ └── TargetMysqlParameter.java │ │ │ │ │ │ ├── subprocess │ │ │ │ │ │ │ └── SubProcessParameters.java │ │ │ │ │ │ ├── switchtask │ │ │ │ │ │ │ ├── SwitchParameters.java │ │ │ │ │ │ │ └── SwitchResultVo.java │ │ │ │ │ │ └── tis │ │ │ │ │ │ │ └── PigeonCommonParameters.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ParameterUtils.java │ │ │ │ │ │ ├── PlaceholderUtils.java │ │ │ │ │ │ ├── PropertyPlaceholderHelper.java │ │ │ │ │ │ ├── TaskConstants.java │ │ │ │ │ │ └── TimePlaceholderUtils.java │ │ │ │ │ └── v3 │ │ │ │ │ ├── DagData.java │ │ │ │ │ ├── DolphinSchedulerV3Context.java │ │ │ │ │ ├── DolphinschedulerApiV3Service.java │ │ │ │ │ ├── ProcessDefinition.java │ │ │ │ │ ├── ProcessTaskRelation.java │ │ │ │ │ ├── Schedule.java │ │ │ │ │ ├── TaskDefinition.java │ │ │ │ │ ├── entity │ │ │ │ │ ├── DataSource.java │ │ │ │ │ ├── Project.java │ │ │ │ │ ├── ResourceComponent.java │ │ │ │ │ ├── UDFUser.java │ │ │ │ │ └── UdfFunc.java │ │ │ │ │ ├── enums │ │ │ │ │ ├── CommandType.java │ │ │ │ │ ├── DataType.java │ │ │ │ │ ├── DbConnectType.java │ │ │ │ │ ├── DbType.java │ │ │ │ │ ├── DependResult.java │ │ │ │ │ ├── DependentRelation.java │ │ │ │ │ ├── Direct.java │ │ │ │ │ ├── Flag.java │ │ │ │ │ ├── Priority.java │ │ │ │ │ ├── ResourceType.java │ │ │ │ │ ├── SqlType.java │ │ │ │ │ ├── TaskExecutionStatus.java │ │ │ │ │ ├── TaskRunStatus.java │ │ │ │ │ ├── TaskTimeoutStrategy.java │ │ │ │ │ └── UdfType.java │ │ │ │ │ ├── model │ │ │ │ │ ├── DependentItem.java │ │ │ │ │ ├── DependentTaskModel.java │ │ │ │ │ ├── ProgramType.java │ │ │ │ │ ├── Property.java │ │ │ │ │ ├── ResourceInfo.java │ │ │ │ │ ├── SparkConstants.java │ │ │ │ │ └── SwitchResultVo.java │ │ │ │ │ ├── task │ │ │ │ │ ├── TaskConstants.java │ │ │ │ │ ├── conditions │ │ │ │ │ │ └── ConditionsParameters.java │ │ │ │ │ ├── dataquality │ │ │ │ │ │ └── DataQualityParameters.java │ │ │ │ │ ├── datax │ │ │ │ │ │ ├── DataxParameters.java │ │ │ │ │ │ └── DataxUtils.java │ │ │ │ │ ├── dependent │ │ │ │ │ │ └── DependentParameters.java │ │ │ │ │ ├── dlc │ │ │ │ │ │ └── DLCParameters.java │ │ │ │ │ ├── flink │ │ │ │ │ │ ├── FlinkConstants.java │ │ │ │ │ │ ├── FlinkDeployMode.java │ │ │ │ │ │ └── FlinkParameters.java │ │ │ │ │ ├── hivecli │ │ │ │ │ │ ├── HiveCliConstants.java │ │ │ │ │ │ └── HiveCliParameters.java │ │ │ │ │ ├── http │ │ │ │ │ │ ├── HttpCheckCondition.java │ │ │ │ │ │ ├── HttpMethod.java │ │ │ │ │ │ ├── HttpParameters.java │ │ │ │ │ │ ├── HttpParametersType.java │ │ │ │ │ │ └── HttpProperty.java │ │ │ │ │ ├── mr │ │ │ │ │ │ └── MapReduceParameters.java │ │ │ │ │ ├── parameters │ │ │ │ │ │ ├── AbstractParameters.java │ │ │ │ │ │ ├── IParameters.java │ │ │ │ │ │ └── resource │ │ │ │ │ │ │ ├── AbstractResourceParameters.java │ │ │ │ │ │ │ ├── DataSourceParameters.java │ │ │ │ │ │ │ ├── ResourceParametersHelper.java │ │ │ │ │ │ │ └── UdfFuncParameters.java │ │ │ │ │ ├── procedure │ │ │ │ │ │ └── ProcedureParameters.java │ │ │ │ │ ├── python │ │ │ │ │ │ └── PythonParameters.java │ │ │ │ │ ├── shell │ │ │ │ │ │ └── ShellParameters.java │ │ │ │ │ ├── spark │ │ │ │ │ │ ├── ArgsUtils.java │ │ │ │ │ │ ├── SparkConstants.java │ │ │ │ │ │ └── SparkParameters.java │ │ │ │ │ ├── sql │ │ │ │ │ │ └── SqlParameters.java │ │ │ │ │ ├── sqoop │ │ │ │ │ │ ├── SqoopJobType.java │ │ │ │ │ │ ├── SqoopParameters.java │ │ │ │ │ │ ├── sources │ │ │ │ │ │ │ ├── SourceHdfsParameter.java │ │ │ │ │ │ │ ├── SourceHiveParameter.java │ │ │ │ │ │ │ └── SourceMysqlParameter.java │ │ │ │ │ │ └── targets │ │ │ │ │ │ │ ├── TargetHdfsParameter.java │ │ │ │ │ │ │ ├── TargetHiveParameter.java │ │ │ │ │ │ │ └── TargetMysqlParameter.java │ │ │ │ │ ├── subprocess │ │ │ │ │ │ └── SubProcessParameters.java │ │ │ │ │ └── switchs │ │ │ │ │ │ └── SwitchParameters.java │ │ │ │ │ ├── utils │ │ │ │ │ ├── ParameterUtils.java │ │ │ │ │ ├── PlaceholderUtils.java │ │ │ │ │ └── PropertyPlaceholderHelper.java │ │ │ │ │ ├── v301 │ │ │ │ │ ├── ConditionType.java │ │ │ │ │ ├── Constants.java │ │ │ │ │ ├── DagData.java │ │ │ │ │ ├── ProcessDefinition.java │ │ │ │ │ ├── ProcessExecutionTypeEnum.java │ │ │ │ │ ├── ProcessTaskRelation.java │ │ │ │ │ ├── ReleaseState.java │ │ │ │ │ ├── TaskDefinition.java │ │ │ │ │ ├── TaskTimeoutStrategy.java │ │ │ │ │ └── TimeoutFlag.java │ │ │ │ │ └── v320 │ │ │ │ │ ├── DagDataSchedule.java │ │ │ │ │ ├── Location.java │ │ │ │ │ ├── TaskExecuteType.java │ │ │ │ │ └── task │ │ │ │ │ ├── Dependence.java │ │ │ │ │ ├── condition │ │ │ │ │ ├── ConditionResult.java │ │ │ │ │ └── ConditionsParameters.java │ │ │ │ │ └── dependent │ │ │ │ │ └── DependentParameters.java │ │ │ │ └── test │ │ │ │ ├── http │ │ │ │ └── v3 │ │ │ │ │ └── process-definitions.http │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── migrationx │ │ │ │ └── dolphinscheduler │ │ │ │ └── v1 │ │ │ │ └── DolphinSchedulerApiServiceTest.java │ │ ├── migrationx-domain-oozie │ │ │ ├── .gitignore │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── migrationx │ │ │ │ └── domain │ │ │ │ └── dataworks │ │ │ │ └── oozie │ │ │ │ ├── FakeDagELFunctions.java │ │ │ │ ├── FakeElEvaluatorContext.java │ │ │ │ ├── OozieActionType.java │ │ │ │ ├── OozieConstants.java │ │ │ │ └── OozieNodeType.java │ │ └── pom.xml │ ├── migrationx-reader │ │ ├── .gitignore │ │ ├── package.xml │ │ ├── pom.xml │ │ ├── readme.md │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── reader │ │ │ │ │ ├── adf │ │ │ │ │ ├── AdfCommandApp.java │ │ │ │ │ └── AdfReader.java │ │ │ │ │ ├── airflow │ │ │ │ │ └── AirflowCommandApp.java │ │ │ │ │ ├── aliyunemr │ │ │ │ │ └── AliyunEmrCommandApp.java │ │ │ │ │ ├── dataworks │ │ │ │ │ └── DataWorksFlowSpecReader.java │ │ │ │ │ └── dolphinscheduler │ │ │ │ │ ├── DolphinSchedulerCommandApp.java │ │ │ │ │ ├── DolphinSchedulerReader.java │ │ │ │ │ └── DolphinSchedulerSingleJsonReader.java │ │ │ └── python │ │ │ │ ├── .gitignore │ │ │ │ ├── __init__.py │ │ │ │ ├── build.sh │ │ │ │ ├── common.sh │ │ │ │ ├── setup_env.sh │ │ │ │ └── src │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── airflow_dag_parser │ │ │ │ ├── __init__.py │ │ │ │ ├── common │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── datax.py │ │ │ │ │ └── supports.py │ │ │ │ ├── connections.py │ │ │ │ ├── converter │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── converters.py │ │ │ │ │ ├── dag_converter.py │ │ │ │ │ └── task_converter.py │ │ │ │ ├── dag_parser.py │ │ │ │ ├── models │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── dw_base.py │ │ │ │ │ ├── dw_node.py │ │ │ │ │ ├── dw_node_io.py │ │ │ │ │ └── dw_workflow.py │ │ │ │ └── patch │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_hook_patch.py │ │ │ │ │ ├── mysql_hook_patch.py │ │ │ │ │ ├── presto_hook_patch.py │ │ │ │ │ ├── presto_to_mysql_operator_patch.py │ │ │ │ │ ├── spark_submit_hook_patch.py │ │ │ │ │ ├── sqoop_hook_patch.py │ │ │ │ │ └── task_instance_patch.py │ │ │ │ ├── parser │ │ │ │ └── test │ │ │ │ ├── __init__.py │ │ │ │ └── test_dag_folder │ │ │ │ ├── __init__.py │ │ │ │ ├── configs │ │ │ │ ├── __init__.py │ │ │ │ └── config.py │ │ │ │ ├── connections.csv │ │ │ │ ├── dag.py │ │ │ │ ├── example_bash_operator.py │ │ │ │ ├── example_branch_operator.py │ │ │ │ ├── example_branch_python_dop_operator_3.py │ │ │ │ ├── example_docker_operator.py │ │ │ │ ├── example_http_operator.py │ │ │ │ ├── example_latest_only.py │ │ │ │ ├── example_latest_only_with_trigger.py │ │ │ │ ├── example_passing_params_via_test_command.py │ │ │ │ ├── example_python_operator.py │ │ │ │ ├── example_short_circuit_operator.py │ │ │ │ ├── example_skip_dag.py │ │ │ │ ├── example_subdag_operator.py │ │ │ │ ├── example_trigger_controller_dag.py │ │ │ │ ├── example_trigger_target_dag.py │ │ │ │ ├── example_xcom.py │ │ │ │ ├── hive_demo.py │ │ │ │ ├── hive_presto_demo.py │ │ │ │ ├── module │ │ │ │ ├── __init__.py │ │ │ │ ├── db_mysql_manager.py │ │ │ │ └── default_args_util.py │ │ │ │ ├── test_spark_submit.py │ │ │ │ └── tut.py │ │ │ └── test │ │ │ └── java │ │ │ ├── AdfCommandAppReaderTest.java │ │ │ ├── AdfReaderInnerTest.java │ │ │ └── com │ │ │ └── aliyun │ │ │ └── dataworks │ │ │ └── migrationx │ │ │ └── reader │ │ │ └── dolphinscheduler │ │ │ └── DolphinSchedulerReaderTest.java │ ├── migrationx-transformer │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── conf │ │ │ │ ├── adf-mc-transformer-config.json │ │ │ │ ├── dataworks-transformer-config-emr-sample.json │ │ │ │ ├── dataworks-transformer-config-hologres-sample.json │ │ │ │ ├── dataworks-transformer-config-maxcompute-sample.json │ │ │ │ ├── dataworks-transformer-config.json │ │ │ │ ├── dolphinschedulerV3-dataworks-transformer-config.json │ │ │ │ ├── flowspec-airflowV2-transformer-config.json │ │ │ │ └── flowspec-dolphinschedulerV3-transformer-config.json │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── aliyun │ │ │ │ │ └── dataworks │ │ │ │ │ └── migrationx │ │ │ │ │ └── transformer │ │ │ │ │ ├── core │ │ │ │ │ ├── BaseTransformerApp.java │ │ │ │ │ ├── RawNodeType.java │ │ │ │ │ ├── annotation │ │ │ │ │ │ └── DependsOn.java │ │ │ │ │ ├── checkpoint │ │ │ │ │ │ ├── CheckPoint.java │ │ │ │ │ │ ├── StoreWriter.java │ │ │ │ │ │ ├── file │ │ │ │ │ │ │ ├── BufferedFileWriter.java │ │ │ │ │ │ │ └── LocalFileCheckPoint.java │ │ │ │ │ │ └── memory │ │ │ │ │ │ │ ├── CacheWriter.java │ │ │ │ │ │ │ └── InMemoryCheckPoint.java │ │ │ │ │ ├── collector │ │ │ │ │ │ └── WorkflowCollector.java │ │ │ │ │ ├── common │ │ │ │ │ │ ├── Constants.java │ │ │ │ │ │ ├── Context.java │ │ │ │ │ │ ├── DateParser.java │ │ │ │ │ │ ├── StateCallbackListener.java │ │ │ │ │ │ └── ValidationUtils.java │ │ │ │ │ ├── controller │ │ │ │ │ │ ├── Task.java │ │ │ │ │ │ ├── TaskDag.java │ │ │ │ │ │ ├── TaskStage.java │ │ │ │ │ │ └── TaskStatus.java │ │ │ │ │ ├── loader │ │ │ │ │ │ ├── ConfigPropertiesLoader.java │ │ │ │ │ │ ├── ProjectAssetLoader.java │ │ │ │ │ │ ├── ProjectResourceLoader.java │ │ │ │ │ │ └── ProjectWorkflowLoader.java │ │ │ │ │ ├── report │ │ │ │ │ │ ├── ReportItem.java │ │ │ │ │ │ ├── ReportItemType.java │ │ │ │ │ │ ├── ReportRiskLevel.java │ │ │ │ │ │ └── Reportable.java │ │ │ │ │ ├── spark │ │ │ │ │ │ └── command │ │ │ │ │ │ │ ├── AbstractAppHandle.java │ │ │ │ │ │ │ ├── AbstractCommandBuilder.java │ │ │ │ │ │ │ ├── AbstractLauncher.java │ │ │ │ │ │ │ ├── ChildProcAppHandle.java │ │ │ │ │ │ │ ├── CommandBuilderUtils.java │ │ │ │ │ │ │ ├── FilteredObjectInputStream.java │ │ │ │ │ │ │ ├── InProcessAppHandle.java │ │ │ │ │ │ │ ├── InProcessLauncher.java │ │ │ │ │ │ │ ├── LauncherConnection.java │ │ │ │ │ │ │ ├── LauncherProtocol.java │ │ │ │ │ │ │ ├── LauncherServer.java │ │ │ │ │ │ │ ├── NamedThreadFactory.java │ │ │ │ │ │ │ ├── OutputRedirector.java │ │ │ │ │ │ │ ├── SparkAppHandle.java │ │ │ │ │ │ │ ├── SparkClassCommandBuilder.java │ │ │ │ │ │ │ ├── SparkLauncher.java │ │ │ │ │ │ │ ├── SparkSubmitCommandBuilder.java │ │ │ │ │ │ │ └── SparkSubmitOptionParser.java │ │ │ │ │ ├── sqoop │ │ │ │ │ │ ├── AccumuloConstants.java │ │ │ │ │ │ ├── AntCommandLine.java │ │ │ │ │ │ ├── BaseSqoopTool.java │ │ │ │ │ │ ├── ConfigurationConstants.java │ │ │ │ │ │ ├── ConfigurationHelper.java │ │ │ │ │ │ ├── DBConfiguration.java │ │ │ │ │ │ ├── DICode.java │ │ │ │ │ │ ├── DIConfigTemplate.java │ │ │ │ │ │ ├── DIJsonProcessor.java │ │ │ │ │ │ ├── DataSyncException.java │ │ │ │ │ │ ├── DelimiterSet.java │ │ │ │ │ │ ├── ExceptionTracker.java │ │ │ │ │ │ ├── ExportTool.java │ │ │ │ │ │ ├── ImportTool.java │ │ │ │ │ │ ├── InstanceContext.java │ │ │ │ │ │ ├── InvalidOptionsException.java │ │ │ │ │ │ ├── LoggingUtils.java │ │ │ │ │ │ ├── MainframeConfiguration.java │ │ │ │ │ │ ├── OptionsFileUtil.java │ │ │ │ │ │ ├── RandomHash.java │ │ │ │ │ │ ├── RelatedOptions.java │ │ │ │ │ │ ├── Sqoop.java │ │ │ │ │ │ ├── SqoopJsonUtil.java │ │ │ │ │ │ ├── SqoopOptions.java │ │ │ │ │ │ ├── SqoopParser.java │ │ │ │ │ │ ├── SqoopTool.java │ │ │ │ │ │ ├── StoredAsProperty.java │ │ │ │ │ │ └── ToolOptions.java │ │ │ │ │ ├── transformer │ │ │ │ │ │ ├── AbstractPackageTransformer.java │ │ │ │ │ │ └── Transformer.java │ │ │ │ │ ├── translator │ │ │ │ │ │ ├── AbstractCommandSqlTranslator.java │ │ │ │ │ │ ├── BeeLineCommandSqlTranslator.java │ │ │ │ │ │ ├── HiveCommandSqlTranslator.java │ │ │ │ │ │ ├── HiveEofDelimiterCommandSqlTranslator.java │ │ │ │ │ │ ├── ImpalaCommandSqlTranslator.java │ │ │ │ │ │ ├── NodePropertyTranslator.java │ │ │ │ │ │ ├── Perl2ShellTranslator.java │ │ │ │ │ │ ├── PrestoCommandSqlTranslator.java │ │ │ │ │ │ ├── SparkSubmitTranslator.java │ │ │ │ │ │ ├── SqoopToDITranslator.java │ │ │ │ │ │ └── TranslateUtils.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── BashUtils.java │ │ │ │ │ │ ├── CodeGenerateUtils.java │ │ │ │ │ │ ├── DiCodeUtils.java │ │ │ │ │ │ ├── EmrCodeUtils.java │ │ │ │ │ │ ├── NamingUtils.java │ │ │ │ │ │ ├── PaginateUtils.java │ │ │ │ │ │ ├── SpecFileResourceTypeUtils.java │ │ │ │ │ │ └── ZipUtils.java │ │ │ │ │ ├── dataworks │ │ │ │ │ ├── apps │ │ │ │ │ │ ├── DataWorksAdfTransformerApp.java │ │ │ │ │ │ ├── DataWorksAirflowV2TransformerApp.java │ │ │ │ │ │ └── DataWorksDolphinschedulerTransformerApp.java │ │ │ │ │ ├── converter │ │ │ │ │ │ ├── AbstractBaseConverter.java │ │ │ │ │ │ ├── V1MigrationPackageConverter.java │ │ │ │ │ │ ├── WorkflowConverter.java │ │ │ │ │ │ ├── adf │ │ │ │ │ │ │ └── AdfConverter.java │ │ │ │ │ │ ├── airflow │ │ │ │ │ │ │ └── AirflowDagConverter.java │ │ │ │ │ │ ├── azkaban │ │ │ │ │ │ │ └── AzkabanConverter.java │ │ │ │ │ │ ├── caiyunjian │ │ │ │ │ │ │ └── CaiyunjianConverter.java │ │ │ │ │ │ ├── datago │ │ │ │ │ │ │ └── DataGOConverter.java │ │ │ │ │ │ ├── dolphinscheduler │ │ │ │ │ │ │ ├── AbstractDolphinSchedulerConverter.java │ │ │ │ │ │ │ ├── DolphinSchedulerConverterContext.java │ │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ │ ├── Connection.java │ │ │ │ │ │ │ │ ├── Parameter.java │ │ │ │ │ │ │ │ └── Step.java │ │ │ │ │ │ │ ├── filters │ │ │ │ │ │ │ │ └── DolphinSchedulerConverterFilter.java │ │ │ │ │ │ │ ├── utils │ │ │ │ │ │ │ │ ├── ConverterTypeUtils.java │ │ │ │ │ │ │ │ └── DolphinFilter.java │ │ │ │ │ │ │ ├── v1 │ │ │ │ │ │ │ │ ├── nodes │ │ │ │ │ │ │ │ │ ├── DolphinSchedulerV1Converter.java │ │ │ │ │ │ │ │ │ ├── TaskConverterFactory.java │ │ │ │ │ │ │ │ │ ├── V1ProcessDefinitionConverter.java │ │ │ │ │ │ │ │ │ └── parameters │ │ │ │ │ │ │ │ │ │ ├── AbstractParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── ConditionsParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── DataxParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── DefaultParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── DependentParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── MrParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── ProcessDefinitionConverter.java │ │ │ │ │ │ │ │ │ │ ├── PythonParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── ShellParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── SparkParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── SqlParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── SqoopParameterConverter.java │ │ │ │ │ │ │ │ │ │ └── SubProcessParameterConverter.java │ │ │ │ │ │ │ │ └── workflow │ │ │ │ │ │ │ │ │ ├── DolphinSchedulerV1WorkflowConverter.java │ │ │ │ │ │ │ │ │ ├── ParamListConverter.java │ │ │ │ │ │ │ │ │ ├── SpecFlowDependConverter.java │ │ │ │ │ │ │ │ │ ├── TaskConverterFactoryV1.java │ │ │ │ │ │ │ │ │ ├── TriggerConverter.java │ │ │ │ │ │ │ │ │ ├── V1ProcessDefinitionConverter.java │ │ │ │ │ │ │ │ │ └── parameters │ │ │ │ │ │ │ │ │ ├── AbstractParameterConverter.java │ │ │ │ │ │ │ │ │ ├── CustomParameterConverter.java │ │ │ │ │ │ │ │ │ ├── DataxParameterConverter.java │ │ │ │ │ │ │ │ │ ├── DependentParameterConverter.java │ │ │ │ │ │ │ │ │ ├── MrParameterConverter.java │ │ │ │ │ │ │ │ │ ├── ProcedureParameterConverter.java │ │ │ │ │ │ │ │ │ ├── PythonParameterConverter.java │ │ │ │ │ │ │ │ │ ├── ShellParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SparkParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SqlParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SqoopParameterConverter.java │ │ │ │ │ │ │ │ │ └── SubProcessParameterConverter.java │ │ │ │ │ │ │ ├── v2 │ │ │ │ │ │ │ │ ├── nodes │ │ │ │ │ │ │ │ │ ├── DolphinSchedulerV2Converter.java │ │ │ │ │ │ │ │ │ ├── TaskConverterFactoryV2.java │ │ │ │ │ │ │ │ │ ├── V2ProcessDefinitionConverter.java │ │ │ │ │ │ │ │ │ └── parameters │ │ │ │ │ │ │ │ │ │ ├── AbstractParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── ConditionsParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── CustomParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── DataxParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── DependentParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── HttpParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── MrParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── ProcedureParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── PythonParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── ShellParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── SparkParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── SqlParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── SqoopParameterConverter.java │ │ │ │ │ │ │ │ │ │ ├── SubProcessParameterConverter.java │ │ │ │ │ │ │ │ │ │ └── SwitchParameterConverter.java │ │ │ │ │ │ │ │ └── workflow │ │ │ │ │ │ │ │ │ ├── DolphinSchedulerV2WorkflowConverter.java │ │ │ │ │ │ │ │ │ ├── ParamListConverter.java │ │ │ │ │ │ │ │ │ ├── SpecFlowDependConverter.java │ │ │ │ │ │ │ │ │ ├── TaskConverterFactoryV2.java │ │ │ │ │ │ │ │ │ ├── TriggerConverter.java │ │ │ │ │ │ │ │ │ ├── V2ProcessDefinitionConverter.java │ │ │ │ │ │ │ │ │ └── parameters │ │ │ │ │ │ │ │ │ ├── AbstractParameterConverter.java │ │ │ │ │ │ │ │ │ ├── CustomParameterConverter.java │ │ │ │ │ │ │ │ │ ├── DataxParameterConverter.java │ │ │ │ │ │ │ │ │ ├── DependentParameterConverter.java │ │ │ │ │ │ │ │ │ ├── MrParameterConverter.java │ │ │ │ │ │ │ │ │ ├── ProcedureParameterConverter.java │ │ │ │ │ │ │ │ │ ├── PythonParameterConverter.java │ │ │ │ │ │ │ │ │ ├── ShellParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SparkParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SqlParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SqoopParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SubProcessParameterConverter.java │ │ │ │ │ │ │ │ │ └── SwitchParameterConverter.java │ │ │ │ │ │ │ └── v3 │ │ │ │ │ │ │ │ ├── nodes │ │ │ │ │ │ │ │ ├── DolphinSchedulerV3Converter.java │ │ │ │ │ │ │ │ ├── TaskConverterFactoryV3.java │ │ │ │ │ │ │ │ ├── V3ProcessDefinitionConverter.java │ │ │ │ │ │ │ │ └── parameters │ │ │ │ │ │ │ │ │ ├── AbstractParameterConverter.java │ │ │ │ │ │ │ │ │ ├── ConditionsParameterConverter.java │ │ │ │ │ │ │ │ │ ├── CustomParameterConverter.java │ │ │ │ │ │ │ │ │ ├── DLCParameterConverter.java │ │ │ │ │ │ │ │ │ ├── DataxParameterConverter.java │ │ │ │ │ │ │ │ │ ├── DependentParameterConverter.java │ │ │ │ │ │ │ │ │ ├── FlinkParameterConverter.java │ │ │ │ │ │ │ │ │ ├── HiveCliParameterConverter.java │ │ │ │ │ │ │ │ │ ├── HttpParameterConverter.java │ │ │ │ │ │ │ │ │ ├── MrParameterConverter.java │ │ │ │ │ │ │ │ │ ├── ProcedureParameterConverter.java │ │ │ │ │ │ │ │ │ ├── PythonParameterConverter.java │ │ │ │ │ │ │ │ │ ├── ShellParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SparkParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SqlParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SqoopParameterConverter.java │ │ │ │ │ │ │ │ │ ├── SubProcessParameterConverter.java │ │ │ │ │ │ │ │ │ └── SwitchParameterConverter.java │ │ │ │ │ │ │ │ └── workflow │ │ │ │ │ │ │ │ ├── DolphinSchedulerV3WorkflowConverter.java │ │ │ │ │ │ │ │ ├── ParamListConverter.java │ │ │ │ │ │ │ │ ├── SpecFlowDependConverter.java │ │ │ │ │ │ │ │ ├── TaskConverterFactoryV3.java │ │ │ │ │ │ │ │ ├── TriggerConverter.java │ │ │ │ │ │ │ │ ├── V3ProcessDefinitionConverter.java │ │ │ │ │ │ │ │ └── parameters │ │ │ │ │ │ │ │ ├── AbstractParameterConverter.java │ │ │ │ │ │ │ │ ├── CustomParameterConverter.java │ │ │ │ │ │ │ │ ├── DataxParameterConverter.java │ │ │ │ │ │ │ │ ├── DependentParameterConverter.java │ │ │ │ │ │ │ │ ├── FlinkParameterConverter.java │ │ │ │ │ │ │ │ ├── HiveCliParameterConverter.java │ │ │ │ │ │ │ │ ├── MrParameterConverter.java │ │ │ │ │ │ │ │ ├── ProcedureParameterConverter.java │ │ │ │ │ │ │ │ ├── PythonParameterConverter.java │ │ │ │ │ │ │ │ ├── ShellParameterConverter.java │ │ │ │ │ │ │ │ ├── SparkParameterConverter.java │ │ │ │ │ │ │ │ ├── SqlParameterConverter.java │ │ │ │ │ │ │ │ ├── SqoopParameterConverter.java │ │ │ │ │ │ │ │ ├── SubProcessParameterConverter.java │ │ │ │ │ │ │ │ └── SwitchParameterConverter.java │ │ │ │ │ │ ├── emr │ │ │ │ │ │ │ └── AliyunEmrWorkflowConverter.java │ │ │ │ │ │ ├── ide │ │ │ │ │ │ │ └── IdeExportProjectConverter.java │ │ │ │ │ │ └── oozie │ │ │ │ │ │ │ └── OozieWorkflowConverter.java │ │ │ │ │ └── transformer │ │ │ │ │ │ ├── DataWorksAdfTransformer.java │ │ │ │ │ │ ├── DataWorksDolphinSchedulerTransformer.java │ │ │ │ │ │ ├── DataWorksPackageFormat.java │ │ │ │ │ │ ├── DataWorksTransformerConfig.java │ │ │ │ │ │ └── WorkflowDolphinSchedulerTransformer.java │ │ │ │ │ ├── dolphinscheduler │ │ │ │ │ ├── app │ │ │ │ │ │ └── FlowSpecDolphinSchedulerV3TransformerApp.java │ │ │ │ │ ├── converter │ │ │ │ │ │ ├── DolphinSchedulerConverter.java │ │ │ │ │ │ └── flowspec │ │ │ │ │ │ │ ├── FlowSpecDolphinSchedulerV3Converter.java │ │ │ │ │ │ │ ├── SpecWorkflowDolphinSchedulerV3Converter.java │ │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ ├── AbstractCommonConverter.java │ │ │ │ │ │ │ ├── AbstractNodeConverter.java │ │ │ │ │ │ │ ├── NodeConverterFactory.java │ │ │ │ │ │ │ ├── ProcessDefinitionConverter.java │ │ │ │ │ │ │ ├── ProcessTaskRelationListConverter.java │ │ │ │ │ │ │ ├── ScheduleConverter.java │ │ │ │ │ │ │ ├── TaskDefinitionListConverter.java │ │ │ │ │ │ │ └── context │ │ │ │ │ │ │ │ └── FlowSpecConverterContext.java │ │ │ │ │ │ │ ├── python │ │ │ │ │ │ │ └── PythonNodeConverter.java │ │ │ │ │ │ │ ├── shell │ │ │ │ │ │ │ └── ShellNodeConverter.java │ │ │ │ │ │ │ ├── spark │ │ │ │ │ │ │ ├── SparkNodeConverter.java │ │ │ │ │ │ │ └── SparkSubmitConfigParser.java │ │ │ │ │ │ │ └── sql │ │ │ │ │ │ │ └── SqlNodeConverter.java │ │ │ │ │ └── transformer │ │ │ │ │ │ └── flowspec │ │ │ │ │ │ ├── FlowSpecDolphinSchedulerV3Transformer.java │ │ │ │ │ │ └── FlowSpecDolphinSchedulerV3TransformerConfig.java │ │ │ │ │ └── flowspec │ │ │ │ │ ├── app │ │ │ │ │ └── DolphinSchedulerV3FlowSpecTransformerApp.java │ │ │ │ │ ├── converter │ │ │ │ │ ├── FlowSpecConverter.java │ │ │ │ │ └── dolphinscheduler │ │ │ │ │ │ ├── DolphinSchedulerV3FlowSpecConverter.java │ │ │ │ │ │ ├── common │ │ │ │ │ │ ├── AbstractCommonConverter.java │ │ │ │ │ │ ├── AbstractParameterConverter.java │ │ │ │ │ │ ├── ParamListConverter.java │ │ │ │ │ │ ├── ParameterConverterFactory.java │ │ │ │ │ │ ├── SpecFlowDependConverter.java │ │ │ │ │ │ ├── SpecNodeListConverter.java │ │ │ │ │ │ ├── TriggerConverter.java │ │ │ │ │ │ ├── WorkflowConverter.java │ │ │ │ │ │ └── context │ │ │ │ │ │ │ └── DolphinSchedulerV3ConverterContext.java │ │ │ │ │ │ ├── logic │ │ │ │ │ │ ├── condition │ │ │ │ │ │ │ └── ConditionsParameterConverter.java │ │ │ │ │ │ ├── dependent │ │ │ │ │ │ │ └── DependentParameterConverter.java │ │ │ │ │ │ └── subprocess │ │ │ │ │ │ │ ├── BaseSubProcessParameterConverter.java │ │ │ │ │ │ │ ├── SubProcessParameterConverter.java │ │ │ │ │ │ │ └── SubProcessParameterWithoutContainerConverter.java │ │ │ │ │ │ ├── mr │ │ │ │ │ │ └── MapReduceParameterConverter.java │ │ │ │ │ │ ├── python │ │ │ │ │ │ ├── PythonParameterConverter.java │ │ │ │ │ │ └── PythonVersion.java │ │ │ │ │ │ ├── shell │ │ │ │ │ │ └── ShellParameterConverter.java │ │ │ │ │ │ ├── spark │ │ │ │ │ │ └── SparkParameterConverter.java │ │ │ │ │ │ ├── sql │ │ │ │ │ │ └── SqlParameterConverter.java │ │ │ │ │ │ └── sqoop │ │ │ │ │ │ └── SqoopParameterConverter.java │ │ │ │ │ ├── model │ │ │ │ │ └── SpecRefEntityWrapper.java │ │ │ │ │ └── transformer │ │ │ │ │ ├── AbstractTransformer.java │ │ │ │ │ └── dolphinscheduler │ │ │ │ │ ├── DolphinSchedulerV3FlowSpecTransformer.java │ │ │ │ │ └── DolphinSchedulerV3FlowSpecTransformerConfig.java │ │ │ └── python │ │ │ │ ├── post_handler_example.py │ │ │ │ └── python2sql │ │ │ │ └── py2sql.py │ │ │ └── test │ │ │ ├── java │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ ├── domain │ │ │ │ └── utils │ │ │ │ │ └── CronExpressUtilTest.java │ │ │ │ └── migrationx │ │ │ │ └── transformer │ │ │ │ ├── adf │ │ │ │ ├── AdfConverterTest.java │ │ │ │ └── AdfTransformerTest.java │ │ │ │ ├── dataworks │ │ │ │ ├── apps │ │ │ │ │ ├── DataWorksAirflowV2TransformerAppTest.java │ │ │ │ │ └── DataWorksDolphinschedulerTransformerAppTest.java │ │ │ │ └── converter │ │ │ │ │ └── dolphinscheduler │ │ │ │ │ ├── DolphinSchedulerConverterContextTest.java │ │ │ │ │ └── v3 │ │ │ │ │ ├── DLCParameterConverterTest.java │ │ │ │ │ ├── nodes │ │ │ │ │ ├── TaskConverterFactoryV3Test.java │ │ │ │ │ └── V3ProcessDefinitionConverterTest.java │ │ │ │ │ └── workflow │ │ │ │ │ ├── DolphinSchedulerV3WorkflowConverterTest.java │ │ │ │ │ ├── ParamListConverterTest.java │ │ │ │ │ ├── SpecFlowDependConverterTest.java │ │ │ │ │ ├── TaskConverterFactoryV3Test.java │ │ │ │ │ ├── TriggerConverterTest.java │ │ │ │ │ └── parameters │ │ │ │ │ ├── DataxParameterConverterTest.java │ │ │ │ │ ├── DependentParameterConverterTest.java │ │ │ │ │ ├── FlinkParameterConverterTest.java │ │ │ │ │ ├── HiveCliParameterConverterTest.java │ │ │ │ │ ├── MrParameterConverterTest.java │ │ │ │ │ ├── ProcedureParameterConverterTest.java │ │ │ │ │ ├── PythonParameterConverterTest.java │ │ │ │ │ ├── ShellParameterConverterTest.java │ │ │ │ │ ├── SparkParameterConverterTest.java │ │ │ │ │ ├── SqlParameterConverterTest.java │ │ │ │ │ ├── SqoopParameterConverterTest.java │ │ │ │ │ ├── SubProcessParameterConverterTest.java │ │ │ │ │ └── SwitchParameterConverterTest.java │ │ │ │ ├── dolphinscheduler │ │ │ │ └── convert │ │ │ │ │ └── SpecWorkflowDolphinSchedulerV3ConverterTest.java │ │ │ │ └── flowspec │ │ │ │ └── converter │ │ │ │ └── DolphinSchedulerV3FlowSpecConverterTest.java │ │ │ └── resources │ │ │ ├── airflow2 │ │ │ └── config │ │ │ │ └── mappings.json │ │ │ ├── conf │ │ │ └── transformer.json │ │ │ ├── dolphin │ │ │ ├── conf │ │ │ │ ├── transformer-spec-odps.json │ │ │ │ └── transformer-workflow-odps.json │ │ │ ├── v1 │ │ │ │ └── all │ │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ │ ├── package_info.json │ │ │ │ │ ├── projects.json │ │ │ │ │ ├── projects │ │ │ │ │ └── wl_test4 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── process_definitions_page_1.json │ │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ ├── v2 │ │ │ │ └── all │ │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ │ ├── package_info.json │ │ │ │ │ ├── projects.json │ │ │ │ │ ├── projects │ │ │ │ │ └── wl_test3 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── process_definitions_page_1.json │ │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ └── v3 │ │ │ │ ├── dependent │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── test2 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ ├── process_definitions_page_1.json │ │ │ │ │ │ └── workflow_1734682376191.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ ├── mr │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── 13942964612128 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── process_definitions_page_1.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ ├── python1 │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── 13666515015680 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── process_definitions_page_1.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ ├── shell │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── test2 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── workflow_1734937013861.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ ├── spark │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── 13666515015680 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── workflow_1735111947074.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ ├── sql │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── 13942964612128 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── process_definitions_page_1.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ ├── sqoop │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── 13942964612128 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ └── process_definitions_page_1.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ ├── subprocess1 │ │ │ │ ├── datasource │ │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ │ └── test2 │ │ │ │ │ │ └── processDefinition │ │ │ │ │ │ ├── process_definitions_page_1.json │ │ │ │ │ │ └── workflow_1734682376191.json │ │ │ │ ├── resource │ │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ │ └── udf_function_page_1.json │ │ │ │ └── switch │ │ │ │ ├── datasource │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ └── test2 │ │ │ │ │ └── processDefinition │ │ │ │ │ └── workflow_1734937144406.json │ │ │ │ ├── resource │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ └── udf_function_page_1.json │ │ │ ├── dolphinscheduler │ │ │ └── v1_package_0 │ │ │ │ ├── datasource │ │ │ │ └── datasource_page_1.json │ │ │ │ ├── package_info.json │ │ │ │ ├── projects.json │ │ │ │ ├── projects │ │ │ │ └── project_a │ │ │ │ │ └── processDefinition │ │ │ │ │ └── process_definitions_page_1.json │ │ │ │ ├── resource │ │ │ │ └── resources.json │ │ │ │ └── udfFunction │ │ │ │ └── udf_function_page_1.json │ │ │ ├── json │ │ │ ├── adf │ │ │ │ ├── conf.json │ │ │ │ ├── nested_pipelines.json │ │ │ │ ├── pipelines.json │ │ │ │ ├── triggers.json │ │ │ │ └── workflow1.json │ │ │ ├── dolphin │ │ │ │ ├── conditions-dolphin.json │ │ │ │ ├── dependent-dolphin.json │ │ │ │ ├── dependent-real-case.json │ │ │ │ ├── multiSqlNode-dolphin.json │ │ │ │ ├── real-case1.json │ │ │ │ ├── real-case2.json │ │ │ │ ├── shell-dolphin.json │ │ │ │ ├── singleSqlNode-dolphin.json │ │ │ │ ├── sql-python-dolphin.json │ │ │ │ ├── sql-python-spark-dolphin.json │ │ │ │ ├── subprocess-dolphin.json │ │ │ │ └── v3 │ │ │ │ │ ├── dolphin_dlc_v3.json │ │ │ │ │ └── shell_v3.json │ │ │ └── spec │ │ │ │ ├── real-case-shell-python-sql-spec.json │ │ │ │ ├── real-case-single-python-spec.json │ │ │ │ ├── real-case-single-sql-spec.json │ │ │ │ ├── shell-node-spec.json │ │ │ │ ├── single-sql-node-spec.json │ │ │ │ ├── sql-python-node-spec.json │ │ │ │ └── sql-python-spark-node-spec.json │ │ │ ├── py2sql │ │ │ ├── dwd_xingye_user_portrait_df.py │ │ │ ├── dws_xingye_creator_metric_df.py │ │ │ └── python的脚本模板.py │ │ │ └── pyspark │ │ │ ├── python脚本任务.json │ │ │ └── sparksql任务.json │ ├── migrationx-writer │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── migrationx │ │ │ │ ├── local │ │ │ │ ├── DataWorksSpecLocalCommandApp.java │ │ │ │ └── LocalAction.java │ │ │ │ └── writer │ │ │ │ ├── DataWorksMigrationAssistWriter.java │ │ │ │ ├── DataWorksMigrationSpecificationImportWriter.java │ │ │ │ ├── dataworks │ │ │ │ ├── DataWorksFlowSpecWriter.java │ │ │ │ └── model │ │ │ │ │ └── AsyncJobStatus.java │ │ │ │ └── dolphinscheduler │ │ │ │ └── DolphinSchedulerSingleJsonWriter.java │ │ │ └── test │ │ │ ├── java │ │ │ └── com │ │ │ │ └── aliyun │ │ │ │ └── dataworks │ │ │ │ └── migrationx │ │ │ │ └── writer │ │ │ │ ├── AdfWriterTest.java │ │ │ │ └── DataWorksMigrationSpecificationImportWriterTest.java │ │ │ └── resources │ │ │ └── airflow2 │ │ │ └── workflows │ │ │ └── sample.json │ ├── package.xml │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── bin │ │ │ ├── airworks.py │ │ │ ├── local.py │ │ │ ├── migrationx.py │ │ │ ├── reader.py │ │ │ ├── transformer.py │ │ │ └── writer.py │ │ └── conf │ │ │ ├── airworks.json │ │ │ ├── apps.json │ │ │ └── migrationx.json │ │ └── test │ │ └── java │ │ └── com │ │ └── aliyun │ │ └── dataworks │ │ └── AppTest.java └── pom.xml ├── docs ├── dev │ ├── develop-guide.md │ └── develop-guide_zh_CN.md ├── images │ ├── architecture-cn.jpg │ ├── architecture-en.jpg │ ├── architecture.jpg │ └── spec │ │ ├── dw_spec_package_demo-en.jpg │ │ ├── dw_spec_package_demo.jpg │ │ └── samples │ │ ├── real_case.jpg │ │ └── simple.jpg ├── migrationx │ ├── index.md │ ├── usage.md │ └── usage_zh_CN.md └── spec │ ├── samples.md │ └── spec-fields.md ├── pom.xml ├── schema ├── artifact.schema.json ├── docs │ ├── README.md │ ├── artifact-artifactnodeoutput-properties-output.md │ ├── artifact-artifactnodeoutput.md │ ├── artifact-artifacttable-properties-guid.md │ ├── artifact-artifacttable.md │ ├── artifact-artifactvariable-properties-id.md │ ├── artifact-artifactvariable-properties-name.md │ ├── artifact-artifactvariable-properties-scope-metaenum.md │ ├── artifact-artifactvariable-properties-scope.md │ ├── artifact-artifactvariable-properties-type-metaenum.md │ ├── artifact-artifactvariable-properties-type.md │ ├── artifact-artifactvariable-properties-value.md │ ├── artifact-artifactvariable.md │ ├── artifact-properties-artifacttype-metaenum.md │ ├── artifact-properties-artifacttype.md │ ├── artifact.md │ ├── fileresource-properties-id.md │ ├── fileresource-properties-name.md │ ├── fileresource.md │ ├── flow-if-properties-kind.md │ ├── flow-if-properties.md │ ├── flow-if.md │ ├── flow-properties-flowmetedata-properties-description.md │ ├── flow-properties-flowmetedata-properties-owner.md │ ├── flow-properties-flowmetedata.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecartifacts.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge-properties-flowworkflowspecedgenodedepends-flowworkflowspecedgenodedepend-properties-nodeid.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge-properties-flowworkflowspecedgenodedepends-flowworkflowspecedgenodedepend-properties-type-metaenum.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge-properties-flowworkflowspecedgenodedepends-flowworkflowspecedgenodedepend-properties-type.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge-properties-flowworkflowspecedgenodedepends-flowworkflowspecedgenodedepend.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge-properties-flowworkflowspecedgenodedepends.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge-properties-nodeid.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecedges.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecfileresources.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecfunctions.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecnodes.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecruntimeresources.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecscripts.md │ ├── flow-properties-flowworkflowspec-properties-flowworkflowspecvariables.md │ ├── flow-properties-flowworkflowspec.md │ ├── flow-properties-kind-metaenum.md │ ├── flow-properties-kind.md │ ├── flow-properties-version.md │ ├── flow-then-properties-spec-properties-flowworkflowspectriggers.md │ ├── flow-then-properties-spec-properties.md │ ├── flow-then-properties-spec.md │ ├── flow-then-properties.md │ ├── flow-then.md │ ├── flow.md │ ├── function-properties-id.md │ ├── function-properties-name.md │ ├── function.md │ ├── node-properties-id.md │ ├── node-properties-instancemode-metaenum.md │ ├── node-properties-instancemode.md │ ├── node-properties-name.md │ ├── node-properties-nodefileresources.md │ ├── node-properties-nodefunctions.md │ ├── node-properties-nodeinputartifact-properties-nodeinputartifactnodeoutputs.md │ ├── node-properties-nodeinputartifact-properties-nodeinputartifacttables.md │ ├── node-properties-nodeinputartifact-properties-nodeinputartifactvariables.md │ ├── node-properties-nodeinputartifact.md │ ├── node-properties-nodeoutputartifact-properties-nodeoutputartifactnodeoutputs.md │ ├── node-properties-nodeoutputartifact-properties-nodeoutputartifacttables.md │ ├── node-properties-nodeoutputartifact-properties-nodeoutputartifactvariables.md │ ├── node-properties-nodeoutputartifact.md │ ├── node-properties-priority.md │ ├── node-properties-recurrence-metaenum.md │ ├── node-properties-recurrence.md │ ├── node-properties-rerunmode-metaenum.md │ ├── node-properties-rerunmode.md │ ├── node-properties-timeout.md │ ├── node.md │ ├── runtimeresource-properties-id.md │ ├── runtimeresource-properties-resourcegroup.md │ ├── runtimeresource.md │ ├── script-properties-id.md │ ├── script-properties-language.md │ ├── script-properties-path.md │ ├── script-properties-scriptparameters.md │ ├── script-properties-scriptruntime-properties-command.md │ ├── script-properties-scriptruntime-properties-engine.md │ ├── script-properties-scriptruntime.md │ ├── script.md │ ├── trigger-properties-cron.md │ ├── trigger-properties-endtime.md │ ├── trigger-properties-id.md │ ├── trigger-properties-starttime.md │ ├── trigger-properties-timezone.md │ ├── trigger-properties-type.md │ └── trigger.md ├── fileResource.schema.json ├── flow.schema.json ├── function.schema.json ├── node.schema.json ├── runtimeResource.schema.json ├── script.schema.json ├── testcase │ ├── 1.json │ └── 2.json └── trigger.schema.json └── spec ├── pom.xml └── src ├── main ├── java │ └── com │ │ └── aliyun │ │ └── dataworks │ │ └── common │ │ └── spec │ │ ├── SpecUtil.java │ │ ├── adapter │ │ ├── SpecAdapter.java │ │ ├── SpecEntityHandler.java │ │ ├── SpecHandlerContext.java │ │ └── handler │ │ │ └── AbstractEntityHandler.java │ │ ├── annotation │ │ ├── SpecParser.java │ │ └── SpecWriter.java │ │ ├── domain │ │ ├── DataWorksWorkflowSpec.java │ │ ├── Spec.java │ │ ├── SpecConstants.java │ │ ├── SpecContext.java │ │ ├── SpecEntity.java │ │ ├── SpecNoRefEntity.java │ │ ├── SpecRefEntity.java │ │ ├── Specification.java │ │ ├── dw │ │ │ ├── codemodel │ │ │ │ ├── AbstractBaseCode.java │ │ │ │ ├── Code.java │ │ │ │ ├── CodeConstants.java │ │ │ │ ├── CodeModel.java │ │ │ │ ├── CodeModelFactory.java │ │ │ │ ├── ComponentSqlCode.java │ │ │ │ ├── ControllerBranchCode.java │ │ │ │ ├── ControllerJoinCode.java │ │ │ │ ├── CrossTenantCode.java │ │ │ │ ├── DataIntegrationCode.java │ │ │ │ ├── DefaultJsonFormCode.java │ │ │ │ ├── EmrAllocationSpec.java │ │ │ │ ├── EmrCode.java │ │ │ │ ├── EmrJobMode.java │ │ │ │ ├── EmrJobType.java │ │ │ │ ├── EmrLauncher.java │ │ │ │ ├── EmrProperty.java │ │ │ │ ├── JsonFormCode.java │ │ │ │ ├── JsonObjectCode.java │ │ │ │ ├── MultiLanguageScriptingCode.java │ │ │ │ ├── OdpsSparkCode.java │ │ │ │ ├── OdpsSparkFileExtend.java │ │ │ │ ├── PaiCode.java │ │ │ │ ├── PaiFlowCode.java │ │ │ │ ├── PaiflowYamlCode.java │ │ │ │ ├── PlainTextCode.java │ │ │ │ ├── SparkSubmitCode.java │ │ │ │ ├── SpecDescribableCode.java │ │ │ │ ├── SqlComponentCode.java │ │ │ │ └── YamlFormCode.java │ │ │ ├── nodemodel │ │ │ │ ├── DataWorksNode.java │ │ │ │ ├── DataWorksNodeAdapter.java │ │ │ │ ├── DataWorksNodeAdapterContextAware.java │ │ │ │ ├── DataWorksNodeCodeAdapter.java │ │ │ │ ├── DataWorksNodeInputOutputAdapter.java │ │ │ │ ├── DwNodeDependentTypeInfo.java │ │ │ │ ├── InputContext.java │ │ │ │ ├── OutputContext.java │ │ │ │ └── SpecEntityDelegate.java │ │ │ └── types │ │ │ │ ├── CalcEngineType.java │ │ │ │ ├── CodeProgramType.java │ │ │ │ ├── IntEnum.java │ │ │ │ ├── LabelType.java │ │ │ │ ├── Language.java │ │ │ │ ├── LanguageEnum.java │ │ │ │ ├── LocaleAware.java │ │ │ │ ├── ModelTreeRoot.java │ │ │ │ └── ProductModule.java │ │ ├── enums │ │ │ ├── ArtifactType.java │ │ │ ├── DependencyType.java │ │ │ ├── FailureStrategy.java │ │ │ ├── FlowType.java │ │ │ ├── FunctionType.java │ │ │ ├── NodeInstanceModeType.java │ │ │ ├── NodeRecurrenceType.java │ │ │ ├── NodeRerunModeType.java │ │ │ ├── SourceType.java │ │ │ ├── SpecEmbeddedCodeType.java │ │ │ ├── SpecEmbeddedResourceType.java │ │ │ ├── SpecEntityType.java │ │ │ ├── SpecFileResourceType.java │ │ │ ├── SpecKind.java │ │ │ ├── SpecStorageType.java │ │ │ ├── SpecVersion.java │ │ │ ├── TriggerType.java │ │ │ ├── VariableScopeType.java │ │ │ └── VariableType.java │ │ ├── interfaces │ │ │ ├── Input.java │ │ │ ├── LabelEnum.java │ │ │ ├── NodeIO.java │ │ │ └── Output.java │ │ ├── noref │ │ │ ├── SpecAnd.java │ │ │ ├── SpecAssertIn.java │ │ │ ├── SpecAssertion.java │ │ │ ├── SpecBranch.java │ │ │ ├── SpecBranches.java │ │ │ ├── SpecDepend.java │ │ │ ├── SpecDoWhile.java │ │ │ ├── SpecFlowDepend.java │ │ │ ├── SpecForEach.java │ │ │ ├── SpecJoin.java │ │ │ ├── SpecJoinBranch.java │ │ │ ├── SpecLogic.java │ │ │ ├── SpecNodeRef.java │ │ │ ├── SpecOr.java │ │ │ ├── SpecPaiflow.java │ │ │ ├── SpecParamHub.java │ │ │ ├── SpecSubFlow.java │ │ │ ├── SpecVariableDepend.java │ │ │ └── SpecVariableFlowDepend.java │ │ ├── paiflow │ │ │ ├── AbstractPaiflowBase.java │ │ │ ├── PaiflowArguments.java │ │ │ ├── PaiflowArgumentsWrapper.java │ │ │ ├── PaiflowArtifact.java │ │ │ ├── PaiflowMetadata.java │ │ │ ├── PaiflowObjectToStringSerializer.java │ │ │ ├── PaiflowParameter.java │ │ │ ├── PaiflowScriptContent.java │ │ │ └── PaiflowSpec.java │ │ └── ref │ │ │ ├── Container.java │ │ │ ├── InputOutputWired.java │ │ │ ├── ScriptWired.java │ │ │ ├── SpecArtifact.java │ │ │ ├── SpecDatasource.java │ │ │ ├── SpecDqcRule.java │ │ │ ├── SpecFile.java │ │ │ ├── SpecFileResource.java │ │ │ ├── SpecFunction.java │ │ │ ├── SpecNode.java │ │ │ ├── SpecNodeOutput.java │ │ │ ├── SpecRuntimeResource.java │ │ │ ├── SpecScheduleStrategy.java │ │ │ ├── SpecScript.java │ │ │ ├── SpecTable.java │ │ │ ├── SpecTrigger.java │ │ │ ├── SpecVariable.java │ │ │ ├── SpecWorkflow.java │ │ │ ├── TemporalSpecNode.java │ │ │ ├── account │ │ │ ├── SpecAccount.java │ │ │ └── SpecAkAccount.java │ │ │ ├── calcengine │ │ │ ├── SpecCalcEngine.java │ │ │ └── SpecCalcEngineVersion.java │ │ │ ├── component │ │ │ ├── SpecComponent.java │ │ │ └── SpecComponentParameter.java │ │ │ ├── file │ │ │ ├── SpecHdfsFile.java │ │ │ ├── SpecLocalFile.java │ │ │ ├── SpecMavenFile.java │ │ │ ├── SpecObjectStorageFile.java │ │ │ └── SpecOssFile.java │ │ │ ├── runtime │ │ │ ├── SpecScriptRuntime.java │ │ │ ├── container │ │ │ │ ├── SpecContainer.java │ │ │ │ └── SpecContainerEnvVar.java │ │ │ └── emr │ │ │ │ ├── EmrJobConfig.java │ │ │ │ ├── EmrJobExecuteMode.java │ │ │ │ └── EmrJobSubmitMode.java │ │ │ └── storage │ │ │ ├── SpecHdfsStorage.java │ │ │ ├── SpecLocalStorage.java │ │ │ ├── SpecMavenStorage.java │ │ │ ├── SpecOssStorage.java │ │ │ └── SpecStorage.java │ │ ├── exception │ │ ├── SpecErrorCode.java │ │ ├── SpecException.java │ │ └── SpecIErrorCode.java │ │ ├── parser │ │ ├── DefaultParserEnum.java │ │ ├── Parser.java │ │ ├── SpecParserContext.java │ │ ├── SpecParserFactory.java │ │ ├── ToDomainRootParser.java │ │ └── impl │ │ │ ├── ArtifactListParser.java │ │ │ ├── DataWorksWorkflowSpecParser.java │ │ │ ├── DefaultSpecParser.java │ │ │ ├── DoWhileParser.java │ │ │ ├── EmrJobConfigParser.java │ │ │ ├── FileListParser.java │ │ │ ├── SpecBranchParser.java │ │ │ ├── SpecCalcEngineParser.java │ │ │ ├── SpecComponentParser.java │ │ │ ├── SpecContainerEnvVarParser.java │ │ │ ├── SpecContainerParser.java │ │ │ ├── SpecDependParser.java │ │ │ ├── SpecDqcRuleParser.java │ │ │ ├── SpecFileResourceParser.java │ │ │ ├── SpecForEachParser.java │ │ │ ├── SpecFunctionParser.java │ │ │ ├── SpecJoinParser.java │ │ │ ├── SpecNodeParser.java │ │ │ ├── SpecNodeRefParser.java │ │ │ ├── SpecObjectStorageFileParser.java │ │ │ ├── SpecPaiflowParser.java │ │ │ ├── SpecParamHubParser.java │ │ │ ├── SpecParser.java │ │ │ ├── SpecScheduleStrategyParser.java │ │ │ ├── SpecScriptRuntimeParser.java │ │ │ ├── SpecStorageParser.java │ │ │ ├── SpecTableParser.java │ │ │ ├── SpecVariableDependParser.java │ │ │ ├── SpecVariableFlowDependParser.java │ │ │ ├── SpecVariableParser.java │ │ │ ├── SpecWorkflowParser.java │ │ │ └── SubFlowParser.java │ │ ├── utils │ │ ├── ClassUtils.java │ │ ├── GsonUtils.java │ │ ├── JSONUtils.java │ │ ├── MapKeyMatchUtils.java │ │ ├── ObjectUtils.java │ │ ├── ParserUtil.java │ │ ├── ReflectUtils.java │ │ ├── SpecDevUtil.java │ │ ├── SpecValidateUtil.java │ │ ├── StringTypeObjectAdapter.java │ │ ├── UuidUtils.java │ │ └── VariableUtils.java │ │ └── writer │ │ ├── SpecWriterContext.java │ │ ├── Writer.java │ │ ├── WriterFactory.java │ │ └── impl │ │ ├── AbstractWriter.java │ │ ├── DataWorksWorkflowSpecWriter.java │ │ ├── DefaultJsonObjectWriter.java │ │ ├── EmrJobConfigWriter.java │ │ ├── SpecAssertionWriter.java │ │ ├── SpecBranchWriter.java │ │ ├── SpecBranchesWriter.java │ │ ├── SpecCalcEngineWriter.java │ │ ├── SpecComponentWriter.java │ │ ├── SpecDependWriter.java │ │ ├── SpecDoWhileWriter.java │ │ ├── SpecDqcRuleWriter.java │ │ ├── SpecFileResourceWriter.java │ │ ├── SpecFlowDependWriter.java │ │ ├── SpecForEachWriter.java │ │ ├── SpecFunctionWriter.java │ │ ├── SpecJoinBranchWriter.java │ │ ├── SpecJoinWriter.java │ │ ├── SpecNodeOutputWriter.java │ │ ├── SpecNodeRefWriter.java │ │ ├── SpecNodeWriter.java │ │ ├── SpecObjectStorageFileWriter.java │ │ ├── SpecPaiflowWriter.java │ │ ├── SpecParamHubWriter.java │ │ ├── SpecRuntimeResourceWriter.java │ │ ├── SpecScriptRuntimeWriter.java │ │ ├── SpecScriptWriter.java │ │ ├── SpecStorageWriter.java │ │ ├── SpecTableWriter.java │ │ ├── SpecTriggerWriter.java │ │ ├── SpecVariableDependWriter.java │ │ ├── SpecVariableFlowDependWriter.java │ │ ├── SpecVariableWriter.java │ │ ├── SpecWorkflowWriter.java │ │ └── SpecificationWriter.java └── spec │ └── examples │ ├── json │ ├── assign.json │ ├── assignment.json │ ├── branch.json │ ├── cdh.json │ ├── combined_node.json │ ├── datasource.json │ ├── dowhile.json │ ├── dqc.json │ ├── emr.json │ ├── example.json │ ├── file_resource.json │ ├── function.json │ ├── innerflow.json │ ├── join.json │ ├── manual_flow.json │ ├── paiflow.json │ ├── param_hub.json │ ├── parameter_node.json │ ├── real_case.json │ ├── real_case_expanded.json │ ├── script_runtime_template.json │ ├── simple.json │ └── table.json │ ├── tojson.sh │ ├── yaml │ ├── assign.yaml │ ├── assignment.yaml │ ├── branch.yaml │ ├── cdh.yaml │ ├── combined_node.yaml │ ├── dataservice.yaml │ ├── datasource.yaml │ ├── dowhile.yaml │ ├── dqc.yaml │ ├── emr.yaml │ ├── example.yaml │ ├── file_resource.yaml │ ├── function.yaml │ ├── innerflow.yaml │ ├── join.yaml │ ├── manual_flow.yaml │ ├── paiflow.yaml │ ├── param_hub.yaml │ ├── parameter_node.yaml │ ├── real_case.yaml │ ├── real_case_expanded.yaml │ ├── script_runtime_template.yaml │ ├── simple.yaml │ └── table.yaml │ └── yaml2json.py └── test ├── java └── com │ └── aliyun │ └── dataworks │ └── common │ └── spec │ ├── SpecUtilTest.java │ ├── SpecWriterUtilTest.java │ ├── domain │ ├── dw │ │ ├── codemodel │ │ │ ├── CodeModelFactoryTest.java │ │ │ ├── ComponentSqlCodeTest.java │ │ │ ├── CrossTenantCodeTest.java │ │ │ ├── EmrCodeTest.java │ │ │ ├── PaiCodeTest.java │ │ │ ├── PaiFlowCodeTest.java │ │ │ ├── PaiflowYamlCodeTest.java │ │ │ ├── SparkSubmitCodeTest.java │ │ │ └── SqlComponentCodeTest.java │ │ └── nodemodel │ │ │ ├── DataWorksNodeAdapterTest.java │ │ │ ├── DataWorksNodeCodeAdapterTest.java │ │ │ └── DataWorksNodeInputOutputAdapterTest.java │ ├── noref │ │ ├── SpecDependTest.java │ │ ├── SpecFlowDependTest.java │ │ └── SpecVariableFlowDependTest.java │ └── ref │ │ ├── SpecNodeTest.java │ │ └── component │ │ └── SpecComponentTest.java │ ├── parser │ └── impl │ │ ├── SpecScheduleStrategyParserTest.java │ │ └── SpecScriptRuntimeParserTest.java │ └── utils │ ├── MapKeyMatchUtilsTest.java │ ├── ReflectUtilsTest.java │ └── VariableUtilsTest.java └── resources ├── assign.json ├── branch.json ├── codemodel └── pai_code_sample_1.json ├── combined_node.json ├── example.json ├── expanded.json ├── innerflow.json ├── join.json ├── logback.xml ├── manual_flow.json ├── newSimple.json ├── nodemodel ├── all_depend_types.json ├── assignment.json ├── dide_shell.json ├── dowhile.json ├── foreach.json ├── manual.json └── pyodps2.json ├── param_hub.json ├── parameter_node.json ├── script_runtime_template.json ├── simpleDemo.json └── toSpecDemo.json /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | 3 | target/ 4 | !.mvn/wrapper/maven-wrapper.jar 5 | !**/src/main/**/target/ 6 | !**/src/test/**/target/ 7 | 8 | ### IntelliJ IDEA ### 9 | .idea/modules.xml 10 | .idea/jarRepositories.xml 11 | .idea/compiler.xml 12 | .idea/libraries/ 13 | *.iws 14 | *.iml 15 | *.ipr 16 | 17 | ### Eclipse ### 18 | .apt_generated 19 | .classpath 20 | .factorypath 21 | .project 22 | .settings 23 | .springBeans 24 | .sts4-cache 25 | 26 | ### NetBeans ### 27 | /nbproject/private/ 28 | /nbbuild/ 29 | /dist/ 30 | /nbdist/ 31 | /.nb-gradle/ 32 | build/ 33 | !**/src/main/**/build/ 34 | !**/src/test/**/build/ 35 | 36 | ### VS Code ### 37 | .vscode/ 38 | 39 | ### Mac OS ### 40 | .DS_Store 41 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Version 1.1.0 2 | 3 | ## New 4 | 5 | * add top level field `spec` to specification 6 | * add `files` field type `File` to DataWorksWorkflowSpec to separate concept from `Script` 7 | * [TODO] new: emr node supports 8 | 9 | ## Update 10 | 11 | * ArtifactType.OUTPUT to ArtifactType.NODE_OUTPUT, and compatible with old version spec `output` key 12 | * delete currently unused Specification.engine field 13 | * update SpecResource/SpecDatasource/SpecTable define and parser/writer 14 | 15 | # Version 1.0.0 16 | 17 | ## initial release of `FlowSpec` and `MigrationX` tools -------------------------------------------------------------------------------- /client/client-common/src/main/java/com/aliyun/dataworks/client/command/AppType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.client.command; 17 | 18 | /** 19 | * @author 聿剑 20 | * @date 2023/9/14 21 | */ 22 | public enum AppType { 23 | reader, 24 | transformer, 25 | writer, 26 | spec 27 | } -------------------------------------------------------------------------------- /client/client-toolkits/src/main/bin/spec.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | # Copyright (c) 2024, Alibaba Cloud; 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | import common 18 | 19 | cur_path = common.get_cur_path() 20 | conf_path = common.get_conf_path() 21 | 22 | common.run_command("spec") 23 | -------------------------------------------------------------------------------- /client/client-toolkits/src/main/conf/apps.json: -------------------------------------------------------------------------------- 1 | { 2 | "spec": { 3 | "dataworks": { 4 | "appClass": "com.aliyun.dataworks.client.toolkits.command.SpecCommandApp" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /client/client-toolkits/src/main/java/com/aliyun/dataworks/client/toolkits/command/DataWorksSpecToolkit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.client.toolkits.command; 17 | 18 | /** 19 | * @author 聿剑 20 | * @date 2024/9/23 21 | */ 22 | public class DataWorksSpecToolkit { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /client/client-toolkits/src/test/java/com/aliyun/dataworks/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/README.MD: -------------------------------------------------------------------------------- 1 | # 使用方法 2 | 3 | 1 解压airflow-workflow.tgz 4 | 5 | ```shell 6 | tar zxvf airflow-workflow.tgz 7 | ``` 8 | 9 | 2 设置PTYHONPATH 10 | 指定PYTHONPATH到airflow的python lib目录,例如 11 | 12 | ```shell 13 | export PYTHONPATH=/usr/local/lib/python3.6/site-packages 14 | # 路径只是举例子,实际export以现场环境为准 15 | export AIRFLOW_HOME=/var/lib/airflow 16 | export AIRFLOW_CONFIG=/var/run/cloudera-scm-agent/process/2531-airflow-AIRFLOW_SCHEDULER/airflow.cfg 17 | ``` 18 | 19 | 3 执行airflow DAG导出Workflow操作 20 | 21 | ```shell 22 | cd airflow-workflow 23 | python3.6 ./parser \ 24 | -p 'airflow_imported/my_dags/' \ # optional 25 | -m /path/to/conf/flowspec-airflowV2-transformer-config.json \ # optional 26 | -d /path/to/airflow/dag/floder/ \ 27 | -o /path/to/workflow/saving/folder/ 28 | ``` 29 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/__init__.py: -------------------------------------------------------------------------------- 1 | # for airflow version 2 | __version__ = '2.2' 3 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx-transformer/src/main/python/airflow_dag_parser/common/__init__.py -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/converter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx-transformer/src/main/python/airflow_dag_parser/converter/__init__.py -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/dag_parser.py: -------------------------------------------------------------------------------- 1 | from airflow.models import DagBag 2 | from airflow.utils.log.logging_mixin import LoggingMixin 3 | 4 | 5 | class DagParser(LoggingMixin): 6 | def __init__(self, dag_folder): 7 | self.dag_folder = dag_folder 8 | self.dag_bag = None 9 | 10 | def parse(self): 11 | try: 12 | self.dag_bag = DagBag(self.dag_folder, include_examples=False) 13 | self.log.info("Init DagBag success\n\n") 14 | except Exception as e: 15 | self.log.error(e) 16 | 17 | def get_dags(self): 18 | if self.dag_bag: 19 | return self.dag_bag.dags 20 | return None 21 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/miscs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx-transformer/src/main/python/airflow_dag_parser/miscs/__init__.py -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/miscs/helpers.py: -------------------------------------------------------------------------------- 1 | def resolve_param_type_title(af_param): 2 | if af_param.schema is not None and 'type' in af_param.schema: 3 | param_type = af_param.schema['type'] 4 | else: 5 | param_type = 'UNKNOWN' 6 | if af_param.schema is not None and 'title' in af_param.schema: 7 | param_title = af_param.schema['title'] 8 | else: 9 | param_title = None 10 | return param_type, param_title -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx-transformer/src/main/python/airflow_dag_parser/models/__init__.py -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/models/dw_eums.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class Architecture(str, Enum): 5 | TABLE = "Table" 6 | FILE = "File" 7 | NODE_OUTPUT = "NodeOutput" 8 | VARIABLE = "Variable" 9 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/models/dw_node.py: -------------------------------------------------------------------------------- 1 | from airflow_dag_parser.models.dw_base import DwBase, convert 2 | 3 | 4 | class DwNode(DwBase): 5 | def __init__(self): 6 | self.name = None 7 | self.type = None 8 | self.cronExpress = None 9 | self.owner = None 10 | self.startRightNow = False 11 | self.rerunable = False 12 | self.pauseSchedule = False 13 | self.code = None 14 | self.parameter = None 15 | self.folder = None 16 | self.inputContexts = [] 17 | self.outputContexts = [] 18 | self.inputs = [] 19 | self.outputs = [] 20 | self.innerNodes = [] 21 | self.ref = None 22 | self.airflowTask = {} 23 | self.exception = None 24 | 25 | @convert.register(DwNode) 26 | def _(o): 27 | return o.__dict__ 28 | 29 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/models/dw_node_io.py: -------------------------------------------------------------------------------- 1 | from airflow_dag_parser.models.dw_base import DwBase, convert 2 | 3 | class DwNodeIo(DwBase): 4 | def __init__(self): 5 | self.data = None 6 | self.refTableName = None 7 | 8 | @convert.register(DwNodeIo) 9 | def _(o): 10 | return o.__dict__ 11 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/models/dw_workflow.py: -------------------------------------------------------------------------------- 1 | from airflow_dag_parser.models.dw_base import DwBase, convert 2 | 3 | class DwWorkflow(DwBase): 4 | def __init__(self): 5 | self.name = None 6 | self.scheduled = False 7 | self.parameters = [] 8 | self.nodes = [] 9 | self.resources = [] 10 | self.functions = [] 11 | self.tables = [] 12 | self.ref = None 13 | 14 | @convert.register(DwWorkflow) 15 | def _(o): 16 | return o.__dict__ 17 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/models/products.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ProductType(str, Enum): 5 | DATA_STUDIO = "DataStudio" 6 | DATA_QUALITY = "DataQuality" 7 | DATA_SERVICE = "DataService" 8 | DATA_CATALOG = "DataCatalog" 9 | DATA_SOURCE = "DataSource" 10 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/patch/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx-transformer/src/main/python/airflow_dag_parser/patch/__init__.py -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/patch/base_hook_patch.py: -------------------------------------------------------------------------------- 1 | import os 2 | from typing import Iterable 3 | 4 | from airflow.models import Connection 5 | 6 | from airflow_dag_parser.connections import CsvConnections 7 | 8 | 9 | @classmethod 10 | def get_connections(cls, conn_id): # type: (str) -> Iterable[Connection] 11 | csv = os.environ.get("connections_csv") 12 | 13 | if not csv and not cls.connections: 14 | return None 15 | 16 | if not cls.connections: 17 | cls.connections = CsvConnections(csv) 18 | cls.connections.load() 19 | 20 | return cls.connections.get_connection(conn_id) 21 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/patch/presto_hook_patch.py: -------------------------------------------------------------------------------- 1 | from requests.auth import HTTPBasicAuth 2 | 3 | 4 | def get_conn(self): 5 | """Returns a connection object""" 6 | db = self.get_connection(self.presto_conn_id) 7 | reqkwargs = None 8 | if db.password is not None: 9 | reqkwargs = {'auth': HTTPBasicAuth(db.login, db.password)} 10 | conn = { 11 | "host": db.host, 12 | "port": db.port, 13 | "username": db.login, 14 | "source": db.extra_dejson.get('source', 'airflow'), 15 | "protocol": db.extra_dejson.get('protocol', 'http'), 16 | "catalog": db.extra_dejson.get('catalog', 'hive'), 17 | "schema": db.schema 18 | } 19 | return conn 20 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/patch/presto_to_mysql_operator_patch.py: -------------------------------------------------------------------------------- 1 | from airflow.providers.mysql.hooks.mysql.MySqlHook import MySqlHook 2 | from airflow.providers.mysql.hooks.mysql.MySqlHook import PrestoHook 3 | 4 | 5 | def execute(self, context): 6 | self.presto = PrestoHook(presto_conn_id=self.presto_conn_id) 7 | self.log.info("Extracting data from Presto: %s", self.sql) 8 | # results = presto.get_records(self.sql) 9 | 10 | self.mysql = MySqlHook(mysql_conn_id=self.mysql_conn_id) 11 | 12 | # self.log.info("Inserting rows into MySQL") 13 | # mysql.insert_rows(table=self.mysql_table, rows=results) 14 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/patch/spark_submit_hook_patch.py: -------------------------------------------------------------------------------- 1 | def submit(self, application="", **kwargs): 2 | """ 3 | Remote Popen to execute the spark-submit job 4 | 5 | :param application: Submitted application, jar or py file 6 | :type application: str 7 | :param kwargs: extra arguments to Popen (see subprocess.Popen) 8 | """ 9 | self.spark_submit_cmd = self._build_spark_submit_command(application) 10 | pass 11 | -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx-transformer/src/main/python/airflow_dag_parser/test/__init__.py -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/airflow_dag_parser/test/code/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx-transformer/src/main/python/airflow_dag_parser/test/code/__init__.py -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/python/common.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024, Alibaba Cloud; 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | 16 | INFO="INFO" 17 | WARN="WARN" 18 | ERROR="ERROR" 19 | 20 | function log_info() { 21 | log $INFO $@ 22 | } 23 | 24 | function log_warn() { 25 | log $WARN $@ 26 | } 27 | 28 | function log_error() { 29 | log $ERROR $@ 30 | } 31 | 32 | function log() { 33 | message=$@ 34 | echo "`date` $message" 35 | } -------------------------------------------------------------------------------- /client/migrationx-transformer/src/main/scripts/drop_table.sql: -------------------------------------------------------------------------------- 1 | drop table if exists a1; 2 | drop table if exists a2; 3 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/exception/UnSupportedTypeException.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.migrationx.common.exception; 2 | 3 | public class UnSupportedTypeException extends RuntimeException { 4 | private String type; 5 | 6 | public UnSupportedTypeException(String type) { 7 | super("unsupported converter task type: " + type); 8 | this.type = type; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/metrics/MetricsSummary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.migrationx.common.metrics; 17 | 18 | import lombok.Data; 19 | 20 | @Data 21 | public class MetricsSummary { 22 | protected long startTime; 23 | protected long endTime; 24 | protected long totalTasks; 25 | } 26 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/metrics/Progress.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.migrationx.common.metrics; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Progress { 7 | private int total; 8 | private int middleSuccess; 9 | private int success; 10 | private int failed; 11 | private int skipped; 12 | } 13 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/metrics/enums/CollectorType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.migrationx.common.metrics.enums; 17 | 18 | public enum CollectorType { 19 | DolphinScheduler, 20 | AzureDataFactory 21 | } 22 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/UuidGenerators.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.migrationx.common.utils; 2 | 3 | import java.util.Objects; 4 | import java.util.function.Function; 5 | 6 | import static com.aliyun.migrationx.common.utils.UuidUtils.genUuidWithoutHorizontalLine; 7 | 8 | public class UuidGenerators { 9 | 10 | private static final Function generateUuidFunc = code -> genUuidWithoutHorizontalLine(); 11 | 12 | public static String generateUuid(Long code) { 13 | if (Objects.isNull(code)) { 14 | return generateUuid(); 15 | } 16 | return generateUuidFunc.apply(code); 17 | } 18 | 19 | public static String generateUuid() { 20 | String uuid = genUuidWithoutHorizontalLine(); 21 | return uuid; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/UuidUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024. Aliyun.com All right reserved. This software is the 3 | * confidential and proprietary information of Aliyun.com ("Confidential 4 | * Information"). You shall not disclose such Confidential Information and shall 5 | * use it only in accordance with the terms of the license agreement you entered 6 | * into with Aliyun.com. 7 | */ 8 | 9 | package com.aliyun.migrationx.common.utils; 10 | 11 | import java.util.UUID; 12 | 13 | /** 14 | * Desc: 15 | * 16 | * @author 莫泣 17 | * @date 2024-07-23 18 | */ 19 | public class UuidUtils { 20 | 21 | public static String genUuidWithoutHorizontalLine() { 22 | // 采用UUID低64位作为生成逻辑,冲突概率增加一倍 23 | long least = UUID.randomUUID().getLeastSignificantBits(); 24 | // 最小值 25 | if (least == Long.MIN_VALUE) { 26 | least = Long.MAX_VALUE; 27 | } else { 28 | least = Math.abs(least); 29 | } 30 | return String.valueOf(least); 31 | } 32 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/resources/i18n/en_US.json: -------------------------------------------------------------------------------- 1 | { 2 | "ErrorCode.UnknownEnumType": "unknown enumeration type: {0}, value: {1}", 3 | "ErrorCode.ParameterNotSet": "parameter not set: {0}", 4 | "ErrorCode.ParameterInvalid": "parameter invalid: {0}", 5 | "ErrorCode.ProjectNotFound": "project not found: {0}", 6 | "ErrorCode.ProcedureCanceled": "process procedure canceled", 7 | "ErrorCode.NoPermission": "no permission: {0}", 8 | "ErrorCode.NoPermissionProjectAdmin": "user {0} has no admin permission of project: {1}", 9 | "ErrorCode.NoPermissionProjectMember": "user {0} is not member of project: {1}", 10 | "ErrorCode.TranslateNodeError": "translate node error: {0}", 11 | "ErrorCode.PackageAnalyzeError": "analyze package error: {0}", 12 | "ErrorCode.PackageConvertError": "convert package error: {0}", 13 | "ErrorCode.PackageNotLoaded": "package file not loaded", 14 | "ErrorCode.UnsupportedPackage": "unsupported package: {0}", 15 | "ErrorCode.UnknownCommandApp": "unknown command app: {0}" 16 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/main/resources/i18n/zh_CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "ErrorCode.UnknownEnumType": "未知的枚举类型: {0}, 取值为: {1}", 3 | "ErrorCode.ParameterNotSet": "参数未设置: {0}", 4 | "ErrorCode.ParameterInvalid": "参数非法: {0}", 5 | "ErrorCode.ProjectNotFound": "项目不存在: {0}", 6 | "ErrorCode.ProcedureCanceled": "处理流程取消", 7 | "ErrorCode.NoPermission": "没有权限: {0}", 8 | "ErrorCode.NoPermissionProjectAdmin": "用户 {0} 没有项目 {1} 的管理员权限", 9 | "ErrorCode.NoPermissionProjectMember": "用户 {0} 不是项目 {1} 的成员", 10 | "ErrorCode.TranslateNodeError": "转换出错: {0}", 11 | "ErrorCode.PackageAnalyzeError": "分析包出错: {0}", 12 | "ErrorCode.PackageConvertError": "转换包出错: {0}", 13 | "ErrorCode.PackageNotLoaded": "包文件未加载", 14 | "ErrorCode.UnsupportedPackage": "不支持的包类型: {0}", 15 | "ErrorCode.UnknownCommandApp": "未知的命令行App: {0}" 16 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/test/java/com/aliyun/migrationx/common/context/TransformerContextTest.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.migrationx.common.context; 2 | 3 | import com.aliyun.migrationx.common.metrics.enums.CollectorType; 4 | 5 | import org.junit.Assert; 6 | import org.junit.Test; 7 | 8 | public class TransformerContextTest { 9 | 10 | @Test 11 | public void testTransformerContextCustomResourceDir() { 12 | TransformerContext.init(CollectorType.DolphinScheduler); 13 | TransformerContext.getContext().setCustomResourceDir("."); 14 | Assert.assertEquals(".", TransformerContext.getContext().getCustomResourceDir().getName()); 15 | } 16 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/test/resources/i18n/en_US.json: -------------------------------------------------------------------------------- 1 | { 2 | "ErrorCode.UNKNOWN_ENUM_TYPE": "Unknown enum type {0}, value: {1}" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-common/src/test/resources/i18n/zh_CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "ErrorCode.UNKNOWN_ENUM_TYPE": "未知的枚举类型: {0}, 取值: {1}" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-adf/src/main/java/com/aliyun/dataworks/migrationx/domain/adf/AdfConf.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.adf; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | @Data 8 | public class AdfConf { 9 | private String locale = "zh_CN"; 10 | private AdfSetting settings; 11 | public static final AdfConf DEFAULT = new AdfConf(); 12 | @Data 13 | public static class AdfSetting { 14 | /** 15 | * adf does not use cron expression, currently users need to manually set cron expression in config file 16 | */ 17 | Map triggers; 18 | Map nodeTypeMappings; 19 | String unknownNodeType; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-adf/src/main/java/com/aliyun/dataworks/migrationx/domain/adf/AdfPackage.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.adf; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | @EqualsAndHashCode(callSuper = true) 10 | @Data 11 | public class AdfPackage extends com.aliyun.dataworks.migrationx.domain.dataworks.standard.objects.Package { 12 | private String factory; 13 | 14 | /** 15 | * mapping from pipeline name to its trigger 16 | */ 17 | private Map triggers; 18 | 19 | private List pipelines; 20 | 21 | private List linkedServices; 22 | } 23 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-adf/src/main/java/com/aliyun/dataworks/migrationx/domain/adf/Factory.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.adf; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Factory { 7 | private String name; 8 | private Identity identity; 9 | private String id; 10 | private String type; 11 | private FactoryProperty properties; 12 | private String eTag; 13 | private String location; 14 | private Tags tags; 15 | 16 | @Data 17 | public static class FactoryProperty { 18 | private String provisioningState; 19 | private String createTime; 20 | private String version; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-adf/src/main/java/com/aliyun/dataworks/migrationx/domain/adf/Identity.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.adf; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Identity { 7 | private String type; 8 | private String principalId; 9 | private String tenantId; 10 | } 11 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-adf/src/main/java/com/aliyun/dataworks/migrationx/domain/adf/LinkedService.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.adf; 2 | 3 | import lombok.Data; 4 | @Data 5 | public class LinkedService { 6 | private String id; 7 | private String name; 8 | private String type; 9 | private LinkedServiceProperty properties; 10 | private String etag; 11 | 12 | @Data 13 | public static class LinkedServiceProperty { 14 | private String type; 15 | private TypeProperty typeProperties; 16 | private String description; 17 | 18 | @Data 19 | public static class TypeProperty { 20 | private String connectionString; 21 | private String encryptedCredential; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-adf/src/main/java/com/aliyun/dataworks/migrationx/domain/adf/RequestPayload.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.adf; 2 | 3 | public class RequestPayload { 4 | public String resourceGroupName; 5 | public String subscriptionId; 6 | public String factoryName; 7 | 8 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-adf/src/main/java/com/aliyun/dataworks/migrationx/domain/adf/Tags.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.adf; 2 | 3 | public class Tags { 4 | } 5 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-airflow/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-azkaban/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-caiyunjian/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-core/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/standard/service/PackageService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.standard.service; 17 | 18 | /** 19 | * @author 聿剑 20 | * @date 2023/01/12 21 | */ 22 | public interface PackageService { 23 | } 24 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-datago/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/业务流程/test_flow1/MaxCompute/数据开发/test1/test1.schedule.json: -------------------------------------------------------------------------------- 1 | { 2 | "version":"1.1.0", 3 | "kind":"CycleWorkflow", 4 | "spec":{ 5 | "nodes":[ 6 | { 7 | "recurrence":"Normal", 8 | "id":"e2f7ce7c-e5ee-49aa-a13f-2958006e257e", 9 | "instanceMode":"T+1", 10 | "rerunMode":"Allowed", 11 | "script":{ 12 | "path":"业务流程/test_flow1/MaxCompute/数据开发", 13 | "runtime":{ 14 | "engine":"MaxCompute", 15 | "command":"ODPS_SQL" 16 | }, 17 | "id":"e2f7ce7c-e5ee-49aa-a13f-2958006e257e" 18 | }, 19 | "name":"test1", 20 | "inputs":{ 21 | 22 | }, 23 | "outputs":{ 24 | 25 | } 26 | } 27 | ] 28 | } 29 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/业务流程/test_flow1/MaxCompute/数据开发/test1/test1.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/业务流程/test_flow1/MaxCompute/数据开发/test1/test1.sql -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/SPEC.FORMAT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/SPEC.FORMAT -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/FileVersion.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.client; 2 | 3 | import lombok.Data; 4 | import lombok.ToString; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author 戒迷 9 | * @date 2024/4/16 10 | */ 11 | @Data 12 | @Accessors(chain = true) 13 | @ToString(exclude = {"fileContent"}) 14 | public class FileVersion { 15 | private Long fileId; 16 | private String fileContent; 17 | private String commitUser; 18 | private Integer fileType; 19 | private String changeType; 20 | private String fileName; 21 | private Long cloudUuid; 22 | private String comment; 23 | private String useType; 24 | } 25 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/IdeOssNetworkType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.client; 17 | 18 | /** 19 | * @author sam.liux 20 | * @date 2020/06/02 21 | */ 22 | public enum IdeOssNetworkType { 23 | INNER, 24 | PUBLIC, 25 | VPC 26 | } 27 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/PackageItemStatus.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.client; 2 | 3 | /** 4 | * Desc: 5 | * 6 | * @author 莫泣 7 | * @date 2024-11-29 8 | */ 9 | public enum PackageItemStatus { 10 | 11 | TERMINATION(-1), 12 | 13 | INIT(0), 14 | 15 | RUNNING(1), 16 | 17 | SUCCESS(2), 18 | 19 | FAIL(3), 20 | CANCEL(5); 21 | 22 | private final Integer code; 23 | 24 | PackageItemStatus(Integer code) { 25 | this.code = code; 26 | } 27 | 28 | public Integer getCode() { 29 | return this.code; 30 | } 31 | 32 | public static PackageItemStatus getByCode(Integer code) { 33 | for (PackageItemStatus status : PackageItemStatus.values()) { 34 | if (code.equals(status.getCode())) { 35 | return status; 36 | } 37 | } 38 | return null; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/PackageStatus.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.client; 2 | 3 | /** 4 | * Desc: 5 | * 6 | * @author 莫泣 7 | * @date 2024-11-29 8 | */ 9 | public enum PackageStatus { 10 | 11 | TERMINATION(-1), 12 | 13 | INIT(0), 14 | 15 | RUNNING(1), 16 | 17 | SUCCESS(2), 18 | 19 | FAIL(3), 20 | CANCEL(4); 21 | private final Integer code; 22 | 23 | PackageStatus(Integer code) { 24 | this.code = code; 25 | } 26 | 27 | public Integer getCode() { 28 | return this.code; 29 | } 30 | 31 | public static PackageStatus getByCode(Integer code) { 32 | for (PackageStatus status : PackageStatus.values()) { 33 | if (code.equals(status.getCode())) { 34 | return status; 35 | } 36 | } 37 | return null; 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/nodemarket/BusinessFolder.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.nodemarket; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import lombok.Data; 7 | import lombok.ToString; 8 | import lombok.experimental.Accessors; 9 | 10 | /** 11 | * @author sam.liux 12 | * @date 2020/02/26 13 | */ 14 | @Data 15 | @ToString 16 | @Accessors 17 | public class BusinessFolder { 18 | private String name; 19 | private Integer type; 20 | private Integer folderType; 21 | private Map displayName; 22 | private List nodes; 23 | private List childrens; 24 | } 25 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/nodemarket/BusinessFolderConfig.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.nodemarket; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import lombok.Data; 7 | import lombok.ToString; 8 | import lombok.experimental.Accessors; 9 | 10 | /** 11 | * @author sam.liux 12 | * @date 2020/02/26 13 | */ 14 | @Data 15 | @ToString 16 | @Accessors 17 | public class BusinessFolderConfig { 18 | private String type; 19 | private String appName; 20 | private String engine; 21 | private Map displayName; 22 | private BusinessFolder folders; 23 | private List nodes; 24 | } 25 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/nodemarket/BusinessFolderModel.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.nodemarket; 2 | 3 | import lombok.Data; 4 | import lombok.ToString; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author sam.liux 9 | * @date 2020/02/26 10 | */ 11 | @Data 12 | @ToString 13 | @Accessors 14 | public class BusinessFolderModel { 15 | private String appName; 16 | private String engineName; 17 | private Integer version; 18 | private BusinessFolderConfig configValue; 19 | } 20 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/nodemarket/BusinessFolderNode.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.nodemarket; 2 | 3 | import lombok.Data; 4 | import lombok.ToString; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author sam.liux 9 | * @date 2020/02/26 10 | */ 11 | @Data 12 | @ToString 13 | @Accessors 14 | public class BusinessFolderNode { 15 | private Integer id; 16 | private Integer index; 17 | } 18 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/PackageService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.service; 17 | 18 | /** 19 | * @author 聿剑 20 | * @date 2022/12/28 21 | */ 22 | public interface PackageService { 23 | } 24 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/Constants.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024. Aliyun.com All right reserved. This software is the 3 | * confidential and proprietary information of Aliyun.com ("Confidential 4 | * Information"). You shall not disclose such Confidential Information and shall 5 | * use it only in accordance with the terms of the license agreement you entered 6 | * into with Aliyun.com. 7 | */ 8 | 9 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler; 10 | 11 | /** 12 | * Desc: 13 | * 14 | * @author 莫泣 15 | * @date 2024-07-05 16 | */ 17 | public final class Constants { 18 | 19 | private Constants() { 20 | 21 | } 22 | 23 | /** 24 | * process or task definition first version 25 | */ 26 | public static final int VERSION_FIRST = 1; 27 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/v139/enums/DependentRelation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v1.v139.enums; 16 | 17 | /** 18 | * dependent relation: and or 19 | */ 20 | public enum DependentRelation { 21 | 22 | AND, 23 | OR; 24 | } 25 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/v139/task/Direct.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/v139/task/Direct.java -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/v139/task/sql/SqlType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v1.v139.task.sql; 16 | 17 | public enum SqlType { 18 | /** 19 | * sql type 0 query 1 NON_QUERY 20 | */ 21 | QUERY, 22 | NON_QUERY 23 | } 24 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v2/enums/DependentRelation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v2.enums; 17 | 18 | /** 19 | * dependent relation: and or 20 | */ 21 | public enum DependentRelation { 22 | 23 | AND, 24 | OR; 25 | } 26 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v2/enums/Direct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v2.enums; 17 | 18 | /** 19 | * parameter of stored procedure 20 | */ 21 | public enum Direct { 22 | /** 23 | * 0 in; 1 out; 24 | */ 25 | IN, 26 | OUT 27 | } 28 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v3/enums/DependentRelation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.enums; 17 | 18 | /** 19 | * dependent relation: and or 20 | */ 21 | public enum DependentRelation { 22 | 23 | AND, 24 | OR; 25 | } 26 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v3/enums/ResourceType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.enums; 17 | 18 | public enum ResourceType { 19 | 20 | DATASOURCE, 21 | UDF; 22 | } 23 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v3/enums/SqlType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.enums; 17 | 18 | public enum SqlType { 19 | /** 20 | * sql type 21 | * 0 query 22 | * 1 NON_QUERY 23 | */ 24 | QUERY, 25 | NON_QUERY 26 | } 27 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v3/enums/TaskRunStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.enums; 17 | 18 | public enum TaskRunStatus { 19 | 20 | SUCCESS, 21 | FAIL_AND_NEED_KILL, 22 | FAIL; 23 | } 24 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v3/v320/Location.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024. Aliyun.com All right reserved. This software is the 3 | * confidential and proprietary information of Aliyun.com ("Confidential 4 | * Information"). You shall not disclose such Confidential Information and shall 5 | * use it only in accordance with the terms of the license agreement you entered 6 | * into with Aliyun.com. 7 | */ 8 | 9 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.v320; 10 | 11 | import lombok.AllArgsConstructor; 12 | import lombok.Data; 13 | import lombok.NoArgsConstructor; 14 | 15 | /** 16 | * Desc: 17 | * 18 | * @author 莫泣 19 | * @date 2024-07-12 20 | */ 21 | @Data 22 | @NoArgsConstructor 23 | @AllArgsConstructor 24 | public class Location { 25 | 26 | private Long taskCode; 27 | 28 | private Integer x; 29 | 30 | private Integer y; 31 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v3/v320/task/condition/ConditionResult.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.v320.task.condition; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * Desc: 9 | * 10 | * @author 莫泣 11 | * @date 2024-10-23 12 | */ 13 | @Data 14 | public class ConditionResult { 15 | // node list to run when success 16 | private List successNode; 17 | 18 | // node list to run when failed 19 | private List failedNode; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v3/v320/task/condition/ConditionsParameters.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.v320.task.condition; 2 | 3 | import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.task.parameters.AbstractParameters; 4 | import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v3.v320.task.Dependence; 5 | import lombok.Data; 6 | 7 | /** 8 | * Desc: 9 | * 10 | * @author 莫泣 11 | * @date 2024-10-23 12 | */ 13 | @Data 14 | public class ConditionsParameters extends AbstractParameters { 15 | 16 | private Dependence dependence; 17 | 18 | private ConditionResult conditionResult; 19 | 20 | @Override 21 | public boolean checkParameters() { 22 | return true; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-domain/migrationx-domain-oozie/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store 39 | 40 | client/migrationx-reader/src/test/java/com/aliyun/dataworks/migrationx/reader/dolphinscheduler/DolphinSchedulerCommandAppTest.java -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *~ 3 | src/*.pyc 4 | test_dag_folder/*.pyc 5 | deploy 6 | .env/* -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023. All right reserved. This software is the confidential and proprietary information of 2 | # Aliyun.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only 3 | # in accordance with the terms of the license agreement you entered into with Aliyun.com. 4 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/common.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024, Alibaba Cloud; 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | 16 | INFO="INFO" 17 | WARN="WARN" 18 | ERROR="ERROR" 19 | 20 | function log_info() { 21 | log $INFO $@ 22 | } 23 | 24 | function log_warn() { 25 | log $WARN $@ 26 | } 27 | 28 | function log_error() { 29 | log $ERROR $@ 30 | } 31 | 32 | function log() { 33 | message=$@ 34 | echo "`date` $message" 35 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/README.md: -------------------------------------------------------------------------------- 1 | # 使用方法 2 | 3 | 1 解压airflow-exporter.tgz 4 | 5 | ```shell 6 | tar zxvf airflow-exporter.tgz 7 | ``` 8 | 9 | 2 设置PTYHONPATH 10 | 指定PYTHONPATH到airflow的python lib目录,例如 11 | 12 | ```shell 13 | export PYTHONPATH=/usr/local/lib/python3.6/site-packages 14 | # 路径只是举例子,实际export以现场环境为准 15 | export AIRFLOW_HOME=/var/lib/airflow 16 | export AIRFLOW_CONFIG=/var/run/cloudera-scm-agent/process/2531-airflow-AIRFLOW_SCHEDULER/airflow.cfg 17 | ``` 18 | 19 | 3 执行airflow任务导出 20 | 21 | ```shell 22 | cd airflow-exporter 23 | python3.6 ./parser -d /path/to/airflow/dag/floder/ -o output.json 24 | ``` 25 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/common/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/converter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/converter/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/dag_parser.py: -------------------------------------------------------------------------------- 1 | import airflow 2 | import traceback 3 | from datetime import datetime 4 | from airflow.models import DAG, DagBag, TaskInstance 5 | from airflow.utils.log.logging_mixin import LoggingMixin 6 | 7 | 8 | class DagParser(LoggingMixin): 9 | def __init__(self, dag_folder): 10 | self.dag_folder = dag_folder 11 | self.dag_bag = None 12 | pass 13 | 14 | def parse(self): 15 | try: 16 | self.dag_bag = DagBag(self.dag_folder, 17 | include_examples=False) 18 | self.log.info("Init DagBag success") 19 | except Exception as e: 20 | self.log.error(e) 21 | 22 | def get_dags(self): 23 | if self.dag_bag: 24 | return self.dag_bag.dags 25 | return None 26 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/models/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/models/dw_node.py: -------------------------------------------------------------------------------- 1 | from airflow_dag_parser.models.dw_base import DwBase, convert 2 | 3 | 4 | class DwNode(DwBase): 5 | def __init__(self): 6 | self.name = None 7 | self.type = None 8 | self.cronExpress = None 9 | self.owner = None 10 | self.startRightNow = False 11 | self.rerunable = False 12 | self.pauseSchedule = False 13 | self.code = None 14 | self.parameter = None 15 | self.folder = None 16 | self.inputContexts = [] 17 | self.outputContexts = [] 18 | self.inputs = [] 19 | self.outputs = [] 20 | self.innerNodes = [] 21 | self.ref = None 22 | self.airflowTask = {} 23 | self.exception = None 24 | 25 | @convert.register(DwNode) 26 | def _(o): 27 | return o.__dict__ 28 | 29 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/models/dw_node_io.py: -------------------------------------------------------------------------------- 1 | from airflow_dag_parser.models.dw_base import DwBase, convert 2 | 3 | class DwNodeIo(DwBase): 4 | def __init__(self): 5 | self.data = None 6 | self.refTableName = None 7 | 8 | @convert.register(DwNodeIo) 9 | def _(o): 10 | return o.__dict__ 11 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/models/dw_workflow.py: -------------------------------------------------------------------------------- 1 | from airflow_dag_parser.models.dw_base import DwBase, convert 2 | 3 | class DwWorkflow(DwBase): 4 | def __init__(self): 5 | self.name = None 6 | self.scheduled = False 7 | self.parameters = [] 8 | self.nodes = [] 9 | self.resources = [] 10 | self.functions = [] 11 | self.tables = [] 12 | self.ref = None 13 | 14 | @convert.register(DwWorkflow) 15 | def _(o): 16 | return o.__dict__ 17 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/patch/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/patch/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/patch/base_hook_patch.py: -------------------------------------------------------------------------------- 1 | import os 2 | import random 3 | from typing import Iterable 4 | 5 | from airflow.models import Connection 6 | from airflow.exceptions import AirflowException 7 | from airflow.utils.db import provide_session 8 | from airflow.utils.log.logging_mixin import LoggingMixin 9 | from airflow_dag_parser.connections import CsvConnections 10 | 11 | @classmethod 12 | def get_connections(cls, conn_id): # type: (str) -> Iterable[Connection] 13 | csv = os.environ.get("connections_csv") 14 | 15 | if not csv and not cls.connections: 16 | return None 17 | 18 | if not cls.connections: 19 | cls.connections = CsvConnections(csv) 20 | cls.connections.load() 21 | 22 | return cls.connections.get_connection(conn_id) 23 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/patch/presto_hook_patch.py: -------------------------------------------------------------------------------- 1 | from builtins import str 2 | 3 | from pyhive import presto 4 | from pyhive.exc import DatabaseError 5 | from requests.auth import HTTPBasicAuth 6 | 7 | from airflow.hooks.dbapi_hook import DbApiHook 8 | 9 | def get_conn(self): 10 | """Returns a connection object""" 11 | db = self.get_connection(self.presto_conn_id) 12 | reqkwargs = None 13 | if db.password is not None: 14 | reqkwargs = {'auth': HTTPBasicAuth(db.login, db.password)} 15 | conn = { 16 | "host": db.host, 17 | "port": db.port, 18 | "username": db.login, 19 | "source": db.extra_dejson.get('source', 'airflow'), 20 | "protocol": db.extra_dejson.get('protocol', 'http'), 21 | "catalog": db.extra_dejson.get('catalog', 'hive'), 22 | "schema": db.schema 23 | } 24 | return conn 25 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/patch/presto_to_mysql_operator_patch.py: -------------------------------------------------------------------------------- 1 | from airflow.hooks.mysql_hook import MySqlHook 2 | from airflow.hooks.presto_hook import PrestoHook 3 | from airflow.models import BaseOperator 4 | from airflow.utils.decorators import apply_defaults 5 | 6 | def execute(self, context): 7 | self.presto = PrestoHook(presto_conn_id=self.presto_conn_id) 8 | self.log.info("Extracting data from Presto: %s", self.sql) 9 | # results = presto.get_records(self.sql) 10 | 11 | self.mysql = MySqlHook(mysql_conn_id=self.mysql_conn_id) 12 | 13 | # self.log.info("Inserting rows into MySQL") 14 | # mysql.insert_rows(table=self.mysql_table, rows=results) 15 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/airflow_dag_parser/patch/spark_submit_hook_patch.py: -------------------------------------------------------------------------------- 1 | import os 2 | import subprocess 3 | import re 4 | import time 5 | 6 | from airflow.hooks.base_hook import BaseHook 7 | from airflow.exceptions import AirflowException 8 | from airflow.utils.log.logging_mixin import LoggingMixin 9 | 10 | def submit(self, application="", **kwargs): 11 | """ 12 | Remote Popen to execute the spark-submit job 13 | 14 | :param application: Submitted application, jar or py file 15 | :type application: str 16 | :param kwargs: extra arguments to Popen (see subprocess.Popen) 17 | """ 18 | self.spark_submit_cmd = self._build_spark_submit_command(application) 19 | pass 20 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/test/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023. All right reserved. This software is the confidential and proprietary information of 2 | # Aliyun.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only 3 | # in accordance with the terms of the license agreement you entered into with Aliyun.com. 4 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/configs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/configs/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/configs/config.py: -------------------------------------------------------------------------------- 1 | config={} 2 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/module/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/module/__init__.py -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/module/db_mysql_manager.py: -------------------------------------------------------------------------------- 1 | import airflow 2 | 3 | default_args_util = { 4 | 'default_args3': { 5 | 'start_date': airflow.utils.dates.days_ago(2), 6 | } 7 | } 8 | 9 | db_mysql_manager = { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-reader/src/main/python/src/test/test_dag_folder/module/default_args_util.py: -------------------------------------------------------------------------------- 1 | import airflow 2 | 3 | default_args3 = { 4 | 'start_date': airflow.utils.dates.days_ago(2) 5 | } 6 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/conf/adf-mc-transformer-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "locale": "zh_CN", 3 | "settings": { 4 | "triggers": { 5 | "trigger1": "15 30 12 * * ?", 6 | "trigger2": "0 0 0 * * 5L" 7 | }, 8 | "nodeTypeMappings": { 9 | "DatabricksNotebook": "ODPS_SQL" 10 | }, 11 | "unknownNodeType": "DIDE_SHELL" 12 | } 13 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/conf/dataworks-transformer-config-hologres-sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "SPEC", 3 | "locale": "zh_CN", 4 | "settings": { 5 | "workflow.converter.shellNodeType": "DIDE_SHELL", 6 | "workflow.converter.commandSqlAs": "DIDE_SHELL", 7 | "workflow.converter.sparkSubmitAs": "ODPS_SPARK", 8 | "workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL", 9 | "workflow.converter.mrNodeType": "ODPS_MR", 10 | "workflow.converter.target.engine.type": "Hologres", 11 | "workflow.converter.dolphinscheduler.sqlNodeTypeMapping": { 12 | "POSTGRESQL": "HOLOGRES_SQL", 13 | "MYSQL": "HOLOGRES_SQL", 14 | "HIVE": "HOLOGRES_SQL" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/conf/dataworks-transformer-config-maxcompute-sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "SPEC", 3 | "locale": "zh_CN", 4 | "skipUnSupportType": true, 5 | "transformContinueWithError": true, 6 | "specContinueWithError": true, 7 | "filterTasks": [ 8 | ], 9 | "settings": { 10 | "workflow.converter.shellNodeType": "DIDE_SHELL", 11 | "workflow.converter.commandSqlAs": "DIDE_SHELL", 12 | "workflow.converter.sparkSubmitAs": "ODPS_SPARK", 13 | "workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL", 14 | "workflow.converter.mrNodeType": "ODPS_MR", 15 | "workflow.converter.target.engine.type": "MaxCompute", 16 | "workflow.converter.dolphinscheduler.sqlNodeTypeMapping": { 17 | "POSTGRESQL": "ODPS_SQL", 18 | "MYSQL": "ODPS_SQL", 19 | "HIVE": "ODPS_SQL" 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/conf/dataworks-transformer-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "SPEC", 3 | "locale": "zh_CN", 4 | "skipUnSupportType": true, 5 | "transformContinueWithError": true, 6 | "specContinueWithError": true, 7 | "filterTasks": [ 8 | ], 9 | "settings": { 10 | "workflow.converter.shellNodeType": "DIDE_SHELL", 11 | "workflow.converter.commandSqlAs": "EMR_HIVE", 12 | "workflow.converter.sparkSubmitAs": "EMR_SPARK", 13 | "workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL", 14 | "workflow.converter.mrNodeType": "EMR_MR", 15 | "workflow.converter.target.engine.type": "EMR", 16 | "workflow.converter.dolphinscheduler.sqlNodeTypeMapping": { 17 | "POSTGRESQL": "EMR_HIVE", 18 | "MYSQL": "EMR_HIVE", 19 | "HIVE": "EMR_HIVE", 20 | "CLICKHOUSE": "CLICK_SQL" 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/conf/dolphinschedulerV3-dataworks-transformer-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-transformer/src/main/conf/dolphinschedulerV3-dataworks-transformer-config.json -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/conf/flowspec-airflowV2-transformer-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "workflowPathPrefix": "Airflow导入/", 3 | "typeMapping": { 4 | "EmptyOperator": "VIRTUAL", 5 | "DummyOperator": "VIRTUAL", 6 | "ExternalTaskSensor": "VIRTUAL", 7 | "BashOperator": "DIDE_SHELL", 8 | "HiveToMySqlTransfer": "DI", 9 | "PrestoToMySqlTransfer": "DI", 10 | "PythonOperator": "PYTHON", 11 | "HiveOperator": "EMR_HIVE", 12 | "SqoopOperator": "EMR_SQOOP", 13 | "SparkSqlOperator": "EMR_SPARK_SQL", 14 | "SparkSubmitOperator": "EMR_SPARK", 15 | "SQLExecuteQueryOperator": "MySQL", 16 | "PostgresOperator": "Postgresql", 17 | "MySqlOperator": "MySQL", 18 | "default": "PYTHON" 19 | }, 20 | "settings": { 21 | "workflow.converter.target.schedule.resGroupIdentifier": "" 22 | } 23 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/conf/flowspec-dolphinschedulerV3-transformer-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-transformer/src/main/conf/flowspec-dolphinschedulerV3-transformer-config.json -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/java/com/aliyun/dataworks/migrationx/transformer/core/checkpoint/StoreWriter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.transformer.core.checkpoint; 17 | 18 | import java.io.IOException; 19 | 20 | public interface StoreWriter { 21 | 22 | void writeLine(String data, String processName, String taskName) throws IOException; 23 | } 24 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/java/com/aliyun/dataworks/migrationx/transformer/core/sqoop/InvalidOptionsException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.migrationx.transformer.core.sqoop; 17 | 18 | public class InvalidOptionsException extends RuntimeException { 19 | 20 | public InvalidOptionsException(String msg) { 21 | } 22 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/java/com/aliyun/dataworks/migrationx/transformer/flowspec/transformer/AbstractTransformer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024. Aliyun.com All right reserved. This software is the 3 | * confidential and proprietary information of Aliyun.com ("Confidential 4 | * Information"). You shall not disclose such Confidential Information and shall 5 | * use it only in accordance with the terms of the license agreement you entered 6 | * into with Aliyun.com. 7 | */ 8 | 9 | package com.aliyun.dataworks.migrationx.transformer.flowspec.transformer; 10 | 11 | /** 12 | * Desc: 13 | * 14 | * @author 莫泣 15 | * @date 2024-06-27 16 | */ 17 | public abstract class AbstractTransformer { 18 | 19 | protected String configPath; 20 | 21 | protected String sourcePath; 22 | 23 | protected String targetPath; 24 | 25 | /** 26 | * transform entry point 27 | * 28 | * @throws Exception exception 29 | */ 30 | public abstract void transform() throws Exception; 31 | } 32 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/main/python/post_handler_example.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import warnings 3 | 4 | import json 5 | 6 | warnings.filterwarnings('ignore') 7 | 8 | if __name__ == '__main__': 9 | """ 10 | content = sys.argv[1] 11 | args = sys.argv[2] 12 | args: 13 | """ 14 | content = sys.argv[1] 15 | params = sys.argv[2] 16 | content = content + "\n add something" 17 | # output to invoker 18 | # need a json with key _code_ 19 | # a json with _params_ if add params 20 | updated_content = {'_code_': content} 21 | print(json.dumps(updated_content)) 22 | updated_params = {'_params_': 'key1=value1,key2=value2'} 23 | print(json.dumps(updated_params)) 24 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/java/com/aliyun/dataworks/migrationx/transformer/adf/AdfTransformerTest.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.transformer.adf; 2 | 3 | import com.aliyun.dataworks.migrationx.transformer.dataworks.apps.DataWorksAdfTransformerApp; 4 | import org.junit.Ignore; 5 | import org.junit.Test; 6 | @Ignore 7 | public class AdfTransformerTest { 8 | 9 | @Test 10 | public void test1() { 11 | DataWorksAdfTransformerApp transformerApp = new DataWorksAdfTransformerApp(); 12 | String[] args = new String[]{ 13 | "-c", "/Users/xichen/Documents/repos/alibabacloud-dataworks-tool-migration/client/migrationx/migrationx-transformer/src/main/conf/adf-mc-transformer-config.json", 14 | "-s", "/Users/xichen/Documents/repos/alibabacloud-dataworks-tool-migration/client/temp/adf/.tmp/chenxi-df/", 15 | "-t", "/Users/xichen/Documents/repos/alibabacloud-dataworks-tool-migration/client/temp/package/" 16 | }; 17 | transformerApp.run(args); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/airflow2/config/mappings.json: -------------------------------------------------------------------------------- 1 | { 2 | "workflowPathPrefix": "AirWorksDemo/v2_2_4/20241120/", 3 | "typeMapping": { 4 | "EmptyOperator": "VIRTUAL", 5 | "DummyOperator": "VIRTUAL", 6 | "ExternalTaskSensor": "VIRTUAL", 7 | "BashOperator": "SSH", 8 | "HiveToMySqlTransfer": "DI", 9 | "PrestoToMySqlTransfer": "DI", 10 | "PythonOperator": "PYODPS3", 11 | "BranchPythonOperator": "CONTROLLER_BRANCH", 12 | "HiveOperator": "ODPS_SQL", 13 | "SqoopOperator": "EMR_SQOOP", 14 | "SparkSqlOperator": "EMR_SPARK_SQL", 15 | "SparkSubmitOperator": "EMR_SPARK", 16 | "SQLExecuteQueryOperator": "MySQL", 17 | "PostgresOperator": "Postgresql", 18 | "MySqlOperator": "MySQL", 19 | "default": "PYTHON" 20 | }, 21 | "settings": { 22 | "workflow.converter.target.schedule.resGroupIdentifier": "Serverless_res_group_524257424564736_674524206094912", 23 | "bashoperator.content.adaptive.conversion": "true" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/conf/transformer.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "SPEC", 3 | "locale": "zh_CN", 4 | "skipUnSupportType": true, 5 | "specContinueWithError": true, 6 | "settings": { 7 | "workflow.converter.shellNodeType": "ODPS_SHELL", 8 | "workflow.converter.commandSqlAs": "ODPS_SQL", 9 | "workflow.converter.sparkSubmitAs": "ODPS_SPARK", 10 | "workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL", 11 | "workflow.converter.mrNodeType": "ODPS_MR", 12 | "workflow.converter.target.engine.type": "MaxCompute", 13 | "workflow.converter.dolphinscheduler.sqlNodeTypeMapping": { 14 | "POSTGRESQL": "POSTGRESQL", 15 | "MYSQL": "MYSQL" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/conf/transformer-spec-odps.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "SPEC", 3 | "locale": "zh_CN", 4 | "skipUnSupportType": true, 5 | "transformContinueWithError": true, 6 | "specContinueWithError": true, 7 | "settings": { 8 | "workflow.converter.shellNodeType": "DIDE_SHELL", 9 | "workflow.converter.commandSqlAs": "ODPS_SQL", 10 | "workflow.converter.sparkSubmitAs": "ODPS_SPARK", 11 | "workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL", 12 | "workflow.converter.mrNodeType": "ODPS_MR", 13 | "workflow.converter.target.engine.type": "ODPS", 14 | "workflow.converter.dolphinscheduler.sqlNodeTypeMapping": { 15 | "POSTGRESQL": "POSTGRESQL", 16 | "MYSQL": "MYSQL" 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/conf/transformer-workflow-odps.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "WORKFLOW", 3 | "locale": "zh_CN", 4 | "skipUnSupportType": true, 5 | "transformContinueWithError": true, 6 | "specContinueWithError": true, 7 | "settings": { 8 | "workflow.converter.shellNodeType": "DIDE_SHELL", 9 | "workflow.converter.commandSqlAs": "ODPS_SQL", 10 | "workflow.converter.sparkSubmitAs": "ODPS_SPARK", 11 | "workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL", 12 | "workflow.converter.mrNodeType": "ODPS_MR", 13 | "workflow.converter.target.engine.type": "ODPS", 14 | "workflow.converter.dolphinscheduler.sqlNodeTypeMapping": { 15 | "POSTGRESQL": "POSTGRESQL", 16 | "MYSQL": "MYSQL" 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v1/all/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v1/all/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v1/all/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 2, 4 | "userId": 1, 5 | "name": "wl_test4", 6 | "description": "", 7 | "createTime": "2025-01-08T13:48:52.240+0800", 8 | "updateTime": "2025-01-08T13:48:52.240+0800", 9 | "perm": 0, 10 | "defCount": 0, 11 | "instRunningCount": 0 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v1/all/resource/resources.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v1/all/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v2/all/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v2/all/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.5" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v2/all/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 4, 4 | "userId": 1, 5 | "code": 16230615659328, 6 | "name": "wl_test3", 7 | "description": "", 8 | "createTime": "2025-01-07T14:41:24.838+0800", 9 | "updateTime": "2025-01-07T14:41:24.838+0800", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v2/all/resource/resources.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v2/all/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/dependent/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "userName": "admin", 6 | "name": "pg1", 7 | "note": "", 8 | "type": "POSTGRESQL", 9 | "connectionParams": "{\"user\":\"feilun\",\"password\":\"******\",\"address\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432\",\"database\":\"test1234\",\"jdbcUrl\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432/test1234\",\"driverClassName\":\"org.postgresql.Driver\",\"validationQuery\":\"select version()\"}", 10 | "createTime": "2024-12-19 06:41:27", 11 | "updateTime": "2024-12-19 06:41:27" 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/dependent/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.1.5" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/dependent/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 2, 4 | "userId": 1, 5 | "code": 15866588694784, 6 | "name": "test2", 7 | "description": "", 8 | "createTime": "2024-12-05 08:42:04", 9 | "updateTime": "2024-12-05 08:42:04", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/dependent/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/mr/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/mr/datasource/datasource_page_1.json -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/mr/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.2.0" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/mr/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "code": 13942964612128, 6 | "name": "ff", 7 | "description": "", 8 | "createTime": "2024-06-14 18:10:11", 9 | "updateTime": "2024-06-14 18:10:11", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/mr/resource/resources.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 0, 4 | "pid": "dolphinscheduler/default/resources/", 5 | "name": "hadoop-mapreduce-examples-3.2.1.jar", 6 | "fullName": "dolphinscheduler/default/resources/hadoop-mapreduce-examples-3.2.1.jar", 7 | "children": [], 8 | "type": "FILE", 9 | "idValue": "0_0", 10 | "dirctory": false 11 | }, 12 | { 13 | "id": 0, 14 | "pid": "dolphinscheduler/default/resources/", 15 | "name": "original-spark-examples_2.12-3.2.0.jar", 16 | "fullName": "dolphinscheduler/default/resources/original-spark-examples_2.12-3.2.0.jar", 17 | "children": [], 18 | "type": "FILE", 19 | "idValue": "0_0", 20 | "dirctory": false 21 | } 22 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/mr/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/python1/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "userName": "admin", 6 | "name": "pg1", 7 | "note": "pg1 test", 8 | "type": "POSTGRESQL", 9 | "connectionParams": "{\"user\":\"feilun\",\"password\":\"******\",\"address\":\"jdbc:postgresql://pgm-2ze5n0y3qv3v3wr4fo.pg.rds.aliyuncs.com:5432\",\"database\":\"test1\",\"jdbcUrl\":\"jdbc:postgresql://pgm-2ze5n0y3qv3v3wr4fo.pg.rds.aliyuncs.com:5432/test1\",\"driverClassName\":\"org.postgresql.Driver\",\"validationQuery\":\"select version()\"}", 10 | "createTime": "2024-05-20 20:10:54", 11 | "updateTime": "2024-05-20 20:10:54" 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/python1/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.0.5" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/python1/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "code": 13666515015680, 6 | "name": "proj1", 7 | "description": "", 8 | "createTime": "2024-05-20T18:14:08.559+0800", 9 | "updateTime": "2024-05-20T18:14:08.559+0800", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/python1/resource/resources.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 5, 4 | "pid": -1, 5 | "name": "udf-dir1", 6 | "fullName": "udf-dir1", 7 | "description": "ddd", 8 | "children": [ 9 | { 10 | "id": 7, 11 | "pid": 5, 12 | "name": "HiveUDFs-0.0.1-SNAPSHOT.jar", 13 | "fullName": "udf-dir1HiveUDFs-0.0.1-SNAPSHOT.jar", 14 | "description": "", 15 | "children": [], 16 | "type": "UDF", 17 | "idValue": "7_0", 18 | "dirctory": false 19 | }, 20 | { 21 | "id": 6, 22 | "pid": 5, 23 | "name": "commons-cli-1.4.jar", 24 | "fullName": "udf-dir1/commons-cli-1.4.jar", 25 | "description": "", 26 | "children": [], 27 | "type": "UDF", 28 | "idValue": "6_0", 29 | "dirctory": false 30 | } 31 | ], 32 | "type": "UDF", 33 | "idValue": "5_1", 34 | "dirctory": true 35 | } 36 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/python1/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "funcName": "Strip", 6 | "className": "org.hardik.letsdobigdata.Strip", 7 | "description": "", 8 | "resourceId": 7, 9 | "resourceName": "udf-dir1/HiveUDFs-0.0.1-SNAPSHOT.jar", 10 | "type": "HIVE", 11 | "createTime": "2024-05-20 20:55:35", 12 | "updateTime": "2024-05-20 20:55:35" 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/shell/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "userName": "admin", 6 | "name": "pg1", 7 | "note": "", 8 | "type": "POSTGRESQL", 9 | "connectionParams": "{\"user\":\"feilun\",\"password\":\"******\",\"address\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432\",\"database\":\"test1234\",\"jdbcUrl\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432/test1234\",\"driverClassName\":\"org.postgresql.Driver\",\"validationQuery\":\"select version()\"}", 10 | "createTime": "2024-12-19 06:41:27", 11 | "updateTime": "2024-12-19 06:41:27" 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/shell/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.1.5" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/shell/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 2, 4 | "userId": 1, 5 | "code": 15866588694784, 6 | "name": "test2", 7 | "description": "", 8 | "createTime": "2024-12-05 08:42:04", 9 | "updateTime": "2024-12-05 08:42:04", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/shell/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/spark/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "userName": "admin", 6 | "name": "pg1", 7 | "note": "pg1 test", 8 | "type": "POSTGRESQL", 9 | "connectionParams": "{\"user\":\"feilun\",\"password\":\"******\",\"address\":\"jdbc:postgresql://pgm-2ze5n0y3qv3v3wr4fo.pg.rds.aliyuncs.com:5432\",\"database\":\"test1\",\"jdbcUrl\":\"jdbc:postgresql://pgm-2ze5n0y3qv3v3wr4fo.pg.rds.aliyuncs.com:5432/test1\",\"driverClassName\":\"org.postgresql.Driver\",\"validationQuery\":\"select version()\"}", 10 | "createTime": "2024-05-20 20:10:54", 11 | "updateTime": "2024-05-20 20:10:54" 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/spark/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.0.5" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/spark/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "code": 13666515015680, 6 | "name": "proj1", 7 | "description": "", 8 | "createTime": "2024-05-20T18:14:08.559+0800", 9 | "updateTime": "2024-05-20T18:14:08.559+0800", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/spark/resource/resources.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 5, 4 | "pid": -1, 5 | "name": "udf-dir1", 6 | "fullName": "udf-dir1", 7 | "description": "ddd", 8 | "children": [ 9 | { 10 | "id": 7, 11 | "pid": 5, 12 | "name": "HiveUDFs-0.0.1-SNAPSHOT.jar", 13 | "fullName": "udf-dir1HiveUDFs-0.0.1-SNAPSHOT.jar", 14 | "description": "", 15 | "children": [], 16 | "type": "UDF", 17 | "idValue": "7_0", 18 | "dirctory": false 19 | }, 20 | { 21 | "id": 6, 22 | "pid": 5, 23 | "name": "commons-cli-1.4.jar", 24 | "fullName": "udf-dir1/commons-cli-1.4.jar", 25 | "description": "", 26 | "children": [], 27 | "type": "UDF", 28 | "idValue": "6_0", 29 | "dirctory": false 30 | } 31 | ], 32 | "type": "UDF", 33 | "idValue": "5_1", 34 | "dirctory": true 35 | } 36 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/spark/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "funcName": "Strip", 6 | "className": "org.hardik.letsdobigdata.Strip", 7 | "description": "", 8 | "resourceId": 7, 9 | "resourceName": "udf-dir1/HiveUDFs-0.0.1-SNAPSHOT.jar", 10 | "type": "HIVE", 11 | "createTime": "2024-05-20 20:55:35", 12 | "updateTime": "2024-05-20 20:55:35" 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sql/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.2.0" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sql/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "code": 13942964612128, 6 | "name": "ff", 7 | "description": "", 8 | "createTime": "2024-06-14 18:10:11", 9 | "updateTime": "2024-06-14 18:10:11", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | }, 14 | { 15 | "id": 2, 16 | "userId": 1, 17 | "code": 14149481615008, 18 | "name": "wl_dolphin3", 19 | "description": "", 20 | "createTime": "2024-07-03 10:20:25", 21 | "updateTime": "2024-07-03 10:20:25", 22 | "perm": 0, 23 | "defCount": 0, 24 | "instRunningCount": 0 25 | }, 26 | { 27 | "id": 3, 28 | "userId": 1, 29 | "code": 14206985639328, 30 | "name": "wl_test111", 31 | "description": "", 32 | "createTime": "2024-07-08 15:07:55", 33 | "updateTime": "2024-07-08 15:07:55", 34 | "perm": 0, 35 | "defCount": 0, 36 | "instRunningCount": 0 37 | } 38 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sql/resource/resources.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 0, 4 | "pid": "dolphinscheduler/default/resources/", 5 | "name": "hadoop-mapreduce-examples-3.2.1.jar", 6 | "fullName": "dolphinscheduler/default/resources/hadoop-mapreduce-examples-3.2.1.jar", 7 | "children": [], 8 | "type": "FILE", 9 | "idValue": "0_0", 10 | "dirctory": false 11 | }, 12 | { 13 | "id": 0, 14 | "pid": "dolphinscheduler/default/resources/", 15 | "name": "original-spark-examples_2.12-3.2.0.jar", 16 | "fullName": "dolphinscheduler/default/resources/original-spark-examples_2.12-3.2.0.jar", 17 | "children": [], 18 | "type": "FILE", 19 | "idValue": "0_0", 20 | "dirctory": false 21 | } 22 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sql/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sqoop/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.2.0" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sqoop/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "code": 13942964612128, 6 | "name": "ff", 7 | "description": "", 8 | "createTime": "2024-06-14 18:10:11", 9 | "updateTime": "2024-06-14 18:10:11", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | }, 14 | { 15 | "id": 2, 16 | "userId": 1, 17 | "code": 14149481615008, 18 | "name": "wl_dolphin3", 19 | "description": "", 20 | "createTime": "2024-07-03 10:20:25", 21 | "updateTime": "2024-07-03 10:20:25", 22 | "perm": 0, 23 | "defCount": 0, 24 | "instRunningCount": 0 25 | }, 26 | { 27 | "id": 3, 28 | "userId": 1, 29 | "code": 14206985639328, 30 | "name": "wl_test111", 31 | "description": "", 32 | "createTime": "2024-07-08 15:07:55", 33 | "updateTime": "2024-07-08 15:07:55", 34 | "perm": 0, 35 | "defCount": 0, 36 | "instRunningCount": 0 37 | } 38 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sqoop/resource/resources.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 0, 4 | "pid": "dolphinscheduler/default/resources/", 5 | "name": "hadoop-mapreduce-examples-3.2.1.jar", 6 | "fullName": "dolphinscheduler/default/resources/hadoop-mapreduce-examples-3.2.1.jar", 7 | "children": [], 8 | "type": "FILE", 9 | "idValue": "0_0", 10 | "dirctory": false 11 | }, 12 | { 13 | "id": 0, 14 | "pid": "dolphinscheduler/default/resources/", 15 | "name": "original-spark-examples_2.12-3.2.0.jar", 16 | "fullName": "dolphinscheduler/default/resources/original-spark-examples_2.12-3.2.0.jar", 17 | "children": [], 18 | "type": "FILE", 19 | "idValue": "0_0", 20 | "dirctory": false 21 | } 22 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/sqoop/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/subprocess1/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "userName": "admin", 6 | "name": "pg1", 7 | "note": "", 8 | "type": "POSTGRESQL", 9 | "connectionParams": "{\"user\":\"feilun\",\"password\":\"******\",\"address\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432\",\"database\":\"test1234\",\"jdbcUrl\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432/test1234\",\"driverClassName\":\"org.postgresql.Driver\",\"validationQuery\":\"select version()\"}", 10 | "createTime": "2024-12-19 06:41:27", 11 | "updateTime": "2024-12-19 06:41:27" 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/subprocess1/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.1.5" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/subprocess1/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 2, 4 | "userId": 1, 5 | "code": 15866588694784, 6 | "name": "test2", 7 | "description": "", 8 | "createTime": "2024-12-05 08:42:04", 9 | "updateTime": "2024-12-05 08:42:04", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/subprocess1/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/switch/datasource/datasource_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "userName": "admin", 6 | "name": "pg1", 7 | "note": "", 8 | "type": "POSTGRESQL", 9 | "connectionParams": "{\"user\":\"feilun\",\"password\":\"******\",\"address\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432\",\"database\":\"test1234\",\"jdbcUrl\":\"jdbc:postgresql://pgm-2ze601n0c1h5ks05go.pg.rds.aliyuncs.com:5432/test1234\",\"driverClassName\":\"org.postgresql.Driver\",\"validationQuery\":\"select version()\"}", 10 | "createTime": "2024-12-19 06:41:27", 11 | "updateTime": "2024-12-19 06:41:27" 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/switch/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.1.5" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/switch/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 2, 4 | "userId": 1, 5 | "code": 15866588694784, 6 | "name": "test2", 7 | "description": "", 8 | "createTime": "2024-12-05 08:42:04", 9 | "updateTime": "2024-12-05 08:42:04", 10 | "perm": 0, 11 | "defCount": 0, 12 | "instRunningCount": 0 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphin/v3/switch/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphinscheduler/v1_package_0/package_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.3.9" 3 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphinscheduler/v1_package_0/projects.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "name": "project_a", 6 | "description": "", 7 | "createTime": "2022-10-13T16:47:05.428+0800", 8 | "updateTime": "2022-10-13T16:47:05.428+0800", 9 | "perm": 0, 10 | "defCount": 0, 11 | "instRunningCount": 0 12 | } 13 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/dolphinscheduler/v1_package_0/udfFunction/udf_function_page_1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "userId": 1, 5 | "funcName": "test_udf_0", 6 | "className": "test.Main", 7 | "description": "", 8 | "resourceId": 1, 9 | "resourceName": "/aliyun-java-sdk-dataworks-public-1.0.0.jar", 10 | "type": "HIVE", 11 | "createTime": "2022-10-18T17:59:06.286+0800", 12 | "updateTime": "2022-10-18T17:59:06.286+0800" 13 | } 14 | ] -------------------------------------------------------------------------------- /client/migrationx/migrationx-transformer/src/test/resources/json/adf/conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "locale": "zh_CN", 3 | "settings": { 4 | "triggers": { 5 | "trigger1": "15 30 12 * * ?", 6 | "trigger2": "0 0 0 * * 5L" 7 | }, 8 | "nodeTypeMappings": { 9 | }, 10 | "unknownNodeType": "DIDE_SHELL" 11 | } 12 | } -------------------------------------------------------------------------------- /client/migrationx/migrationx-writer/src/main/java/com/aliyun/dataworks/migrationx/writer/dataworks/model/AsyncJobStatus.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.migrationx.writer.dataworks.model; 2 | 3 | import com.aliyun.dataworks.common.spec.domain.interfaces.LabelEnum; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | 7 | /** 8 | * Desc: 9 | * 10 | * @author 莫泣 11 | * @date 2024-10-17 12 | */ 13 | @Getter 14 | @AllArgsConstructor 15 | public enum AsyncJobStatus implements LabelEnum { 16 | 17 | /** 18 | * 运行中 19 | */ 20 | RUNNING("Running", false), 21 | 22 | /** 23 | * 成功 24 | */ 25 | SUCCESS("Success", true), 26 | 27 | /** 28 | * 失败 29 | */ 30 | FAIL("Fail", true), 31 | 32 | /** 33 | * 取消 34 | */ 35 | CANCEL("Cancel", true), 36 | ; 37 | private final String label; 38 | 39 | private final Boolean completed; 40 | } 41 | -------------------------------------------------------------------------------- /client/migrationx/migrationx-writer/src/test/resources/airflow2/workflows/sample.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /client/migrationx/src/main/bin/local.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import common 4 | 5 | common.run_command("writer", "com.aliyun.dataworks.migrationx.local.DataWorksSpecLocalCommandApp") 6 | -------------------------------------------------------------------------------- /client/migrationx/src/main/bin/reader.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import common 4 | 5 | common.run_command("reader") 6 | -------------------------------------------------------------------------------- /client/migrationx/src/main/bin/transformer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import common 4 | 5 | common.run_command("transformer") 6 | -------------------------------------------------------------------------------- /client/migrationx/src/main/bin/writer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import common 4 | 5 | common.run_command("writer") 6 | -------------------------------------------------------------------------------- /client/migrationx/src/main/conf/airworks.json: -------------------------------------------------------------------------------- 1 | { 2 | "transformer": { 3 | "name": "airflow_to_flowspec", 4 | "params": [ 5 | "-a airflowv2_to_dataworks", 6 | "-d ${AIRFLOW_V2_DAG_FOLDER}", 7 | "-o ${FLOWSPECT_FOLDER_FOR_AIRFLOW_DAGS}", 8 | "-m ${MIGRATIONX_HOME}/conf/flowspec-airflowV2-transformer-config.json" 9 | ] 10 | }, 11 | "writer": { 12 | "name": "flowspec_to_dataworks", 13 | "params": [ 14 | "-a flowspec_to_dataworks", 15 | "-e dataworks.${ALIYUN_REGION_ID}.aliyuncs.com", 16 | "-i ${ALIYUN_ACCESS_KEY_ID}", 17 | "-k ${ALIYUN_ACCESS_KEY_SECRET}", 18 | "-p ${ALIYUN_DATAWORKS_WORKSPACE_ID}", 19 | "-r ${ALIYUN_REGION_ID}", 20 | "-f ${FLOWSPECT_FOLDER_FOR_AIRFLOW_DAGS}" 21 | ] 22 | } 23 | } -------------------------------------------------------------------------------- /client/migrationx/src/test/java/com/aliyun/dataworks/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /docs/images/architecture-cn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/docs/images/architecture-cn.jpg -------------------------------------------------------------------------------- /docs/images/architecture-en.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/docs/images/architecture-en.jpg -------------------------------------------------------------------------------- /docs/images/architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/docs/images/architecture.jpg -------------------------------------------------------------------------------- /docs/images/spec/dw_spec_package_demo-en.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/docs/images/spec/dw_spec_package_demo-en.jpg -------------------------------------------------------------------------------- /docs/images/spec/dw_spec_package_demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/docs/images/spec/dw_spec_package_demo.jpg -------------------------------------------------------------------------------- /docs/images/spec/samples/real_case.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/docs/images/spec/samples/real_case.jpg -------------------------------------------------------------------------------- /docs/images/spec/samples/simple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/dataworks-spec/b68829506ad2c0d634e6a81b9516a44a509b1c51/docs/images/spec/samples/simple.jpg -------------------------------------------------------------------------------- /schema/docs/artifact-artifactnodeoutput-properties-output.md: -------------------------------------------------------------------------------- 1 | # Output Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/artifact.schema.json#/nodeOutput/properties/output 5 | ``` 6 | 7 | 节点调度输出标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [artifact.schema.json\*](../../out/artifact.schema.json "open original schema") | 12 | 13 | ## output Type 14 | 15 | `string` ([Output](artifact-artifactnodeoutput-properties-output.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/artifact-artifacttable-properties-guid.md: -------------------------------------------------------------------------------- 1 | # Guid Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/artifact.schema.json#/table/properties/guid 5 | ``` 6 | 7 | 产出表唯一标识符 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [artifact.schema.json\*](../../out/artifact.schema.json "open original schema") | 12 | 13 | ## guid Type 14 | 15 | `string` ([Guid](artifact-artifacttable-properties-guid.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/artifact-artifactvariable-properties-id.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Artifact Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/artifact.schema.json#/variable/properties/id 5 | ``` 6 | 7 | 唯一标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [artifact.schema.json\*](../../out/artifact.schema.json "open original schema") | 12 | 13 | ## id Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/artifact-artifactvariable-properties-name.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Artifact Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/artifact.schema.json#/variable/properties/name 5 | ``` 6 | 7 | 变量名 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [artifact.schema.json\*](../../out/artifact.schema.json "open original schema") | 12 | 13 | ## name Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/artifact-artifactvariable-properties-scope-metaenum.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Artifact Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/artifact.schema.json#/variable/properties/scope/meta:enum 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [artifact.schema.json\*](../../out/artifact.schema.json "open original schema") | 12 | 13 | ## meta:enum Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/artifact-artifactvariable-properties-type-metaenum.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Artifact Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/artifact.schema.json#/variable/properties/type/meta:enum 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [artifact.schema.json\*](../../out/artifact.schema.json "open original schema") | 12 | 13 | ## meta:enum Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/artifact-properties-artifacttype-metaenum.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Artifact Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/artifact.schema.json#/properties/artifactType/meta:enum 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [artifact.schema.json\*](../../out/artifact.schema.json "open original schema") | 12 | 13 | ## meta:enum Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/fileresource-properties-id.md: -------------------------------------------------------------------------------- 1 | # Untitled string in FileResource Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/fileResource.schema.json#/properties/id 5 | ``` 6 | 7 | 唯一标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [fileResource.schema.json\*](../../out/fileResource.schema.json "open original schema") | 12 | 13 | ## id Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/fileresource-properties-name.md: -------------------------------------------------------------------------------- 1 | # Untitled string in FileResource Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/fileResource.schema.json#/properties/name 5 | ``` 6 | 7 | 函数名称 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [fileResource.schema.json\*](../../out/fileResource.schema.json "open original schema") | 12 | 13 | ## name Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/flow-if-properties-kind.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/if/properties/kind 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## kind Type 14 | 15 | unknown 16 | 17 | ## kind Constraints 18 | 19 | **constant**: the value of this property must be equal to: 20 | 21 | ```json 22 | "CycleWorkflow" 23 | ``` 24 | -------------------------------------------------------------------------------- /schema/docs/flow-if-properties.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/if/properties 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## properties Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowmetedata-properties-description.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/metadata/properties/description 5 | ``` 6 | 7 | 字段说明 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## description Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowmetedata-properties-owner.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/metadata/properties/owner 5 | ``` 6 | 7 | 责任人 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## owner Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecartifacts.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.Artifacts Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/artifacts 5 | ``` 6 | 7 | 定义工作流的变量 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## artifacts Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecedges-flowworkflowspecedge-properties-nodeid.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/flow/items/properties/nodeId 5 | ``` 6 | 7 | 节点的唯一标识符,全局唯一,用于标识工作流中的节点 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## nodeId Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecfileresources.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.FileResources Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/fileResources 5 | ``` 6 | 7 | 文件资源列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## fileResources Type 14 | 15 | `object[]` ([FileResource](fileresource.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecfunctions.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.Functions Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/functions 5 | ``` 6 | 7 | 函数定义列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## functions Type 14 | 15 | `object[]` ([Function](function.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecnodes.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.Nodes Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/nodes 5 | ``` 6 | 7 | 任务节点列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## nodes Type 14 | 15 | `object[]` ([Node](node.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecruntimeresources.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.RuntimeResources Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/runtimeResources 5 | ``` 6 | 7 | 运行时资源定义列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## runtimeResources Type 14 | 15 | `object[]` ([RuntimeResource](runtimeresource.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecscripts.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.Scripts Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/scripts 5 | ``` 6 | 7 | 定义工作流的变量 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## scripts Type 14 | 15 | `object[]` ([Script](script.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-flowworkflowspec-properties-flowworkflowspecvariables.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.Variables Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/spec/properties/variables 5 | ``` 6 | 7 | 定义工作流的变量 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## variables Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-kind-metaenum.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/kind/meta:enum 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## meta:enum Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/flow-properties-version.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/properties/version 5 | ``` 6 | 7 | 版本号 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## version Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/flow-then-properties-spec-properties-flowworkflowspectriggers.md: -------------------------------------------------------------------------------- 1 | # Flow\.WorkflowSpec.Triggers Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/then/properties/spec/properties/triggers 5 | ``` 6 | 7 | 周期调度定义列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## triggers Type 14 | 15 | `object[]` ([Trigger](trigger.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/flow-then-properties-spec-properties.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/then/properties/spec/properties 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## properties Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/flow-then-properties.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Flow Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/flow.schema.json#/then/properties 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [flow.schema.json\*](../../out/flow.schema.json "open original schema") | 12 | 13 | ## properties Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/function-properties-id.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Function Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/id 5 | ``` 6 | 7 | 唯一标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [function.schema.json\*](../../out/function.schema.json "open original schema") | 12 | 13 | ## id Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/function-properties-name.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Function Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/name 5 | ``` 6 | 7 | 函数名称 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------ | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [function.schema.json\*](../../out/function.schema.json "open original schema") | 12 | 13 | ## name Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-id.md: -------------------------------------------------------------------------------- 1 | # Id Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/id 5 | ``` 6 | 7 | 节点在 Spec 中的唯一 Id 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## id Type 14 | 15 | `string` ([Id](node-properties-id.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-instancemode-metaenum.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Node Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/instanceMode/meta:enum 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## meta:enum Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-name.md: -------------------------------------------------------------------------------- 1 | # Name Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/name 5 | ``` 6 | 7 | 节点名 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## name Type 14 | 15 | `string` ([Name](node-properties-name.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodefileresources.md: -------------------------------------------------------------------------------- 1 | # Node.FileResources Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/fileResources 5 | ``` 6 | 7 | 节点所需的文件资源定义或者引用 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## fileResources Type 14 | 15 | `object[]` ([FileResource](fileresource.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodefunctions.md: -------------------------------------------------------------------------------- 1 | # Node.Functions Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/functions 5 | ``` 6 | 7 | 节点所需的函数定义或者引用 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## functions Type 14 | 15 | `object[]` ([Function](function.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodeinputartifact-properties-nodeinputartifactnodeoutputs.md: -------------------------------------------------------------------------------- 1 | # Node.InputArtifact.NodeOutputs Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/inputs/properties/nodeOutputs 5 | ``` 6 | 7 | 节点使用的上游节点的预定义输出列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## nodeOutputs Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodeinputartifact-properties-nodeinputartifacttables.md: -------------------------------------------------------------------------------- 1 | # Node.InputArtifact.Tables Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/inputs/properties/tables 5 | ``` 6 | 7 | 节点使用的上游产出表列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## tables Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodeinputartifact-properties-nodeinputartifactvariables.md: -------------------------------------------------------------------------------- 1 | # Node.InputArtifact.Variables Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/inputs/properties/variables 5 | ``` 6 | 7 | 节点依赖的变量Variable列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## variables Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodeoutputartifact-properties-nodeoutputartifactnodeoutputs.md: -------------------------------------------------------------------------------- 1 | # Node.OutputArtifact.NodeOutputs Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/outputs/properties/nodeOutputs 5 | ``` 6 | 7 | 节点使用的上游节点的预定义输出列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## nodeOutputs Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodeoutputartifact-properties-nodeoutputartifacttables.md: -------------------------------------------------------------------------------- 1 | # Node.OutputArtifact.Tables Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/outputs/properties/tables 5 | ``` 6 | 7 | 节点使用的上游产出表列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## tables Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-nodeoutputartifact-properties-nodeoutputartifactvariables.md: -------------------------------------------------------------------------------- 1 | # Node.OutputArtifact.Variables Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/outputs/properties/variables 5 | ``` 6 | 7 | 节点依赖的变量Variable列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## variables Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-priority.md: -------------------------------------------------------------------------------- 1 | # Untitled integer in Node Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/priority 5 | ``` 6 | 7 | 定义节点的优先级, 数值越大优先级越高 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## priority Type 14 | 15 | `integer` 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-recurrence-metaenum.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Node Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/recurrence/meta:enum 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## meta:enum Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-rerunmode-metaenum.md: -------------------------------------------------------------------------------- 1 | # Untitled undefined type in Node Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/rerunMode/meta:enum 5 | ``` 6 | 7 | 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## meta:enum Type 14 | 15 | unknown 16 | -------------------------------------------------------------------------------- /schema/docs/node-properties-timeout.md: -------------------------------------------------------------------------------- 1 | # Untitled integer in Node Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/node.schema.json#/properties/timeout 5 | ``` 6 | 7 | 定义节点的超时时间, 运行超过指定时间后, 节点将会被kill掉, 单位为秒 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [node.schema.json\*](../../out/node.schema.json "open original schema") | 12 | 13 | ## timeout Type 14 | 15 | `integer` 16 | -------------------------------------------------------------------------------- /schema/docs/runtimeresource-properties-id.md: -------------------------------------------------------------------------------- 1 | # Untitled string in RuntimeResource Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/runtimeResource.schema.json#/properties/id 5 | ``` 6 | 7 | 唯一标识符 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [runtimeResource.schema.json\*](../../out/runtimeResource.schema.json "open original schema") | 12 | 13 | ## id Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/runtimeresource-properties-resourcegroup.md: -------------------------------------------------------------------------------- 1 | # Untitled string in RuntimeResource Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/runtimeResource.schema.json#/properties/resourceGroup 5 | ``` 6 | 7 | 资源组唯一标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [runtimeResource.schema.json\*](../../out/runtimeResource.schema.json "open original schema") | 12 | 13 | ## resourceGroup Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/script-properties-id.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Script Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/id 5 | ``` 6 | 7 | 唯一标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [script.schema.json\*](../../out/script.schema.json "open original schema") | 12 | 13 | ## id Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/script-properties-language.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Script Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/language 5 | ``` 6 | 7 | 脚本语言 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [script.schema.json\*](../../out/script.schema.json "open original schema") | 12 | 13 | ## language Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/script-properties-path.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Script Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/path 5 | ``` 6 | 7 | 脚本路径 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [script.schema.json\*](../../out/script.schema.json "open original schema") | 12 | 13 | ## path Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/script-properties-scriptparameters.md: -------------------------------------------------------------------------------- 1 | # Script.Parameters Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/parameters 5 | ``` 6 | 7 | 脚本参数列表 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [script.schema.json\*](../../out/script.schema.json "open original schema") | 12 | 13 | ## parameters Type 14 | 15 | `object[]` ([Artifact](artifact.md)) 16 | -------------------------------------------------------------------------------- /schema/docs/script-properties-scriptruntime-properties-command.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Script Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/runtime/properties/command 5 | ``` 6 | 7 | 运行时环境的命令标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [script.schema.json\*](../../out/script.schema.json "open original schema") | 12 | 13 | ## command Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/script-properties-scriptruntime-properties-engine.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Script Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json#/properties/runtime/properties/engine 5 | ``` 6 | 7 | 运行时引擎 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :-------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [script.schema.json\*](../../out/script.schema.json "open original schema") | 12 | 13 | ## engine Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/trigger-properties-cron.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Trigger Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/trigger.schema.json#/properties/cron 5 | ``` 6 | 7 | 周期调度触发器的定时表达式 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [trigger.schema.json\*](../../out/trigger.schema.json "open original schema") | 12 | 13 | ## cron Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/trigger-properties-endtime.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Trigger Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/trigger.schema.json#/properties/endTime 5 | ``` 6 | 7 | 周期调度的结束生效时间,节点只在startTime到endTime时间段内执行周期调度运行 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [trigger.schema.json\*](../../out/trigger.schema.json "open original schema") | 12 | 13 | ## endTime Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/trigger-properties-id.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Trigger Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/trigger.schema.json#/properties/id 5 | ``` 6 | 7 | 唯一标识 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [trigger.schema.json\*](../../out/trigger.schema.json "open original schema") | 12 | 13 | ## id Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/trigger-properties-starttime.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Trigger Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/trigger.schema.json#/properties/startTime 5 | ``` 6 | 7 | 周期调度的起始生效时间,节点只在startTime到endTime时间段内执行周期调度运行 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [trigger.schema.json\*](../../out/trigger.schema.json "open original schema") | 12 | 13 | ## startTime Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/docs/trigger-properties-timezone.md: -------------------------------------------------------------------------------- 1 | # Untitled string in Trigger Schema 2 | 3 | ```txt 4 | https://dataworks.data.aliyun.com/schemas/1.1.0/trigger.schema.json#/properties/timezone 5 | ``` 6 | 7 | 周期调度时间的时区 8 | 9 | | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | 10 | | :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :---------------------------------------------------------------------------- | 11 | | Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [trigger.schema.json\*](../../out/trigger.schema.json "open original schema") | 12 | 13 | ## timezone Type 14 | 15 | `string` 16 | -------------------------------------------------------------------------------- /schema/fileResource.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$id": "https://dataworks.data.aliyun.com/schemas/1.1.0/fileResource.schema.json", 3 | "title": "FileResource", 4 | "description": "定义了文件资源, 如: jar, python, text file, archive files等", 5 | "type": "object", 6 | "properties": { 7 | "id": { 8 | "description": "唯一标识", 9 | "type": "string" 10 | }, 11 | "name": { 12 | "description": "函数名称", 13 | "type": "string" 14 | }, 15 | "script": { 16 | "description": "使用的脚本", 17 | "$ref": "script.schema.json" 18 | } 19 | }, 20 | "required": [ 21 | "id", 22 | "name", 23 | "script" 24 | ] 25 | } -------------------------------------------------------------------------------- /schema/function.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$id": "https://dataworks.data.aliyun.com/schemas/1.1.0/script.schema.json", 3 | "title": "Function", 4 | "description": "定义工作流节点使用的UDF", 5 | "type": "object", 6 | "properties": { 7 | "id": { 8 | "description": "唯一标识", 9 | "type": "string" 10 | }, 11 | "name": { 12 | "description": "函数名称", 13 | "type": "string" 14 | }, 15 | "script": { 16 | "description": "使用的脚本", 17 | "$ref": "script.schema.json" 18 | }, 19 | "fileResources": { 20 | "description": "使用的资源列表", 21 | "$ref": "fileResource.schema.json" 22 | } 23 | }, 24 | "required": [ 25 | "id", 26 | "name", 27 | "script" 28 | ] 29 | } -------------------------------------------------------------------------------- /schema/runtimeResource.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$id": "https://dataworks.data.aliyun.com/schemas/1.1.0/runtimeResource.schema.json", 3 | "title": "RuntimeResource", 4 | "description": "节点的运行时资源定义或引用", 5 | "type": "object", 6 | "properties": { 7 | "id": { 8 | "description": "唯一标识符", 9 | "type": "string" 10 | }, 11 | "resourceGroup": { 12 | "description": "资源组唯一标识", 13 | "type": "string" 14 | } 15 | }, 16 | "required": [ 17 | "id", 18 | "resourceGroup" 19 | ] 20 | } -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/SpecContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain; 17 | 18 | import lombok.Data; 19 | import lombok.EqualsAndHashCode; 20 | 21 | /** 22 | * @author 聿剑 23 | * @date 2023/11/29 24 | */ 25 | @Data 26 | @EqualsAndHashCode 27 | public class SpecContext { 28 | private String version; 29 | } 30 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/dw/codemodel/JsonFormCode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.dw.codemodel; 17 | 18 | /** 19 | * Json格式的Code 20 | * 21 | * @author 聿剑 22 | * @date 2023/9/14 23 | */ 24 | public interface JsonFormCode extends Code { 25 | } 26 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/dw/codemodel/YamlFormCode.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.dw.codemodel; 2 | 3 | /** 4 | * Yaml格式的Code 5 | * 6 | * @author 戒迷 7 | * @date 2025/2/5 8 | */ 9 | public interface YamlFormCode extends Code{ 10 | } 11 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/dw/types/IntEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.dw.types; 17 | 18 | /** 19 | * @author 聿剑 20 | * @date 2023/01/12 21 | */ 22 | public interface IntEnum { 23 | int getValue(); 24 | } 25 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/dw/types/LocaleAware.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.dw.types; 17 | 18 | import java.util.Locale; 19 | 20 | /** 21 | * @author 聿剑 22 | * @date 2023/9/8 23 | */ 24 | public interface LocaleAware { 25 | String getDisplayName(Locale locale); 26 | } 27 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/interfaces/Input.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.interfaces; 17 | 18 | /** 19 | * Node input type interface 20 | * 21 | * @author yiwei.qyw 22 | * @date 2023/7/14 23 | */ 24 | public interface Input extends NodeIO { 25 | } -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/interfaces/NodeIO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.interfaces; 17 | 18 | /** 19 | * Node input/output interface 20 | * 21 | * @author yiwei.qyw 22 | * @date 2023/7/4 23 | */ 24 | public interface NodeIO { 25 | } -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/interfaces/Output.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.interfaces; 17 | 18 | /** 19 | * Node output interface 20 | * 21 | * @author yiwei.qyw 22 | * @date 2023/7/4 23 | */ 24 | public interface Output extends NodeIO { 25 | } -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/noref/SpecAssertIn.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.noref; 17 | 18 | import java.util.List; 19 | 20 | import lombok.Data; 21 | 22 | /** 23 | * Assert in 24 | * 25 | * @author 聿剑 26 | * @date 2023/10/25 27 | */ 28 | @Data 29 | public class SpecAssertIn { 30 | private List value; 31 | } 32 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/noref/SpecLogic.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.noref; 17 | 18 | import com.aliyun.dataworks.common.spec.domain.SpecNoRefEntity; 19 | import lombok.Data; 20 | 21 | /** 22 | * @author yiwei.qyw 23 | * @date 2023/7/4 24 | */ 25 | @Data 26 | public class SpecLogic extends SpecNoRefEntity { 27 | private String expression; 28 | } -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/noref/SpecNodeRef.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.noref; 17 | 18 | import com.aliyun.dataworks.common.spec.domain.SpecNoRefEntity; 19 | import lombok.Data; 20 | 21 | /** 22 | * @author yiwei.qyw 23 | * @date 2023/7/4 24 | */ 25 | @Data 26 | public class SpecNodeRef extends SpecNoRefEntity { 27 | private String output; 28 | } -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/noref/SpecPaiflow.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.noref; 2 | 3 | import java.util.List; 4 | 5 | import com.aliyun.dataworks.common.spec.domain.SpecNoRefEntity; 6 | import com.aliyun.dataworks.common.spec.domain.ref.SpecNode; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * Paiflow Spec 12 | * 13 | * @author 戒迷 14 | * @date 2025/1/10 15 | */ 16 | @EqualsAndHashCode(callSuper = true) 17 | @Data 18 | public class SpecPaiflow extends SpecNoRefEntity { 19 | private List nodes; 20 | private List flow; 21 | } 22 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/paiflow/AbstractPaiflowBase.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.paiflow; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author 戒迷 7 | * @date 2025/1/10 8 | */ 9 | @Data 10 | public class AbstractPaiflowBase { 11 | } 12 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/paiflow/PaiflowArguments.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.paiflow; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author 戒迷 9 | * @date 2025/1/10 10 | * @see 11 | */ 12 | @Data 13 | public class PaiflowArguments extends AbstractPaiflowBase { 14 | private List artifacts; 15 | private List parameters; 16 | } 17 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/paiflow/PaiflowArgumentsWrapper.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.paiflow; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author 戒迷 9 | * @date 2025/2/7 10 | */ 11 | @Data 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class PaiflowArgumentsWrapper { 15 | private PaiflowArguments arguments; 16 | } 17 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/paiflow/PaiflowArtifact.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.paiflow; 2 | 3 | import java.util.Map; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author 戒迷 9 | * @date 2025/1/10 10 | * @see 11 | */ 12 | @Data 13 | public class PaiflowArtifact extends AbstractPaiflowBase { 14 | private String name; 15 | private String from; 16 | private Map metadata; 17 | private Object value; 18 | private String desc; 19 | private Boolean repeated; 20 | private Boolean required; 21 | } 22 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/paiflow/PaiflowMetadata.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.paiflow; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author 戒迷 7 | * @date 2025/2/6 8 | */ 9 | @Data 10 | public class PaiflowMetadata { 11 | private String identifier; 12 | private String version; 13 | private String provider; 14 | } 15 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/paiflow/PaiflowParameter.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.paiflow; 2 | 3 | import java.beans.Transient; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author 戒迷 9 | * @date 2025/1/10 10 | * @see 11 | */ 12 | @Data 13 | public class PaiflowParameter extends AbstractPaiflowBase { 14 | private String name; 15 | private String from; 16 | private String type; 17 | private Object value; 18 | private String desc; 19 | private String feasible; 20 | 21 | @Transient 22 | public String getFromParameterName() { 23 | if (null == from) { 24 | return null; 25 | } 26 | 27 | return from.replaceAll("\\{\\{inputs.parameters.", "").replace("}}", ""); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/ref/ScriptWired.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Alibaba Cloud; 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.aliyun.dataworks.common.spec.domain.ref; 17 | 18 | /** 19 | * @author 聿剑 20 | * @date 2024/7/2 21 | */ 22 | public interface ScriptWired { 23 | SpecScript getScript(); 24 | } 25 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/ref/TemporalSpecNode.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.ref; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | @EqualsAndHashCode(callSuper = true) 7 | @Data 8 | public class TemporalSpecNode extends SpecNode { 9 | private String originSource; 10 | } 11 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/ref/calcengine/SpecCalcEngineVersion.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.ref.calcengine; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * CalcEngineVersion 7 | * 8 | * @author 子梁 9 | * @date 2024/4/23 10 | */ 11 | @Data 12 | public class SpecCalcEngineVersion { 13 | private String versionNumber; 14 | private String versionInfo; 15 | } 16 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/domain/ref/runtime/container/SpecContainerEnvVar.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.domain.ref.runtime.container; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * container env var list 7 | * kubernetes container env var spec 8 | * 9 | * @author 戒迷 10 | * @date 2024/6/4 11 | */ 12 | @Data 13 | public class SpecContainerEnvVar { 14 | /** 15 | * Name of the environment variable. 16 | */ 17 | private String name; 18 | /** 19 | * environment variable's value 20 | */ 21 | private String value; 22 | } 23 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/parser/impl/SpecContainerEnvVarParser.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.parser.impl; 2 | 3 | import java.util.Map; 4 | 5 | import com.aliyun.dataworks.common.spec.domain.ref.runtime.container.SpecContainerEnvVar; 6 | import com.aliyun.dataworks.common.spec.parser.SpecParserContext; 7 | 8 | /** 9 | * @author 戒迷 10 | * @date 2024/6/6 11 | */ 12 | public class SpecContainerEnvVarParser extends DefaultSpecParser { 13 | @Override 14 | public SpecContainerEnvVar parse(Map rawContext, SpecParserContext specParserContext) { 15 | return super.parse(rawContext, specParserContext); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/parser/impl/SpecContainerParser.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.parser.impl; 2 | 3 | import java.util.Map; 4 | 5 | import com.aliyun.dataworks.common.spec.domain.ref.runtime.container.SpecContainer; 6 | import com.aliyun.dataworks.common.spec.parser.SpecParserContext; 7 | 8 | /** 9 | * @author 戒迷 10 | * @date 2024/6/6 11 | */ 12 | public class SpecContainerParser extends DefaultSpecParser { 13 | @Override 14 | public SpecContainer parse(Map rawContext, SpecParserContext specParserContext) { 15 | return super.parse(rawContext, specParserContext); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/parser/impl/SpecScheduleStrategyParser.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.parser.impl; 2 | 3 | import java.util.Map; 4 | 5 | import com.aliyun.dataworks.common.spec.annotation.SpecParser; 6 | import com.aliyun.dataworks.common.spec.domain.ref.SpecScheduleStrategy; 7 | import com.aliyun.dataworks.common.spec.parser.SpecParserContext; 8 | 9 | /** 10 | * Desc: 11 | * 12 | * @author 莫泣 13 | * @date 2025-01-21 14 | */ 15 | @SpecParser 16 | public class SpecScheduleStrategyParser extends DefaultSpecParser { 17 | @Override 18 | public SpecScheduleStrategy parse(Map rawContext, SpecParserContext specParserContext) { 19 | return super.parse(rawContext, specParserContext); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/utils/ClassUtils.java: -------------------------------------------------------------------------------- 1 | package com.aliyun.dataworks.common.spec.utils; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | /** 6 | * @author 聿剑 7 | * @date 2023/11/21 8 | */ 9 | @Slf4j 10 | public class ClassUtils { 11 | /** 12 | * 获取类的继承层级 13 | * 14 | * @return 层级 15 | */ 16 | public static int getClassHierarchyLevel(Object object) { 17 | if (object == null) { 18 | return 0; 19 | } 20 | 21 | Class clz = object.getClass(); 22 | int count = 0; 23 | do { 24 | log.info("clz: {}", clz.getName()); 25 | if (clz.getSuperclass() != null && clz.getSuperclass() != Object.class) { 26 | clz = clz.getSuperclass(); 27 | count++; 28 | } else { 29 | break; 30 | } 31 | } while (true); 32 | return count; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /spec/src/main/java/com/aliyun/dataworks/common/spec/utils/UuidUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024. Aliyun.com All right reserved. This software is the 3 | * confidential and proprietary information of Aliyun.com ("Confidential 4 | * Information"). You shall not disclose such Confidential Information and shall 5 | * use it only in accordance with the terms of the license agreement you entered 6 | * into with Aliyun.com. 7 | */ 8 | 9 | package com.aliyun.dataworks.common.spec.utils; 10 | 11 | import java.util.UUID; 12 | 13 | /** 14 | * Desc: 15 | * 16 | * @author 莫泣 17 | * @date 2024-07-23 18 | */ 19 | public class UuidUtils { 20 | 21 | public static String genUuidWithoutHorizontalLine() { 22 | // 采用UUID低64位作为生成逻辑,冲突概率增加一倍 23 | long least = UUID.randomUUID().getLeastSignificantBits(); 24 | // 最小值 25 | if (least == Long.MIN_VALUE) { 26 | least = Long.MAX_VALUE; 27 | } else { 28 | least = Math.abs(least); 29 | } 30 | return String.valueOf(least); 31 | } 32 | } -------------------------------------------------------------------------------- /spec/src/main/spec/examples/json/assign.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.1.0", 3 | "kind": "CycleWorkflow", 4 | "spec": { 5 | "nodes": [ 6 | { 7 | "id": "param_1", 8 | "outputs": { 9 | "variables": [ 10 | { 11 | "name": "my_const", 12 | "type": "Constant", 13 | "scope": "NodeContext", 14 | "value": "cn-shanghai" 15 | }, 16 | { 17 | "name": "my_var", 18 | "type": "System", 19 | "scope": "NodeContext", 20 | "value": "${yyyymmdd}" 21 | } 22 | ] 23 | } 24 | } 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /spec/src/main/spec/examples/json/datasource.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.1.0", 3 | "kind": "CycleWorkflow", 4 | "spec": { 5 | "datasources": [ 6 | { 7 | "id": "table1", 8 | "name": "table1", 9 | "type": "mysql", 10 | "subType": "rds", 11 | "config": "{\n \"username\": \"root\",\n \"password\": \"123456\",\n \"host\": \"127.0.0.1\",\n \"port\": 3306,\n \"database\": \"test\",\n \"table\": \"table1\"\n}" 12 | } 13 | ] 14 | } 15 | } -------------------------------------------------------------------------------- /spec/src/main/spec/examples/json/dqc.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.1.0", 3 | "kind": "CycleWorkflow", 4 | "spec": { 5 | "dqcRules": [ 6 | { 7 | "id": "rule1", 8 | "name": "rule1", 9 | "description": "rule1 description", 10 | "calcEngine": { 11 | "type": "MaxCompute" 12 | }, 13 | "table": { 14 | "name": "test_table", 15 | "guid": "test_project.default.test_table" 16 | }, 17 | "partitionExpression": "dt=$[yyyyMMdd]", 18 | "schedulerNode": { 19 | "output": "autotest.1234_out" 20 | }, 21 | "ruleConfig": "{\n \"rules\": [\n {\n \"ruleType\": \"check_null\",\n \"ruleConfig\": {\n \"column\": \"id\",\n \"threshold\": 0.9,\n \"thresholdType\": \"percentage\"\n }\n },\n {\n \"ruleType\": \"check_null\",\n \"ruleConfig\": {\n \"column\": \"name\",\n \"threshold\": 0.9,\n \"thresholdType\": \"percentage\"\n }\n ]\n}" 22 | } 23 | ] 24 | } 25 | } -------------------------------------------------------------------------------- /spec/src/main/spec/examples/json/table.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.1.0", 3 | "kind": "CycleWorkflow", 4 | "spec": { 5 | "artifacts": { 6 | "tables": [ 7 | { 8 | "id": "table1", 9 | "metadata": { 10 | "owner": 123124124, 11 | "description": "description of table1" 12 | }, 13 | "name": "table1", 14 | "guid": "odps.test_project.default.test_table1", 15 | "calcEngine": { 16 | "type": "MaxCompute", 17 | "project": "test_project", 18 | "schema": "default" 19 | }, 20 | "ddl": "CREATE TABLE IF NOT EXISTS table1 (\n id STRING,\n name STRING,\n dt STRING\n) PARTITIONED BY (\n dt STRING\n) LOCATION 'oss://test-bucket/test-table1'" 21 | } 22 | ] 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /spec/src/main/spec/examples/tojson.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024, Alibaba Cloud; 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | 16 | for y in `ls yaml`; do 17 | ./yaml2json.py yaml/${y%.*}.yaml json/${y%.*}.json 18 | done -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml/assign.yaml: -------------------------------------------------------------------------------- 1 | version: 1.1.0 2 | kind: CycleWorkflow 3 | spec: 4 | nodes: 5 | - id: param_1 6 | outputs: 7 | variables: 8 | - name: my_const 9 | type: Constant 10 | scope: NodeContext 11 | value: cn-shanghai 12 | - name: my_var 13 | type: System 14 | scope: NodeContext 15 | value: ${yyyymmdd} 16 | -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml/datasource.yaml: -------------------------------------------------------------------------------- 1 | version: 1.1.0 2 | kind: CycleWorkflow 3 | spec: 4 | # table example 5 | datasources: 6 | - id: table1 7 | name: table1 8 | type: mysql 9 | subType: rds 10 | config: | 11 | { 12 | "username": "root", 13 | "password": "123456", 14 | "host": "127.0.0.1", 15 | "port": 3306, 16 | "database": "test", 17 | "table": "table1" 18 | } -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml/dqc.yaml: -------------------------------------------------------------------------------- 1 | version: 1.1.0 2 | kind: CycleWorkflow 3 | spec: 4 | dqcRules: 5 | - id: rule1 6 | name: rule1 7 | description: rule1 description 8 | calcEngine: 9 | type: MaxCompute 10 | table: 11 | name: test_table 12 | guid: test_project.default.test_table 13 | partitionExpression: dt=$[yyyyMMdd] 14 | schedulerNode: 15 | output: autotest.1234_out 16 | ruleConfig: | # 规则配置 17 | { 18 | "rules": [ 19 | { 20 | "ruleType": "check_null", 21 | "ruleConfig": { 22 | "column": "id", 23 | "threshold": 0.9, 24 | "thresholdType": "percentage" 25 | } 26 | }, 27 | { 28 | "ruleType": "check_null", 29 | "ruleConfig": { 30 | "column": "name", 31 | "threshold": 0.9, 32 | "thresholdType": "percentage" 33 | } 34 | ] 35 | } -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml/join.yaml: -------------------------------------------------------------------------------- 1 | version: 1.1.0 2 | kind: CycleWorkflow 3 | spec: 4 | nodes: 5 | - id: join_branch_1 6 | - id: join_branch_2 7 | - id: join_branch_3 8 | - id: join_branch_4 9 | - id: join_1 10 | join: 11 | branches: 12 | - nodeId: join_branch_1 13 | assertion: 14 | field: status 15 | in: [ SUCCESS ] 16 | name: b1 17 | - nodeId: join_branch_2 18 | assertion: 19 | field: status 20 | in: [ SUCCESS ] 21 | name: b2 22 | - nodeId: join_branch_3 23 | assertion: 24 | field: status 25 | in: [ SUCCESS ] 26 | name: b3 27 | - nodeId: join_branch_4 28 | assertion: 29 | field: status 30 | in: [ SUCCESS ] 31 | name: b4 32 | logic: 33 | expression: "b1 and b2 or b3 or b4" 34 | -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml/manual_flow.yaml: -------------------------------------------------------------------------------- 1 | version: 1.1.0 2 | kind: ManualWorkflow # Manual workflow 3 | spec: 4 | # define entities of each type 5 | id: 12345 6 | scripts: 7 | - id: file1 8 | path: /path/to/datax_1.json 9 | runtime: 10 | engine: DataIntegration 11 | command: DI 12 | language: json 13 | - id: file2 14 | path: /path/to/file2.sql 15 | runtime: 16 | engine: MaxCompute 17 | command: ODPS_SQL 18 | language: sql 19 | nodes: 20 | - id: start 21 | - id: datax 22 | script: "{{file1}}" 23 | - id: sql 24 | script: "{{file2}}" 25 | - id: end 26 | flow: 27 | - nodeId: "{{datax}}" 28 | depends: 29 | - nodeId: "{{start}}" 30 | - nodeId: "{{sql}}" 31 | depends: 32 | - nodeId: "{{datax}}" 33 | - nodeId: "{{end}}" 34 | depends: 35 | - nodeId: "{{sql}}" -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml/simple.yaml: -------------------------------------------------------------------------------- 1 | version: 1.1.0 2 | kind: CycleWorkflow 3 | spec: 4 | # define entities of each type 5 | variables: 6 | - id: bizdate 7 | name: bizdate 8 | type: System 9 | scope: NodeParameter 10 | value: ${yyyymmdd} 11 | scripts: 12 | - id: file1 13 | path: /path/to/datax_1.json 14 | language: json 15 | runtime: 16 | engine: DataIntegration 17 | command: DI 18 | parameters: 19 | - "{{variables.bizdate}}" 20 | - id: file2 21 | path: /path/to/file2.sql 22 | language: sql 23 | parameters: 24 | - "{{variables.bizdate}}" 25 | nodes: 26 | - id: start 27 | - id: datax 28 | script: "{{scripts.file1}}" 29 | - id: sql 30 | script: "{{scripts.file2}}" 31 | flow: 32 | - nodeId: "{{datax}}" 33 | depends: 34 | - nodeId: "{{start}}" 35 | - nodeId: "{{sql}}" 36 | depends: 37 | - nodeId: "{{datax}}" -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml/table.yaml: -------------------------------------------------------------------------------- 1 | version: 1.1.0 2 | kind: CycleWorkflow 3 | spec: 4 | # table example 5 | artifacts: 6 | tables: 7 | - id: table1 8 | metadata: 9 | owner: 123124124 10 | description: description of table1 11 | name: table1 12 | guid: odps.test_project.default.test_table1 13 | calcEngine: 14 | type: MaxCompute 15 | project: test_project 16 | schema: default 17 | ddl: | 18 | CREATE TABLE IF NOT EXISTS table1 ( 19 | id STRING, 20 | name STRING, 21 | dt STRING 22 | ) PARTITIONED BY ( 23 | dt STRING 24 | ) LOCATION 'oss://test-bucket/test-table1' -------------------------------------------------------------------------------- /spec/src/main/spec/examples/yaml2json.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3.10 2 | import sys 3 | from datetime import date, datetime 4 | 5 | import json 6 | import yaml 7 | 8 | 9 | def json_serial(obj): 10 | """JSON serializer for objects not serializable by default json code""" 11 | if isinstance(obj, (datetime, date)): 12 | return obj.isoformat() 13 | raise TypeError("Type %s not serializable" % type(obj)) 14 | 15 | 16 | configuration = None 17 | yl = sys.argv[1] 18 | js = sys.argv[2] 19 | print("yaml: " + yl + ", file: " + js) 20 | with open(yl, 'r') as file: 21 | configuration = yaml.safe_load(file) 22 | 23 | with open(js, 'w') as json_file: 24 | try: 25 | json.dump(configuration, json_file, indent=2, default=json_serial, ensure_ascii=False) 26 | except Exception as e: 27 | print("error: ", e) 28 | print("json: ", configuration) 29 | -------------------------------------------------------------------------------- /spec/src/test/resources/assign.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.0", 3 | "kind": "CycleWorkflow", 4 | "nodes": [ 5 | { 6 | "id": "param_1", 7 | "outputs": { 8 | "variables": [ 9 | { 10 | "name": "my_const", 11 | "type": "Constant", 12 | "scope": "NodeContext", 13 | "value": "cn-shanghai" 14 | }, 15 | { 16 | "name": "my_var", 17 | "type": "System", 18 | "scope": "NodeContext", 19 | "value": "${yyyymmdd}" 20 | } 21 | ] 22 | } 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /spec/src/test/resources/newSimple.json: -------------------------------------------------------------------------------- 1 | { 2 | "kind": "CycleWorkflow", 3 | "triggers": [ 4 | { 5 | "id": "daily", 6 | "type": "scheduler", 7 | "cron": "00 00 00 * * ?", 8 | "startTime": "2023-01-01T00:00:00", 9 | "endTime": "2024-01-01T00:00:00" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /spec/src/test/resources/toSpecDemo.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.0", 3 | "kind": "CycleWorkflow", 4 | "metadata": { 5 | "owner": 123124124, 6 | "description": "desc" 7 | }, 8 | "variables": [ 9 | { 10 | "id": "global_var_0", 11 | "name": "global_var_0", 12 | "scope": "Workspace", 13 | "type": "Constant", 14 | "value": "global_value", 15 | "node": { 16 | "priority": 9, 17 | "recurrence": "Normal", 18 | "name": "node_2" 19 | } 20 | }, 21 | { 22 | "id": "ctx_output_1", 23 | "name": "ctx_output_1", 24 | "scope": "Tenant", 25 | "value": "output_value" 26 | }, 27 | { 28 | "id": "my_output", 29 | "name": "my_output", 30 | "scope": "Tenant", 31 | "value": "input_value" 32 | } 33 | ], 34 | "nodes": [ 35 | { 36 | "id": "node_1", 37 | "priority": 7, 38 | "recurrence": "Normal", 39 | "name": "node_1" 40 | } 41 | ] 42 | } --------------------------------------------------------------------------------