docker版jxTMS使用指南:使用jxTMS提供数据

news2024/10/7 18:30:01

本文讲解了如何jxTMS的数据访问框架,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容

docker版本的使用,请查看:docker版jxTMS使用指南

4.0版jxTMS的说明,请查看:4.0版升级内容

4.2版jxTMS的说明,请查看:4.2版升级内容

使用jxTMS搭建一个数据访问系统,相对来说较为简单,因为jxTMS已经内置了一个完整的数据访问框架:

数据处理框架

该框架在上图中已经展示的非常清楚了,各步骤的相关处理也都在前文讲解过。所以本文只说明当有一个新用户要对某个新加入的资源执行某项新操作时该如何做。

1、增加新操作

如【app/sinosoarSP30H/】下的op_getSiteData.py所展示的,可以非常简单的定义并注册一个新操作:

from jx.auth import auth
from jx.site import site

#读取设备数据
#user:用户
#resID:资源ID
#params:调用时的参数
def op_getSiteData(user, siteName, params):
    s = site.getSite(siteName)
    if s is None:
        return None,None,404,f'站点[{siteName}]不存在'
    else:
        return s.type(),s.data(),200,None

auth.registerOP('getSiteData', op_getSiteData)

上述代码注册了一个名为【getSiteData】的操作。

然后,我们要在【app/sinosoarSP30H/】目录下的__init.py__文件中引用op_getSiteData:

from app.sinosoarSP30H import op_getSiteData

这样才能在app目录下的__init.py__文件中引用加载sinosoarSP30H模块时自动加载op_getSiteData.py文件,完成getSiteData操作的自动注册。

2、增加一个授权

jxTMS的用户授权是构建一个【资源组-操作-角色】的关联,所以授权过程是:

  • 将需要执行getSiteData操作的资源放到某个资源组中

  • 将需要授权执行getSiteData操作的用户映射到某个角色

  • 然后授权该角色可以对该资源组执行getSiteData操作

具体操作请参考【新建用户并授权】一文。

3、如有必要,增加一个SLA处理

大家看一下上面的op_getSiteData函数,其返回的是一个四元组,第一个元素指示了返回结果的类型。

当需要时,可以为该类型的操作结果,增加SLA【服务水平】处理,如针对不同用户提供不同精度的地图等。

如【app/vrs20/】下的dualResult.py所展示的,可以根据用户、角色等提供针对性的数据后处理。

需要说明的是,此处的SLA处理和操作处理一样,都是只用于提供rest访问的处理流中。

大家应该理解,本文所讲述的都是对外提供数据服务,而不是前几篇文章所讲解的数据处理的内容。所以,实际上应当避免dualResult.py中的直接修改原始数据的做法。

演示

大家可以执行:

cd /home/tms/python
python3 main.py

来启动数据处理。

注:大家看一下main.py,会看到其启动ms时指定了【alone=True】,也就是说其不会向java侧的jxTMS系统平台中的catalogService进行注册,所以无法通过java侧的jxTMS系统平台来对数据收发进行管理。这是由于笔者在测试时需要反复重启python侧的jxTMS服务,而且是只使用如下命令进行启动:

python3 main.py

但其会不断报无法注册到catalogService,会极大的干扰调试工作,所以就指定了【alone=True】以阻止向catalogService进行注册,大家如果需要使用java侧的jxTMS系统平台,就需要删除【alone=True】

继续。然后打开另外一个ssh会话,执行:

cd /home/tms/python
python3 testWeb.py

在前一个会话可以看到:

用户[demoUser01/demoUser01]请求对[hbc01]执行操作[getSiteData]:允许"

在后一个会话可以看到:

({'VoltageA': 227.60000000000002, 'VoltageB': 227.20000000000002, 'VoltageC': 220.8, 'DG1_VoltageAB': 221.4, 'SOC1': 224.0, 'timestamp': None}, 200, None)

表明当前用户执行getSiteData操作成功。

安全性增强

