1.引言

1.1目的

本文档主要对KNIME服务器可以通过网页或knime desktop远程调用knime服务器流程接口(流程信息、加载、执行、关闭等)、节点接口(节点信息、执行等)的预研与实现。

1.2概述

在文档《KNIME服务预研》中,设计了服务器的架构,定义了相关数据库表。本文档是在此基础上对具体功能的实现。我们主要做了如下工作:代码远程服务器流程接口,可以远程执行;可以通过接口获取流程信息;部分节点接口的预研与实现。

2 代码实现

2.1相关技术

后端开发我选择了当前比较流行的Spring Boot+MyBatis-Plus+Shiro+Swagger等框架,可以快速搭建后台,实现快速开发。

2.2 技术介绍

**Spring Boot简介:**Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
**MyBatis-Plus简介:**MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
**Shiro介绍:**shiro 是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的解决方案的认证,授权,加密,会话管理。
**Swagger简介:**Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

2.3代码结构

代码主要目录结构如图2-2所示

图2-2 代码结构图
代码核心结构主要分为Controller、Entity、Dao、Service层 ,server端的接口都是在Controller层定义的,所以这里说一下Controller层的重要接口。
(1)ConmmandLine
这里面的最重要的是execute接口,当我们在前端或者远程请求执行流程时,会调用此接口。其原理是KNIME提供了使用命令控制符来执行一个流程,所以利用现有的特性,将KNIME桌面端部署到云端,就可以实现远程执行一个流程。在文档《搭建KNIME服务器》已经说过,我们尝试用KNIME的server构建一个服务端, 但是需要收费,所以后来经过研究发现,KNIME的server端和桌面端的核心代码一致,只是部署方式不同,所以利用现有的核心代码来搭建一个新的服务端。
(2)NodeRepositoryController
此类为实现节点相关操作的控制层,里面包含了节点的插入,节点信息查询等接口,提供了方便获取节点信息的相关接口。
(3)RepositoryController
此类为实现节点和流程操作的控制层,他是相当于一个既存储节点又存储流程的存储库,是对节点和流程信息的汇总,通过外键k_id和节点流程表联系,可以实现多表联查。其中最主要的接口是查询节点或者流程的相关信息,更新节点或者流程信息,存储节点和流程的最新状态。
(4)WorkflowRepositoryController
此类为实现流程相关操作的控制层,对应了数据库中workflow_repository表,专门用提供流程相关的接口。主要有,插入新的流程、查询流程的信息、更新流程的信息。

2.4 接口测试

引入依赖

图2-3
运行主程序,在浏览器输入:http://localhost:8083/swagger-ui.html,出现如图2-4

图2-4

图2-4就是实现功能的相关接口,可以在这里对接口进行一些测试,按照接口定义传入相应的参数,验证功能是否实现。

3.实现服务器相关接口

3.1流程信息

流程信息由文档《搭建KNIME服务器》中KNIME服务器的数据库设计,其中2.2.2的表2可知其包含的字段信息。这里通过接口来获取某一个流程的信息。

3.1.1代码实现

在RespositoryController层中,定义一个信息查询接口,来实现通过流程名字来查询该流程的所有信息。如下图3-1所示。这里是一个post请求,需要指定流程名。

图3-1 获取流程信息接口

3.1.2接口测试

利用Swagger来对接口进行测试,由提示可知需要传入流程名。如下图3-2所示,其中在Example Value中可以看到,它显示了成返回值的类型和数目。而且状态码为200表示成功。下面Parameter字段名名为name,且为String类型,规范了传参类型。

图3-2 respository-controller
输入流程名Data Generator,此流程名是存在于数据库的,如若数据库中没有此流程,测试会失败。输入之后,点击Try it out结果如图3-3所示。

图3-3接口返回图
由上图标红的地方可以看出查询成功,返回的值符合要求,实现了获取流程信息接口。

3.2流程执行

3.2.1代码实现

下图3-4为流程执行的接口

图3-4 流程执行接口

3.2.2接口测试

具体测试步骤在3.1.2有详细说明,这里不再赘述。执行数据库中已有流程,这里执行名为KNIME_project22.knwf的流程。

图3-5
输入流程名KNIME_project22.knwf并执行,如图3-6所示。

图3-6
此时会自动弹出cmd命令窗口,开始执行,如图3-7所示。

图3-7
控制台输出信息:

图3-8

3.3流程关闭

执行流程时,如果成功,它将会一直保持执行状态,我们可以主动关闭。流程执行时其实是新建了一个线程,这里对于流程关闭的思路是关闭该线程,就可以对该流程进行关闭。

3.3.1代码实现

接口代码如图3-9所示。

图3-9

3.3.2接口测试

在3.2中通过接口执行一个流程,会出现一个窗口来执行该流程。执行成功之后,调用cancel接口来关闭流程。如下图3-10所示。

图3-10

4.新建流程远程执行

服务器提供了接口,可供客户端远程调用
设计了一个流程,如下:

图4-1
此流程的功能是读取一个本地文件,然后将文件的内容写到一个新的.table文件并保存在对应自定义目录下。

