建设商务网站的理由,廊坊网站建设廊坊网络公司驻梦,自己的淘宝网站怎么建设,网页制作工具知乎本文讲解了如何jxTMS的数据访问框架#xff0c;整个系列的文章请查看#xff1a;docker版jxTMS使用指南#xff1a;4.4版升级内容
docker版本的使用#xff0c;请查看#xff1a;docker版jxTMS使用指南
4.0版jxTMS的说明#xff0c;请查看#xff1a;4.0版升级内容
4…本文讲解了如何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,Noneauth.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时指定了【aloneTrue】也就是说其不会向java侧的jxTMS系统平台中的catalogService进行注册所以无法通过java侧的jxTMS系统平台来对数据收发进行管理。这是由于笔者在测试时需要反复重启python侧的jxTMS服务而且是只使用如下命令进行启动
python3 main.py但其会不断报无法注册到catalogService会极大的干扰调试工作所以就指定了【aloneTrue】以阻止向catalogService进行注册大家如果需要使用java侧的jxTMS系统平台就需要删除【aloneTrue】
继续。然后打开另外一个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