jxTMS的web访问采用的是http协议,而非https协议,这主要是考虑现在一般不支持私有证书,为了降低部署的成本才做了如此的选择。

但这自然会带来安全方面的风险,所以jxTMS基于jwt提供了双向加密来提供有限的安全。

注:数据服务一般用于低敏感度的场景,由于都是toB的中间业务数据交换,天然的具有点到点、数据不具备自解释能力【需双方约定所交换数据的格式和语义】的特点,所以一般情况下也不太需要关注数据的安全问题

如果和jxTMS交换的对手方也是python环境,可以直接引用module目录下的webClient.py文件中的webClient,使用towWay_login代替login并指示secretType为jwt,则jxTMS会用jwt加密来取代普通login的明文用户名密码,同时发送过来的数据也都会用jwt进行加密。

注:由于采用的是http协议,所以此处的增强只具有有限的安全,如果评估后认为安全风险较大,还是应采取https或其它加密信道来增强安全性

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

韶音的骨传导耳机怎么样,韶音骨传导耳机是真的骨传导吗

韶音骨传导耳机最为受瞩目的是OpenRun Pro,在发声单元位置上采用了开孔的处理,佩戴上耳的时候发声单元可以贴合耳道,在低频延伸性,但在中高频的时候整体会出现震感,纤细的耳挂在佩戴的时候是有着不错的舒适度的&#x…

Java SpringBoot+Vue 的班级综合测评管理系统的设计与实现(2.0 版本)

文章目录 1. 简介2. 技术栈 3. 需求分析用户需求分析功能需求分析系统性能需求分析 4系统总体设计与实现4.1总体设计 5 系统功能的详细设计与实现5.1 管理员功能模块5.2学生功能模块5.3教师功能模块 源码下载地址 1. 简介 传统的班级综合测评管理系统,一开始都是手工…

Django实现音乐网站 ⒀

使用Python Django框架制作一个音乐网站, 本篇主要是推荐页-推荐排行榜、推荐歌手功能开发。 目录 推荐页开发 推荐排行榜 单曲表增加播放量 表模型增加播放量字段 执行表操作 模板中显示外键对应值 表模型外键设置 获取外键对应模型值 推荐排行榜视图 推…

基于web的鲜花商城系统java jsp网上购物超市mysql源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于web的鲜花商城系统 系统有2权限:前台…

HCIA---访问控制列表

文章目录 目录 前言 一.ACL简介: 二.ACL工作原理 ACL组成: ​编辑 规则编号: ACL匹配规则: 总结 前言 一.ACL简介: ACL全称为Access Control List,即访问控制表,是一种用于控制网络资源访问…

微软韦青:滑向冰球将要到达的位置 | 科创人数智思维私董会第9期回顾

2023年8月5日,由科创人、北航投资联手创办的科创人数智思维私董会第9期圆满举行。 微软(中国)首席技术官韦青担任本次活动引导嘉宾,近20位来自传统企业、科创企业、投资机构的CEO、技术决策者及领域专家,围绕新人-机时…

【技术篇】• 饮用水除硝酸盐、地下水除砷、矿泉水除溴的技术汇总

我们所说的“自来水”是指从水龙头里放出来的水。但从水龙头里放出来并不等于安全卫生。实际上,原水必须经过各种处理措施之后才能称为安全卫生的饮用水。每一滴水都要经过了混凝、沉淀、过滤、消毒四个步骤的处理,才能去除杂质和细菌,变得安…

恒运资本:简易程序定增是什么意思?

近年来,在我国股市中,简易程序定增成为了一种受欢迎的融资方法。许多人听过它但并不知道它的含义和工作原理。在本文中,我们将从多个角度来分析简易程序定增。 一、什么是简易程序定增? 简易程序定增是指在不需求经过股东大会批阅…

这6本期刊不再被收录!8月SCISSCI期刊目录已更新~

【SciencePub学术】2023年8月21日,科睿唯安更新了Web of Science核心期刊目录。 此次更新后SCIE期刊目录共包含9496本期刊,SSCI期刊目录共包含3554本期刊。此次SCIE & SSCI期刊目录更新,与上次更新(2023年7月)相比…