4.1 导出

我们把该流程从KNIME工作台中导出,放到我们本地存储库中。此时server端也有一个存储库,暂时也在本地,因为server端暂时还是本地部署,但是其思路时一致的,如果部署到云端,云端也会有一个存储库。所以现在我本地有一个server端的存储库相当于云端的。

4.2 上传

首先我们想要在云端执行一个本地流程,那么server端在收到请求后,应该去server端的存储库查找是否有该流程,如果有则直接执行,如果没有则从本地hub上拉取。这一步在KNIME服务器的架构图也有展示。

KNIME服务器相关接口的实现相关推荐

  1. 关于App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  2. 服务端api用php写还是用node,如何使用node搭建服务器,写接口,调接口,跨域

    这次给大家带来如何使用node搭建服务器,写接口,调接口,跨域,使用node搭建服务器,写接口,调接口,跨域的注意事项有哪些,下面就是实战案例,一起来看一下.. 服务端项目目录下: 1.npm ini ...

  3. 接口规范 12. 自动删除相关接口

    12 自动删除相关接口 12.1.查询自动删除任务 用途 查询服务器上的自动删除任务. 自动删除任务是一种运行在服务器上的服务,按照定义的规则自动删除过期的视频内容.例如,对于监控和视频直播类业务,可 ...

  4. 接口规范 11. 串流相关接口

    11 串流相关接口 11.1.查询串流任务 用途 查询服务器上的串流任务. 请求 streamingMgr/?request=get_streaming&id= id 串流任务在服务器上的唯一 ...

  5. 接口规范 10. 并发限制相关接口

    10 并发限制相关接口 10.1.查询并发限制配置 用途 查询某个应用的播出并发限制值. 如果一个应用设置了并发限制值,当访问该应用下视频流的并发数超过该值时,终端的播出请求会被禁止. 这个限制值是该 ...

  6. 接口规范 8. 播出认证相关接口

    8 播出认证相关接口 8.1.开启播出认证 用途 针对某个应用,开启播出认证. 开启播出认证后,所有播放该应用下的视频流的请求都需要做合法性认证,只有认证通过的请求才会允许播放. 认证的方法包括tok ...

  7. 接口规范 7. 按需录制相关接口

    7 按需录制直播流 7.1.定义按需录制的应用 用途 将某个应用设置为按需录制应用. 应用被设置为按需录制后,该应用下的直播流默认情况下不会被录制,只有在收到开始录制和停止录制的指令后才会针对某个直播 ...

  8. 接口规范 5. 点播流相关接口

    5.点播流相关接口 5.1.查询点播流 用途 查询某个应用下的点播视频流. 如果查询的是点播应用(如"vod"),返回的是该点播应用下的点播流列表. 如果查询的是直播应用(如&qu ...

  9. 微信公众号开发(一)服务器及接口的配置

    微信公众号开发(一)服务器及接口的配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比 ...

最新文章

  1. 微服务时代组件化和服务化的抉择
  2. 转载 React.createClass 对决 extends React.Component
  3. SAP不同产品的UI开发策略概述
  4. float 常见用法与问题--摘抄
  5. pil对图像加透明 python_使用Python图像处理库Pillow处理图像文件
  6. 村庄规划中核心技术(村土地利用规划方面)
  7. Linux 内核中的数据结构:双链表,基数树,位图
  8. 博弈论 从懵逼到入门 详解
  9. TCPUDP调试工具 Linux 版
  10. 协调器周期性以广播的形式向终端节点发送数据(每隔5s广播一次),终端节点接收数据后,使开发板上的LED灯状态翻转, 同时向协调器发送字符串“EndDevice1 received!”(按组网节点数编号
  11. Re27:读论文 LADAN Distinguish Confusing Law Articles for Legal Judgment Prediction
  12. 将一个数组赋值给另一个数组
  13. PHP随堂笔记时区的设置
  14. 打开txt文档显示乱码
  15. 北京,三看三核对,读懂社保对账单
  16. 如何编写Python爬虫
  17. 美团点评2018春招后台开发方向编程题 - 题解
  18. 【MindInsight】在win下安装MindInsight遇到“ No module named apos;fcntlapos;“问题
  19. 精选了国内外 6 个接私活的网站,供大家赚钱!
  20. python怎么样?

热门文章

  1. Astyle中文格式说明 (for C/C++/JAVA等Format)
  2. 容联云Q3同比增长44.3%,CC+UC业务收入占比突破60%
  3. 小红书达人等级有哪些,达人种草力度判断
  4. CSMA/CD与全双工通信
  5. php正则匹配字符乱码,php正则匹配中文乱码问题怎么解决
  6. 利用对抗变化网络进行对抗训练
  7. 研究生毕业后要不要落户上海?今年非上海生源应届生申请户籍评分办法~
  8. Http请求状态码-206
  9. win10计算机历史记录,win10电脑使用浏览记录的时间轴功能关闭方法
  10. 2010年安徽省计算机二级证书,2010安徽省计算机等级考试二级考资料