diff --git a/.gitignore b/.gitignore index 17461ca7b..d8b0f432b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,8 @@ streamis-project/streamis-project-common/target streamis-project/streamis-project-server/target streamis-server/target -streamis-appconn/target \ No newline at end of file +streamis-appconn/target +/logs/streamis-server.log +/logs/linkis.log +/test/target +/test/src \ No newline at end of file diff --git a/README-ZH.md b/README-ZH.md index ae2f0cb40..9f5b760a0 100644 --- a/README-ZH.md +++ b/README-ZH.md @@ -45,7 +45,7 @@ Dimension节点、Transform节点、Sink节点 和 [Visualis](https://github.com ![流式应用配置](docs/images/流式应用配置.png) -       更多功能,请参考:[Streamis 用户手册](docs/zh_CN/0.1.0/使用文档/Streamis用户手册.md)。 +       更多功能,请参考:[Streamis 用户手册](docs/zh_CN/0.2.0/使用文档/Streamis用户手册.md)。 ---- @@ -72,20 +72,20 @@ Dimension节点、Transform节点、Sink节点 和 [Visualis](https://github.com ## 编译和安装部署 -       请参照 [编译指引](docs/zh_CN/0.1.0/development/Streamis编译文档.md) ,用于编译 Streamis。 +       请参照 [编译指引](docs/zh_CN/0.2.0/development/Streamis编译文档.md) ,用于编译 Streamis。        在安装Streamis之前,请先安装 Linkis1.0.3 和 DSS1.0.1,可参照:[DSS + Linkis 安装部署文档](https://github.com/WeBankFinTech/DataSphereStudio-Doc/blob/main/zh_CN/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/DSS%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md)        同时,请确保 Linkis Flink 引擎已可正常使用,可参照:[Linkis Flink 引擎插件安装文档](https://github.com/WeBankFinTech/Linkis-Doc/blob/master/zh_CN/Deployment_Documents/EngineConnPlugin%E5%BC%95%E6%93%8E%E6%8F%92%E4%BB%B6%E5%AE%89%E8%A3%85%E6%96%87%E6%A1%A3.md) -       最后,请参考 [Streamis 安装部署文档](docs/zh_CN/0.1.0/Streamis安装文档.md) ,用于安装部署 Streamis。 +       最后,请参考 [Streamis 安装部署文档](docs/zh_CN/0.2.0/Streamis安装文档.md) ,用于安装部署 Streamis。 ---- ## 示例和使用指引 -       请到 [用户使用文档](docs/zh_CN/0.1.0/使用文档/Streamis用户手册.md) ,了解如何快速使用 Streamis。 +       请到 [用户使用文档](docs/zh_CN/0.2.0/使用文档/Streamis用户手册.md) ,了解如何快速使用 Streamis。 ---- diff --git a/conf/config.sh b/conf/config.sh index ab0d8045f..094a2a1c7 100644 --- a/conf/config.sh +++ b/conf/config.sh @@ -40,6 +40,6 @@ GATEWAY_PORT=9001 STREAMIS_SERVER_INSTALL_IP=127.0.0.1 STREAMIS_SERVER_INSTALL_PORT=9400 -STREAMIS_VERSION=0.1.0 +STREAMIS_VERSION=0.2.0 STREAMIS_FILE_NAME="STREAMIS-$STREAMIS_VERSION" \ No newline at end of file diff --git a/docs/en_US/0.1.0/StreamisAppConnDesignDocument.md b/docs/en_US/0.1.0/StreamisAppConnDesignDocument.md new file mode 100644 index 000000000..fe0d5c834 --- /dev/null +++ b/docs/en_US/0.1.0/StreamisAppConnDesignDocument.md @@ -0,0 +1,209 @@ +# Streamis access AppConn + +## Overall flow chart +![Streamis access DSS](../../images/zh_CN/streamis_appconn.png) + +## DSS project APPCONN plug-in streamis-appconn + +### The configuration table +Configure the following three tables:dss_appconn、dss_workspace_menu_appconn、dss_appconn_instance,appconn_name for realTimeJobCenter is appconn accessed by the graphical interface,appconn_name for streamis is appconn accessed by the API,The StreamisAppConn object is instantiated based on the configuration information in the table when DSS is started。 +```roomsql +select @old_dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'streamis'; + +delete from `dss_workspace_menu_appconn` WHERE `appconn_id` = @old_dss_appconn_id; +delete from `dss_appconn_instance` where `appconn_id` = @old_dss_appconn_id; +delete from `dss_appconn` where `appconn_name`='streamis'; + +select @old_jobcenter_dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'realTimeJobCenter'; + +delete from `dss_workspace_menu_appconn` WHERE `appconn_id` = @old_jobcenter_dss_appconn_id; +delete from `dss_appconn_instance` where `appconn_id` = @old_jobcenter_dss_appconn_id; +delete from `dss_appconn` where `appconn_name`='realTimeJobCenter'; + +INSERT INTO dss_appconn +(appconn_name, is_user_need_init, `level`, if_iframe, is_external, reference, class_name, appconn_class_path, resource) +VALUES('streamis', 0, 1, 1, 1, NULL, 'com.webank.wedatasphere.streamis.dss.appconn.StreamisAppConn', NULL, NULL); +INSERT INTO dss_appconn +(appconn_name, is_user_need_init, `level`, if_iframe, is_external, reference, class_name, appconn_class_path, resource) +VALUES('realTimeJobCenter', 0, 1, 1, 1, 'sso', '', NULL, NULL); + +select @dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'streamis'; +select @jobcenter_dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'realTimeJobCenter'; + +INSERT INTO dss_workspace_menu_appconn +(appconn_id, menu_id, title_en, title_cn, desc_en, desc_cn, labels_en, labels_cn, is_active, access_button_en, access_button_cn, manual_button_en, manual_button_cn, manual_button_url, icon, `order`, create_by, create_time, last_update_time, last_update_user, image) +VALUES(@jobcenter_dss_appconn_id, 1, 'StreamSQL development', 'StreamSQL开发', 'Real-time application development is a streaming solution jointly built by WeDataSphere, Boss big data team and China Telecom ctcloud Big data team.', '实时应用开发是微众银行微数域(WeDataSphere)、Boss直聘大数据团队 和 中国电信天翼云大数据团队 社区联合共建的流式解决方案,以 Linkis 做为内核,基于 Flink Engine 构建的批流统一的 Flink SQL,助力实时化转型。', +'streaming, realtime', '流式,实时', 0, 'under union construction', '联合共建中', 'related information', '相关资讯', 'http://127.0.0.1:8088/wiki/scriptis/manual/workspace_cn.html', 'shujukaifa-logo', NULL, NULL, NULL, NULL, NULL, 'shujukaifa-icon'); + +INSERT INTO dss_appconn_instance +(appconn_id, label, url, enhance_json, homepage_uri) +VALUES(@dss_appconn_id, 'DEV', 'http://Streamis_INSTALL_IP:Streamis_INSTALL_PORT/', '', 'http://Streamis_INSTALL_IP:Streamis_INSTALL_PORT/#/realTimeJobCenter'); + +INSERT INTO dss_appconn_instance +(appconn_id, label, url, enhance_json, homepage_uri) +VALUES(@jobcenter_dss_appconn_id, 'DEV', 'http://Streamis_INSTALL_IP:Streamis_INSTALL_PORT/#/realTimeJobCenter', NULL, NULL); +``` + +### Concrete implementation description +StreamisAppConn extends AbstractOnlySSOAppConn implements SecondlyAppConn,Override method to create StreamisStructureIntegrationStandard.StreamisAppConn currently only implements section-free login and organizational structure specification capabilities。 + +To create a StreamisProjectService by rewriting the methods in StreamisStructureIntegrationStandard, four methods need to be rewritten internally, and four operation classes will be created: StreamisProjectSearchOperation, StreamisProjectCreationOperation, StreamisProjectUpdateOperation, and StreamisPrejectDeleteOperation. The operation class calls the streamis application through HTTP to query, create, modify and delete project respectively, and synchronize the DSS project information to Streamis. + +- When DSS creates a project, it will first call the query operation to query whether the same project name already exists in streamis. If it does, a prompt will pop up. If it does not exist, it will continue to call the create operation to create a new project in streamis; +- When DSS modifies a project, it will call the modify operation to update the project information in streamis; +- When DSS deletes an item, it will call the delete operation to delete the item information in streamis and change the deletion mark. + +## API +1 API name: query project +- API path:GET/streamis/project/searchProject +- Request parameters + +|Parameter name |Whether it is necessary |Example |remarks | +|-------------|---------|-------|--------| +|projectName |yes | | | + +- Return data + +|name |type |Whether it is necessary |Default |remarks | +|-------------|--------|---------|---------|--------| +|method |string |no | +|status |number |yes | +|message |string |no | +|data |object |yes | +|- projectId |number |yes | + +2 API name:create project +- API path:GET/streamis/project/createProject +- Request parameters + +|Parameter name |Whether it is necessary |Example |remarks | +|-------------|---------|-------|--------| +|projectName |yes | | | +|workspaceId |no | | | +|releaseUsers |no | | | +|editUsers |no | | | +|accessUsers |no | | | + +- Return data + +|name |type |Whether it is necessary |Default |remarks | +|----------|--------|---------|---------|--------| +|method |string |no | +|status |number |yes | +|message |string |no | +|data |object |yes | +|- projectId |number |yes | +|- projectName |string |no | + +3 API name:update project +- API path:GET/streamis/project/updateProject +- Request parameters + +|Parameter name |Whether it is necessary |Example |remarks | +|-------------|---------|-------|--------| +|projectId |yes | | | +|projectName |yes | | | +|workspaceId |no | | | +|releaseUsers |no | | | +|editUsers |no | | | +|accessUsers |no | | | + +- Return data + +|name |type |Whether it is necessary |Default |remarks | +|----------|--------|---------|---------|--------| +|method |string |no | +|status |number |yes | +|message |string |no | +|data |object |no | + +4 API name:delete project +- API path:GET/streamis/project/deleteProject +- Request parameters + +|Parameter name |Whether it is necessary |Example |remarks | +|-------------|---------|-------|--------| +|projectId |yes | | | +|projectName |no | | | + +- Return data + +|name |type |Whether it is necessary |Default |remarks | +|----------|--------|---------|---------|--------| +|method |string |no | +|status |number |yes | +|message |string |no | +|data |object |no | + +## Streamis project streamis-project-server + +### Related table operation +There are 2 tables involved in streamis, including linkis_ stream_ Project and linkis_ stream_ project_ privilege. +```roomsql +--table already exists +CREATE TABLE `linkis_stream_project` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `workspace_id` bigint(20) DEFAULT NULL, + `name` varchar(100) DEFAULT NULL, + `create_by` varchar(50) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='project table'; + +--newly added table +CREATE TABLE `linkis_stream_project_privilege` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `project_id` bigint(20) NOT NULL, + `user_name` varchar(100) NOT NULL, + `privilege` tinyint(1) DEFAULT '0' NOT NULL COMMENT '1:RELEASE ,2:EDIT ,3:ACCESS', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='project privilege table'; + +--newly added field +ALTER TABLE `linkis_stream_project` ADD create_time datetime DEFAULT NULL; +ALTER TABLE `linkis_stream_project` ADD last_update_by varchar(50) DEFAULT NULL; +ALTER TABLE `linkis_stream_project` ADD last_update_time datetime DEFAULT NULL; +ALTER TABLE `linkis_stream_project` ADD is_deleted tinyint unsigned DEFAULT 0; +``` + +### Concrete implementation description +- The query operation will obtain the request parameter projectName in the table links_ stream_project Query the corresponding ID. If the query operation is successful, the returned status is 0, and the projectid is the queried ID. if the query result is empty, the projectid is null; +- The creation operation will insert the project information (projectName、workspaceId) in the request parameters into the project table linkis_stream_project and auto increment the generated ID, associate the user in the permission information data (releaseUsers、editUsers、accessUsers) in the request parameters with the generated ID of the project table, and insert the table linkis_stream_project_privilege, the status value returned from the successful creation operation is 0, and the project table generation ID will be returned as the value of projectId; +- The modification operation will update the request information data to the table linkis_stream_project and linkis_stream_project_privilege, the status value returned successfully is 0; +- In the delete operation, the is_deleted field of the table linkis_stream_project will be marked as 1 according to the projectId. The relevant data in the table linkis_stream_project_privilege will be deleted, the status value returned successfully is 0. + +# Authentication + +## Authentication flow chart +![Streamis project authentication operation](../../images/zh_CN/streamis_project_privilege.png) + +### edit privilege API: + +|RequestMethod |API path |name | +|------|----------------------------------------------------------|-----------------| +|POST |/streamis/streamProjectManager/project/files/upload |Project resource file - Import | +|GET |/streamis/streamProjectManager/project/files/delete |Delete all versions of the file under the project | +|GET |/streamis/streamProjectManager/project/files/version/delete |Delete version file | +|GET |/streamis/streamProjectManager/project/files/download |Task details - Download | +|POST |/streamis/streamJobManager/job/upload |Upload file | +|POST |/streamis/streamJobManager/job/execute |start-up | +|GET |/streamis/streamJobManager/job/stop |stop | +|PUT |/streamis/streamJobManager/job//snapshot/{jobId:\w+} |Snapshot generation | +|GET |/streamis/streamJobManager/config/json/{jobId:\w+} |Configuration - save | +|POST |/streamis/streamJobManager/job/bulk/execution |Batch start | +|POST |/streamis/streamJobManager/job/bulk/pause |Batch stop | + + +### access privilege API: + +|RequestMethod |API path |name | +|------|----------------------------------------------------------|-------------| +|GET |streamis/streamJobManager/job/list |Query the jobs that the current user can view | +|GET |/streamis/streamProjectManager/project/files/list |prokect resource document | +|GET |/streamis/streamProjectManager/project/files/version/list |Obtain all versions of the file under the project | +|GET |/streamis/streamJobManager/job/version |Query job version | +|GET |/streamis/streamJobManager/job/execute/history |Job execution history | +|GET |/streamis/streamJobManager/job/progress |Get the latest task status of the current version of the job | +|GET |/streamis/streamJobManager/job/jobContent |Task details | +|GET |/streamis/streamJobManager/job/logs |Get log | +|POST |/streamis/streamJobManager/config/json/{jobId:\w+} |Get task configuration | +|GET |/streamis/streamJobManager/config/view |Query the current job configuration information | \ No newline at end of file diff --git a/docs/images/zh_CN/dss_streamis_project.png b/docs/images/zh_CN/dss_streamis_project.png new file mode 100644 index 000000000..f8316a9a6 Binary files /dev/null and b/docs/images/zh_CN/dss_streamis_project.png differ diff --git a/docs/images/zh_CN/eureka_streamis.png b/docs/images/zh_CN/eureka_streamis.png index eaa273c83..4ca0d8495 100644 Binary files a/docs/images/zh_CN/eureka_streamis.png and b/docs/images/zh_CN/eureka_streamis.png differ diff --git a/docs/images/zh_CN/streamis_appconn.png b/docs/images/zh_CN/streamis_appconn.png new file mode 100644 index 000000000..34949619d Binary files /dev/null and b/docs/images/zh_CN/streamis_appconn.png differ diff --git a/docs/images/zh_CN/streamis_project_privilege.png b/docs/images/zh_CN/streamis_project_privilege.png new file mode 100644 index 000000000..9aa4c67fe Binary files /dev/null and b/docs/images/zh_CN/streamis_project_privilege.png differ diff --git "a/docs/zh_CN/0.1.0/AppConn\347\232\204\344\275\277\347\224\250.md" "b/docs/zh_CN/0.2.0/AppConn\347\232\204\344\275\277\347\224\250.md" similarity index 100% rename from "docs/zh_CN/0.1.0/AppConn\347\232\204\344\275\277\347\224\250.md" rename to "docs/zh_CN/0.2.0/AppConn\347\232\204\344\275\277\347\224\250.md" diff --git "a/docs/zh_CN/0.1.0/Streamis\345\256\211\350\243\205\346\226\207\346\241\243.md" "b/docs/zh_CN/0.2.0/Streamis\345\256\211\350\243\205\346\226\207\346\241\243.md" similarity index 63% rename from "docs/zh_CN/0.1.0/Streamis\345\256\211\350\243\205\346\226\207\346\241\243.md" rename to "docs/zh_CN/0.2.0/Streamis\345\256\211\350\243\205\346\226\207\346\241\243.md" index d8e7e8e7e..a7dd15e5d 100644 --- "a/docs/zh_CN/0.1.0/Streamis\345\256\211\350\243\205\346\226\207\346\241\243.md" +++ "b/docs/zh_CN/0.2.0/Streamis\345\256\211\350\243\205\346\226\207\346\241\243.md" @@ -1,9 +1,8 @@ # Streamis安装部署文档 ## 1.组件介绍 ----------- -Streamis0.1.0 提供了 Streamis-JobManager 流式生产中心,其作用主要有: +Streamis0.2.0 提供了 Streamis-JobManager 流式生产中心,其作用主要有: 1. 上传/更新流式应用 2. 配置流式应用参数,如 Flink 的 Slot 数量、checkpoint相关参数等 @@ -12,27 +11,30 @@ Streamis0.1.0 提供了 Streamis-JobManager 流式生产中心,其作用主要 ## 2.代码编译 ----------- - + **Streamis 无需手动编译,可以直接下载安装包进行部署,请 [点我下载安装包](https://github.com/WeBankFinTech/Streamis/releases)。** 如果您想自己编译 Streamis,可参考如下步骤进行。 -后台编译方式如下: +- 后台编译方式如下: -``` +```shell script cd ${STREAMIS_CODE_HOME} mvn -N install mvn clean install ``` +编译成功后将会在项目的 assembly/target 目录下生成安装包wedatasphere-streamis-${streamis-version}-dist.tar.gz -前端编译方式如下: +- 前端编译方式如下: -```bash +前置依赖:nodejs、python 2.0 + +```shell script cd ${STREAMIS_CODE_HOME}/web npm i npm run build ``` +编译成功后,在${STREAMIS_CODE_HOME}/web目录下生成streamis-${streamis-version}-dist.zip ## 3.安装准备 @@ -45,41 +47,48 @@ npm run build ### 3.2 Linkis 和 DSS 环境 -- Linkis (>=1.0.3),Streamis 的执行依赖于 Linkis 的 Flink 引擎,并且依赖 **Linkis-1.0.3** 及以上版本。 -- DataSphere Studio (>=1.0.1),Streamis 流式作业的开发和调试,依赖于 DSS-Scriptis,Streamis 流式生产中心则需嵌入到 DSS 工程框架体系之中,所以依赖于 **DSS-1.0.1** 及以上版本。 +- Linkis (>=1.1.1),Streamis 的执行依赖于 Linkis 的 Flink 引擎,并且依赖 **Linkis-1.1.1** 及以上版本。 +- DataSphere Studio (>=1.1.0),Streamis 流式作业的开发和调试,依赖于 DSS-Scriptis,Streamis 流式生产中心则需嵌入到 DSS 工程框架体系之中,所以依赖于 **DSS-1.1.0** 及以上版本。 -在正式安装 Streamis 之前,请先安装 Linkis1.0.3 和 DSS1.0.1 及以上版本,并且保证 Linkis Flink 引擎 和 DSS 可以正常使用,DSS 和 Linkis 安装,可参照 [DSS & Linkis 一键安装部署文档](https://github.com/WeBankFinTech/DataSphereStudio-Doc/blob/main/zh_CN/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/DSS%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md)。 +在正式安装 Streamis 之前,请先安装 Linkis1.1.1 和 DSS1.1.0 及以上版本,并且保证 Linkis Flink 引擎 和 DSS 可以正常使用,DSS 和 Linkis 安装,可参照 [DSS & Linkis 一键安装部署文档](https://github.com/WeBankFinTech/DataSphereStudio-Doc/blob/main/zh_CN/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/DSS%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md)。 如何验证 DSS 和 Linkis 已基本可用?您可以在 DSS-Scriptis 上新建一个 flinksql 脚本并执行,如果 flinksql 能正确执行并返回结果集,表示 DSS 和 linkis 环境是可用的。 -### 3.3 安装包准备 -将安装包上传到 Linux 服务器(目前只支持 Linux 环境部署)的安装目录,如 /appcom/Install/streamis: +## 4.安装和启动 -```bash +### 后台安装 + +1.安装包准备 + +将安装包上传到 Linux 服务器(目前只支持 Linux 环境部署)的安装目录,如 /appcom/Install/streamis,然后进行解压: + +```shell script cd /appcom/Install/streamis tar -xvf wedatasphere-streamis-${streamis-version}-dist.tar.gz ``` -### 3.4 修改数据库配置 +2.修改数据库配置 -```bash +```shell script vi conf/db.sh #配置基础的数据库信息 ``` -### 3.5 修改基础配置文件 +3.修改基础配置文件 -```bash +```shell script vi conf/config.sh ``` -```bash - +```shell script ### deploy user deployUser=hadoop +### ssh port +SSH_PORT=22 + ##The Port of Streamis STREAMIS_PORT=9400 @@ -96,12 +105,9 @@ GATEWAY_PORT=9001 ``` -## 4.安装和启动 ----------- - -- 后台安装 +4.执行安装脚本 -```bash +```shell script sh bin/install.sh ``` @@ -112,10 +118,10 @@ sh bin/install.sh      **第一次安装**必须选是。 -- 启动 +5.启动 -```bash -sh bin/start-streamis.sh +```shell script +sh bin/start.sh ``` - 启动验证 @@ -125,7 +131,7 @@ sh bin/start-streamis.sh ![components](../../images/zh_CN/eureka_streamis.png) -- 前端部署 +### 前端部署 1.安装nginx @@ -139,7 +145,7 @@ sudo yum install -y nginx mkdir ${STREAMIS_FRONT_PATH} cd ${STREAMIS_FRONT_PATH} #放置前端包 -unzip streamis-web.zip +unzip streamis-${streamis-version}.zip ``` 3.修改nginx配置文件
@@ -155,8 +161,8 @@ server { listen 9088;# 访问端口 server_name localhost; location / { - root ${STREAMIS_FRONT_PAH}; # 请修改成Streamis恰当南的静态文件目录 - index index.html index.html; + root ${STREAMIS_FRONT_PATH}/dist; # 请修改成Streamis前端的静态文件目录 + index index.html index.html; } location /api { proxy_pass http://${Linkis_GATEWAY_IP}:${LINKIS_GATEWY_PORT}; #后端Linkis的地址,请修改成Linkis网关的ip和端口 @@ -183,32 +189,15 @@ server { } ``` -4.重启nginx +5.加载nginx配置 ```bash -sudo systemctl restart nginx +sudo nginx -s reload ``` ## 5. 接入DSS -请在 **DSS 数据库**之中,执行以下SQL: - -请注意:是在 **DSS 数据库**之中,执行以下SQL!!! - -请注意:是在 **DSS 数据库**之中,执行以下SQL!!! - -特别需要注意的是:需将以下SQL url 字段的值 :`http://127.0.0.1:9188/#/realtimeJobCenter?projectName=${projectName}&workspaceName=${workspaceName}` 中的 IP 和 端口,替换为 Streamis 的 IP 和 端口 - -请注意:以下SQL,只需替换 IP 和 端口 即可,其他无需改动。 - -```roomsql -INSERT INTO `dss_dictionary` ( `workspace_id`, `parent_key`, `dic_name`, `dic_name_en`, `dic_key`, `dic_value`, `dic_value_en`, `title`, `title_en`, `url`, `url_type`,`icon`, `order_num`, `remark`, `create_user`, `create_time`, `update_user`, `update_time`) -VALUES ('0','p_develop_process','流式生产中心','Streamis Product Center','pdp_streamis_product_center','streamis_prod',NULL,NULL,NULL, -'http://127.0.0.1:9188/#/realtimeJobCenter?projectName=${projectName}&workspaceName=${workspaceName}','0','kaifa-icon','1','工程开发流程-流式生产中心','SYSTEM','2020-12-28 17:32:35',NULL,'2021-02-22 17:49:02'); -``` - -如何验证 DSS 已经成功集成了 Streamis? - -请进入 DSS 的工程首页,如果能正常切换到 流式生产中心,则表示 DSS 已经成功集成了 Streamis。如下图: +如您想正常使用 Streamis0.2.0 前端,还需安装 DSS StreamisAppConn 插件,请参考: [StreamisAppConn 插件安装文档](development/StreamisAppConn安装文档.md) -![DSS 集成 Streamis](../../images/zh_CN/DSS_integration_Streamis.png) \ No newline at end of file +## 6.Linkis Flink引擎编译安装 +如您想正常执行 Streamis0.2.0,还需安装 Linkis Flink 引擎,请参考: [Linkis Flink 引擎安装文档](development/Flink引擎编译文档.md) \ No newline at end of file diff --git a/docs/zh_CN/0.1.0/architecture/README.md b/docs/zh_CN/0.2.0/architecture/README.md similarity index 100% rename from docs/zh_CN/0.1.0/architecture/README.md rename to docs/zh_CN/0.2.0/architecture/README.md diff --git a/docs/zh_CN/0.1.0/architecture/SUMMARY.md b/docs/zh_CN/0.2.0/architecture/SUMMARY.md similarity index 100% rename from docs/zh_CN/0.1.0/architecture/SUMMARY.md rename to docs/zh_CN/0.2.0/architecture/SUMMARY.md diff --git "a/docs/zh_CN/0.2.0/architecture/Streamis\346\216\245\345\205\245AppConn\350\256\276\350\256\241\346\226\207\346\241\243.md" "b/docs/zh_CN/0.2.0/architecture/Streamis\346\216\245\345\205\245AppConn\350\256\276\350\256\241\346\226\207\346\241\243.md" new file mode 100644 index 000000000..505d16ced --- /dev/null +++ "b/docs/zh_CN/0.2.0/architecture/Streamis\346\216\245\345\205\245AppConn\350\256\276\350\256\241\346\226\207\346\241\243.md" @@ -0,0 +1,165 @@ +# Streamis接入AppConn + +## 总体流程图 +![Streamis接入DSS](../../../images/zh_CN/streamis_appconn.png) + +## DSS项目appconn插件streamis-appconn + +### 配置表 +配置下面2张表dss_appconn、dss_appconn_instance,appconn_name为realTimeJobCenter是界面访问的appconn,appconn_name为streamis是接口访问的appconn,dss启动时会根据表中配置信息实例化StreamisAppConn对象。下面sql中APPCONN_INSTALL_IP和APPCONN_INSTALL_PORT在执行DSS安装脚本进行自动化安装时会通过交互式命令的方式输入。 +```roomsql +select @old_dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'streamis'; + +delete from `dss_appconn_instance` where `appconn_id` = @old_dss_appconn_id; +delete from `dss_appconn` where `appconn_name`='streamis'; + +select @old_jobcenter_dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'realTimeJobCenter'; + +delete from `dss_appconn_instance` where `appconn_id` = @old_jobcenter_dss_appconn_id; +delete from `dss_appconn` where `appconn_name`='realTimeJobCenter'; + +INSERT INTO dss_appconn +(appconn_name, is_user_need_init, `level`, if_iframe, is_external, reference, class_name, appconn_class_path, resource) +VALUES('streamis', 0, 1, 1, 1, NULL, 'com.webank.wedatasphere.streamis.dss.appconn.StreamisAppConn', NULL, NULL); +INSERT INTO dss_appconn +(appconn_name, is_user_need_init, `level`, if_iframe, is_external, reference, class_name, appconn_class_path, resource) +VALUES('realTimeJobCenter', 0, 1, 1, 1, 'sso', '', NULL, NULL); + +select @dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'streamis'; +select @jobcenter_dss_appconn_id:=id from `dss_appconn` where `appconn_name` = 'realTimeJobCenter'; + +INSERT INTO dss_appconn_instance +(appconn_id, label, url, enhance_json, homepage_uri) +VALUES(@dss_appconn_id, 'DEV', 'http://APPCONN_INSTALL_IP:APPCONN_INSTALL_PORT/', '', 'http://APPCONN_INSTALL_IP:APPCONN_INSTALL_PORT/#/realTimeJobCenter'); + +INSERT INTO dss_appconn_instance +(appconn_id, label, url, enhance_json, homepage_uri) +VALUES(@jobcenter_dss_appconn_id, 'DEV', 'http://APPCONN_INSTALL_IP:APPCONN_INSTALL_PORT/#/realTimeJobCenter', NULL, NULL); +``` + +### 具体实现说明 +StreamisAppConn继承AbstractOnlySSOAppConn实现SecondlyAppConn,重写方法创建一个StreamisStructureIntegrationStandard,目前StreamisAppConn只实现了免密登录和组织结构规范功能。 + +通过重写StreamisStructureIntegrationStandard中方法创建StreamisProjectService,其内部需要重写4个方法,会创建4个操作类StreamisProjectSearchOperation、StreamisProjectCreationOperation、StreamisProjectUpdateOperation、StreamisPrejectDeleteOperation。Operation类通过http调用streamis应用,分别实现查询、创建、修改、删除项目,同步dss项目信息到Streamis。 + +- dss创建项目时,会先调用查询操作,查询streamis中是否已存在相同的项目名称,如果存在则弹出提示信息,不存在则继续调用创建操作去streamis中新建项目, +- dss修改项目时,会调用修改操作去streamis中更新项目信息, +- dss删除项目时,会调用删除操作去streamis中删除项目信息,更改删除标记。 + +## 接口 +1 接口名称:查询项目 +- 接口路径:GET /streamis/project/searchProject +- 请求参数 + +|参数名称 |是否必须 |示例 |备注 | +|-------------|---------|-------|--------| +|projectName |是 | | | + +- 返回数据 + +|名称 |类型 |是否必须 |默认值 |备注 | +|-------------|--------|---------|---------|--------| +|method |string |否 | +|status |number |是 | +|message |string |否 | +|data |object |是 | +|- projectId |number |是 | + +2 接口名称:创建项目 +- 接口路径:POST /streamis/project/createProject +- 请求参数 + +|参数名称 |是否必须 |示例 |备注 | +|-------------|---------|-------|--------| +|projectName |是 | | | +|workspaceId |否 | | | +|releaseUsers |否 | | | +|editUsers |否 | | | +|accessUsers |否 | | | + +- 返回数据 + +|名称 |类型 |是否必须 |默认值 |备注 | +|----------|--------|---------|---------|--------| +|method |string |否 | +|status |number |是 | +|message |string |否 | +|data |object |是 | +|- projectId |number |是 | +|- projectName |string |否 | + +3 接口名称:修改项目 +- 接口路径:PUT /streamis/project/updateProject +- 请求参数 + +|参数名称 |是否必须 |示例 |备注 | +|-------------|---------|-------|--------| +|projectId |是 | | | +|projectName |是 | | | +|workspaceId |否 | | | +|releaseUsers |否 | | | +|editUsers |否 | | | +|accessUsers |否 | | | + +- 返回数据 + +|名称 |类型 |是否必须 |默认值 |备注 | +|----------|--------|---------|---------|--------| +|method |string |否 | +|status |number |是 | +|message |string |否 | +|data |object |否 | + +4 接口名称:删除项目 +- 接口路径:DELETE /streamis/project/deleteProject +- 请求参数 + +|参数名称 |是否必须 |示例 |备注 | +|-------------|---------|-------|--------| +|projectId |是 | | | +|projectName |否 | | | + +- 返回数据 + +|名称 |类型 |是否必须 |默认值 |备注 | +|----------|--------|---------|---------|--------| +|method |string |否 | +|status |number |是 | +|message |string |否 | +|data |object |否 | + +## Streamis项目streamis-project-server + +### 相关表操作 +Streamis涉及到的表共2张,项目表linkis_stream_project和项目权限表linkis_stream_project_privilege。 +```roomsql +--已存在表 +CREATE TABLE `linkis_stream_project` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `workspace_id` bigint(20) DEFAULT NULL, + `name` varchar(100) DEFAULT NULL, + `create_by` varchar(50) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='项目表'; + +--新增加表 +CREATE TABLE `linkis_stream_project_privilege` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `project_id` bigint(20) NOT NULL, + `user_name` varchar(100) NOT NULL, + `privilege` tinyint(1) DEFAULT '0' NOT NULL COMMENT '1:发布权限 ,2:编辑权限 ,3:查看权限', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='项目权限表'; + +--新增加字段 +ALTER TABLE `linkis_stream_project` ADD create_time datetime DEFAULT NULL; +ALTER TABLE `linkis_stream_project` ADD last_update_by varchar(50) DEFAULT NULL; +ALTER TABLE `linkis_stream_project` ADD last_update_time datetime DEFAULT NULL; +ALTER TABLE `linkis_stream_project` ADD is_deleted tinyint unsigned DEFAULT 0; +``` + +### 具体实现说明 +- 查询操作,会获取请求参数projectName,在表linkis_stream_project中查询对应id,查询操作成功返回status为0,projectId为查询出来的id,如果查询结果为空则projectId为null; +- 创建操作,会将请求参数中项目信息(projectName、workspaceId)插入项目表linkis_stream_project并自增生成id,将请求参数中权限信息数据(releaseUsers、editUsers、accessUsers)中user和项目表生成id关联,插入表linkis_stream_project_privilege,创建操作成功返回status值为0,会将项目表生成id作为projectId的值返回; +- 修改操作,会根据请求参数projectId将请求信息数据更新到表linkis_stream_project和 linkis_stream_project_privilege,成功直接返回status值为0; +- 删除操作,会根据projectId将表linkis_stream_project的is_deleted字段标记为1,linkis_stream_project_privilege中相关数据删除,成功直接返回status值为0。 diff --git "a/docs/zh_CN/0.2.0/architecture/Streamis\351\211\264\346\235\203\350\256\276\350\256\241\346\226\207\346\241\243.md" "b/docs/zh_CN/0.2.0/architecture/Streamis\351\211\264\346\235\203\350\256\276\350\256\241\346\226\207\346\241\243.md" new file mode 100644 index 000000000..02514a3e8 --- /dev/null +++ "b/docs/zh_CN/0.2.0/architecture/Streamis\351\211\264\346\235\203\350\256\276\350\256\241\346\226\207\346\241\243.md" @@ -0,0 +1,43 @@ +# 鉴权 + +## 鉴权流程图 +streamis存在需要鉴权的模块没有依赖streamis-project-server模块的情况,使用rest接口调用来处理鉴权。 +![Streamis项目鉴权操作](../../../images/zh_CN/streamis_project_privilege.png) + +## 具体实现说明 +根据当前用户名和项目ID/名称获取到所有权限的集合,如果权限集合中包含RELEASE权限,则拥有发布/编辑/查看的权限,如果权限集合中包含EDIT权限,则拥有编辑/查看的权限,如果权限集合中包含ACCESS权限,则拥有查看的权限; +权限包含关系:RELEASE权限包含EDIT权限、ACCESS权限;EDIT权限包含ACCESS权限。 + +## 接口 +### edit权限接口: + +|RequestMethod |接口路径 |名称 | +|------|----------------------------------------------------------|-----------------| +|POST |/streamis/streamProjectManager/project/files/upload |工程资源文件-导入 | +|GET |/streamis/streamProjectManager/project/files/delete |删除项目下该文件所有版本 | +|GET |/streamis/streamProjectManager/project/files/version/delete |删除版本文件 | +|GET |/streamis/streamProjectManager/project/files/download |任务详情-下载 | +|POST |streamis/streamJobManager/job/createOrUpdate |创建或更新streamis-job| +|POST |/streamis/streamJobManager/job/upload |上传文件 | +|POST |/streamis/streamJobManager/job/execute |启动 | +|GET |/streamis/streamJobManager/job/stop |停止 | +|PUT |/streamis/streamJobManager/job//snapshot/{jobId:\w+} |快照生成 | +|GET |/streamis/streamJobManager/config/json/{jobId:\w+} |配置-保存 | +|POST |/streamis/streamJobManager/job/bulk/execution |批量启动 | +|POST |/streamis/streamJobManager/job/bulk/pause |批量停止 | + + +### access权限接口: + +|RequestMethod |接口路径 |名称 | +|------|----------------------------------------------------------|-------------| +|GET |streamis/streamJobManager/job/list |查询当前用户可查看job | +|GET |/streamis/streamProjectManager/project/files/list |工程资源文件 | +|GET |/streamis/streamProjectManager/project/files/version/list |获取工程下该文件所有版本 | +|GET |/streamis/streamJobManager/job/version |查询job版本 | +|GET |/streamis/streamJobManager/job/execute/history |job执行历史 | +|GET |/streamis/streamJobManager/job/progress |获取job当前版本最新task状态 | +|GET |/streamis/streamJobManager/job/jobContent |任务详情 | +|GET |/streamis/streamJobManager/job/logs |获取日志 | +|POST |/streamis/streamJobManager/config/json/{jobId:\w+} |获得任务配置 | +|GET |/streamis/streamJobManager/config/view |查询当前job配置信息 | \ No newline at end of file diff --git "a/docs/zh_CN/0.1.0/development/Flink\345\274\225\346\223\216\347\274\226\350\257\221\346\226\207\346\241\243.md" "b/docs/zh_CN/0.2.0/development/Flink\345\274\225\346\223\216\347\274\226\350\257\221\346\226\207\346\241\243.md" similarity index 100% rename from "docs/zh_CN/0.1.0/development/Flink\345\274\225\346\223\216\347\274\226\350\257\221\346\226\207\346\241\243.md" rename to "docs/zh_CN/0.2.0/development/Flink\345\274\225\346\223\216\347\274\226\350\257\221\346\226\207\346\241\243.md" diff --git a/docs/zh_CN/0.1.0/development/Interface_documentation/README.md b/docs/zh_CN/0.2.0/development/Interface_documentation/README.md similarity index 100% rename from docs/zh_CN/0.1.0/development/Interface_documentation/README.md rename to docs/zh_CN/0.2.0/development/Interface_documentation/README.md diff --git a/docs/zh_CN/0.1.0/development/Requirements_documentation/README.md b/docs/zh_CN/0.2.0/development/Requirements_documentation/README.md similarity index 100% rename from docs/zh_CN/0.1.0/development/Requirements_documentation/README.md rename to docs/zh_CN/0.2.0/development/Requirements_documentation/README.md diff --git a/docs/zh_CN/0.1.0/development/SUMMARY.md b/docs/zh_CN/0.2.0/development/SUMMARY.md similarity index 100% rename from docs/zh_CN/0.1.0/development/SUMMARY.md rename to docs/zh_CN/0.2.0/development/SUMMARY.md diff --git a/docs/zh_CN/0.1.0/development/Specification_documentation/Exception_Throws.md b/docs/zh_CN/0.2.0/development/Specification_documentation/Exception_Throws.md similarity index 100% rename from docs/zh_CN/0.1.0/development/Specification_documentation/Exception_Throws.md rename to docs/zh_CN/0.2.0/development/Specification_documentation/Exception_Throws.md diff --git a/docs/zh_CN/0.1.0/development/Specification_documentation/Log_out.md b/docs/zh_CN/0.2.0/development/Specification_documentation/Log_out.md similarity index 100% rename from docs/zh_CN/0.1.0/development/Specification_documentation/Log_out.md rename to docs/zh_CN/0.2.0/development/Specification_documentation/Log_out.md diff --git a/docs/zh_CN/0.1.0/development/Specification_documentation/README.md b/docs/zh_CN/0.2.0/development/Specification_documentation/README.md similarity index 100% rename from docs/zh_CN/0.1.0/development/Specification_documentation/README.md rename to docs/zh_CN/0.2.0/development/Specification_documentation/README.md diff --git "a/docs/zh_CN/0.2.0/development/StreamisAppConn\345\256\211\350\243\205\346\226\207\346\241\243.md" "b/docs/zh_CN/0.2.0/development/StreamisAppConn\345\256\211\350\243\205\346\226\207\346\241\243.md" new file mode 100644 index 000000000..0ef45a34b --- /dev/null +++ "b/docs/zh_CN/0.2.0/development/StreamisAppConn\345\256\211\350\243\205\346\226\207\346\241\243.md" @@ -0,0 +1,70 @@ +StreamisAppConn安装文档 本文主要介绍在DSS(DataSphere Studio)1.1.0中StreamisAppConn的部署、配置以及安装 + +# 1.部署StreamisAppConn的准备工作 +您在部署StreamisAppConn之前,请安装完成Streamis0.2.0及其他相关组件的安装,并确保工程基本功能可用。 + +# 2.StreamisAppConn插件的下载和编译 +1)下载二进制包 +我们提供StreamisAppconn的物料包,您可直接下载使用。[点击跳转 Release 界面](https://github.com/WeBankFinTech/Streamis/releases) + +2) 编译打包 +如果您想自己开发和编译StreamisAppConn,具体编译步骤如下: 1.clone Streamis的代码 2.找到streamis-appconn模块,单独编译streamis-appconn +```shell script +cd {STREAMIS_CODE_HOME}/streamis-appconn +mvn clean install +``` +会在该路径下找到streamis.zip安装包 +```shell script +{STREAMIS_CODE_HOME}\streamis-appconn\target\streamis.zip +``` + +# 3.StreamisAppConn插件的部署和配置总体步骤 + 1.拿到打包出来的streamis.zip物料包 + + 2.放置到如下目录并进行解压 + +注意:第一次解压streamis appconn后,确保当前文件夹下没有index_v0000XX.index文件,该文件在后面才会生成 +```shell script +cd {DSS_Install_HOME}/dss/dss-appconns +unzip streamis.zip +``` +解压出来的目录结构为: +```shell script +conf +db +lib +``` + 3.执行脚本进行自动化安装 + ```shell script +cd {DSS_INSTALL_HOME}/dss/bin +sh ./appconn-install.sh +# 脚本是交互式的安装方案,您需要输入字符串streamis以及streamis服务的ip和端口,即可以完成安装 +# 这里的streamis端口是指前端端口,在nginx进行配置。而不是后端的服务端口 +``` + +## 4.完成streamis-appconn的安装后,需要重启dss服务,才能最终完成插件的更新 +### 4.1)使部署好的APPCONN生效 +使用DSS启停脚本使APPCONN生效,进入到脚本所在目录{DSS_INSTALL_HOME}/dss/sbin中,依次使用如下命令执行脚本: +```shell script +sh ./dss-stop-all.sh +sh ./dss-start-all.sh +``` +### 4.2)验证streamis-appconn是否生效 +在安装部署完成streamis-appconn之后,可通过以下步骤初步验证streamis-appconn是否安装成功。 + +在DSS工作空间创建一个新的项目 +![DSS工作空间Streamis项目](../../../images/zh_CN/dss_streamis_project.png) + +在streamis数据库查看是否同步创建项目,查询有记录说明appconn安装成功 +```roomsql +SELECT * FROM linkis_stream_project WHERE name = '项目名称'; +``` + +# 5.Streamis AppConn安装原理 +Streamis 的相关配置信息会插入到以下表中,通过配置下表,可以完成 Streamis 的使用配置。(注:如果仅仅需要快速安装APPCONN,无需过分关注以下字段,提供的init.sql中大多以进行默认配置。重点关注以上操作即可) + +|表名 |表作用 |备注 | +|-------------------|-----------------------------------------|------| +|dss_appconn |AppConn的基本信息,用于加载AppConn |必须| +|dss_appconn_instance |AppConn的实例的信息,包括自身的url信息 |必须| +|dss_workspace_menu_appconn |AppConn菜单 |必须| diff --git "a/docs/zh_CN/0.1.0/development/Streamis\347\274\226\350\257\221\346\226\207\346\241\243.md" "b/docs/zh_CN/0.2.0/development/Streamis\347\274\226\350\257\221\346\226\207\346\241\243.md" similarity index 100% rename from "docs/zh_CN/0.1.0/development/Streamis\347\274\226\350\257\221\346\226\207\346\241\243.md" rename to "docs/zh_CN/0.2.0/development/Streamis\347\274\226\350\257\221\346\226\207\346\241\243.md" diff --git a/docs/zh_CN/0.1.0/development/Table_Structure_documentation/README.md b/docs/zh_CN/0.2.0/development/Table_Structure_documentation/README.md similarity index 100% rename from docs/zh_CN/0.1.0/development/Table_Structure_documentation/README.md rename to docs/zh_CN/0.2.0/development/Table_Structure_documentation/README.md diff --git a/docs/zh_CN/0.1.0/development/Table_Structure_documentation/db/streamis-jobmanager.sql b/docs/zh_CN/0.2.0/development/Table_Structure_documentation/db/streamis-jobmanager.sql similarity index 100% rename from docs/zh_CN/0.1.0/development/Table_Structure_documentation/db/streamis-jobmanager.sql rename to docs/zh_CN/0.2.0/development/Table_Structure_documentation/db/streamis-jobmanager.sql diff --git "a/docs/zh_CN/0.1.0/\344\275\277\347\224\250\346\226\207\346\241\243/Streamis\347\224\250\346\210\267\346\211\213\345\206\214.md" "b/docs/zh_CN/0.2.0/\344\275\277\347\224\250\346\226\207\346\241\243/Streamis\347\224\250\346\210\267\346\211\213\345\206\214.md" similarity index 100% rename from "docs/zh_CN/0.1.0/\344\275\277\347\224\250\346\226\207\346\241\243/Streamis\347\224\250\346\210\267\346\211\213\345\206\214.md" rename to "docs/zh_CN/0.2.0/\344\275\277\347\224\250\346\226\207\346\241\243/Streamis\347\224\250\346\210\267\346\211\213\345\206\214.md" diff --git a/streamis-appconn/src/main/resources/init.sql b/streamis-appconn/src/main/resources/init.sql index cec7e5754..165729516 100644 --- a/streamis-appconn/src/main/resources/init.sql +++ b/streamis-appconn/src/main/resources/init.sql @@ -27,8 +27,8 @@ VALUES(@jobcenter_dss_appconn_id, 1, 'StreamSQL development', 'StreamSQL开发', INSERT INTO dss_appconn_instance (appconn_id, label, url, enhance_json, homepage_uri) -VALUES(@dss_appconn_id, 'DEV', 'http://Streamis_INSTALL_IP:Streamis_INSTALL_PORT/', '', 'http://Streamis_INSTALL_IP:Streamis_INSTALL_PORT/#/realTimeJobCenter'); +VALUES(@dss_appconn_id, 'DEV', 'http://APPCONN_INSTALL_IP:APPCONN_INSTALL_PORT/', '', 'http://APPCONN_INSTALL_IP:APPCONN_INSTALL_PORT/#/realTimeJobCenter'); INSERT INTO dss_appconn_instance (appconn_id, label, url, enhance_json, homepage_uri) -VALUES(@jobcenter_dss_appconn_id, 'DEV', 'http://Streamis_INSTALL_IP:Streamis_INSTALL_PORT/#/realTimeJobCenter', NULL, NULL); \ No newline at end of file +VALUES(@jobcenter_dss_appconn_id, 'DEV', 'http://APPCONN_INSTALL_IP:APPCONN_INSTALL_PORT/#/realTimeJobCenter', NULL, NULL); \ No newline at end of file diff --git a/streamis-project/streamis-project-server/pom.xml b/streamis-project/streamis-project-server/pom.xml index e462d2dc3..880d5bf0b 100644 --- a/streamis-project/streamis-project-server/pom.xml +++ b/streamis-project/streamis-project-server/pom.xml @@ -64,7 +64,6 @@ org.apache.commons commons-math3 - provided com.webank.wedatasphere.dss diff --git a/web/package.json b/web/package.json index 212cd077a..fc5a8bfb2 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "streamis", - "version": "1.0.0", + "version": "0.2.0", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/web/src/apps/streamis/module/jobConfig/index.vue b/web/src/apps/streamis/module/jobConfig/index.vue index c0ed3e2fa..b6bd86f46 100644 --- a/web/src/apps/streamis/module/jobConfig/index.vue +++ b/web/src/apps/streamis/module/jobConfig/index.vue @@ -224,7 +224,11 @@ export default { emptyWarning = !mapKey.key || !mapKey.key.trim(); if (configuration[key][mapKey.key]) warning = true; configuration[key][mapKey.key] = mapKey.value || ''; - }) + }); + if ((this.diyMap[key] || []).length <= 1) { + const only = (this.diyMap[key] || [])[0] || {}; + emptyWarning = !((!only.key || !only.key.trim()) && (!only.value || !only.value.trim())) + } }); console.log('configuration', configuration, this.valueMap) if (emptyWarning) {