AD四层板设计(Altium Designer)

AD绘制四层板 前言一、正片层和负片层介绍二、PCB板的叠层设计1.两层板的叠层2.四层板的叠层 三、规则设计参考资料 前言 1、用 Altium Designer 软件绘制电路时,通常2层板能实现设计需求。遇到板框固定,元器件密集的情况下,2 层板无法实现预…

万字长文带你快速了解整个Flutter开发流程

文章目录 背景1.简介与优势Flutter是什么?为什么选Flutter? 2.开发环境搭建安装Flutter SDK配置开发环境 3.创建项目项目结构概览: 4.UI 构建与布局什么是Widget:StatelessWidget和StatefulWidget:Widget的组合&#x…

不规则透明屏:工作原理和特点应用详解

不规则透明屏是一种新型的显示技术,它可以将图像或视频投射到任意形状的透明屏上,使得观众可以从不同角度观看到清晰的图像。 这种技术可以应用于各种领域,如广告、展览、商场等,具有很大的市场潜力。 不规则透明屏的工作原理是…

5款很少人知道的小众软件,先收藏再下载!

​ 今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。 自定义开始菜单图标——TileIconifier ​ TileIconifier是一款可以让你自定义Windows开始菜单图标的软件,它可以替换…

Lnton羚通云算力平台OpenCV Python颜色空间转换与抠图教程

在 OpenCV Python 中,颜色空间转换和图像抠图是常见的图像处理任务。下面我将为你介绍如何进行颜色空间转换和图像抠图。 颜色空间转换: 在 OpenCV Python 中,可以使用 cv2.cvtColor() 函数将图像从一个颜色空间转换为另一个颜色空间。常用的…

jenkins全量迁移

文章目录 1、目的2、迁移1)查看jenkins的主目录2)登录要迁出的服务器打包3)找到对应的war包4)登录对应迁入服务,上传war包和打包的jenkins数据等5)在新的服务器解压迁入的数据等,并查看端口是否…

python实战【外星人入侵】游戏并改编为【梅西vsC罗】(球迷整活)——搭建环境、源码、读取最高分及生成可执行的.exe文件

文章目录 🎥前言💼安装Pygame🔋游戏的实现读写并存储【外星人入侵】游戏最高分游戏源码alien_invasion.pygame_functions.pyship.pyalien.pybullet.pybutton.pyscoreboard.pygame_stats.pysettings.py宇宙飞船和外星人的 .bmp类型文件 &#…

期权酱也来说说期权双卖策略原理

期权option,又称选择权,是一类衍生品合约,买方支付权利金给卖方之后,买方有权在未来的特定日期或之前,以特定的价格向卖方买入或卖出标的资产的权利。下文介绍期权酱也来说说期权双卖策略原理。本文来自:期权酱 期权的…

万宾科技22款产品入选《城市生命线安全工程监测技术产品名录》

2023年8月17日-18日,由北京市地下管线协会主办的2023首届城市生命线安全与发展大会在北京召开,本次大会汇聚中央及地方政府主管领导、院士专家、行业领袖、龙头代表、产业精英等。 大会聚焦安全监管智慧平台和燃气爆炸、城市内涝、地下管线交互风险、第三…

GraphScope,开源图数据分析引擎的领航者

文章首发地址 GraphScope是一个开源的大规模图数据分析引擎,由Aliyun、阿里巴巴集团和华为公司共同开发。GraphScope旨在为大规模图数据处理和分析提供高性能、高效率的解决方案。 Github地址: https://github.com/alibaba/GraphScope GraphScope 的重…

NLP | 基于LLMs的文本分类任务

比赛链接:讯飞开放平台 来源:DataWhale AI夏令营3(NLP) Roberta-base(BERT的改进) ①Roberta在预训练的阶段中没有对下一句话进行预测(NSP) ②采用了动态掩码 ③使用字符级和词级…