docker版jxTMS使用指南:python服务之设备策略

news2024/12/23 0:30:57

本文讲解4.0版的jxTMS中python服务的设备策略,整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容

docker版本的使用,请参考:docker版jxTMS使用指南

jxTMS实现的接口机对设备的数据采集与处理采取的是框架组装模式。

即jxTMS定义了一整套的设备数据采集、处理、查询/访问的工作机制,然后只需要针对新类型的设备、不同用户、不同的操作需求、不同的服务等级进行定制,然后一一注册到该框架中即可。

加上jxTMS的python服务还支持动态升级,所以jxTMS实现了动态的、简单的、灵活的升级与伸缩能力。

接口机python服务提供的可以动态升级的能力有:

1、新类型设备如何解析、处理数据

定义该类型设备的数据处理策略,然后用policy.registerPolicy注册即可。

类似app/policy_vrs20.py,然后动态加载【loadNewPy】这样的py文件即动态增加了对新类型设备的数据解析能力。

注:app.policy_vrs20模块在app/device_vrs20.py中被引用

2、新类型设备如何保存数据

定义该类型设备的数据类,然后用Device.register注册即可。

类似app/data_vrs20.py,然后动态加载【loadNewPy】这样的py文件即动态增加了对新类型设备的数据保存能力。

注:app.data_vrs20模块在main.py中被引用

3、新类型设备的特殊处理与生成

继承device类,然后针对性处理,然后用device.registerDevType注册即可。

类似app/device_vrs20.py,然后动态加载【loadNewPy】这样的py文件即动态增加了对新类型设备的处理能力。

注:app.device_vrs20模块在main.py中被引用

4、新的操作

定义对应的操作函数,然后用auth.registerOP注册即可。

类似app/op_getDevData.py,然后动态加载【loadNewPy】这样的py文件即动态增加了对新的操作。

注1:app.op_getDevData模块在main.py中被引用

注2:新增的操作必须在相应的资源(组)的权限管理中追加操作才能被执行,通过【操作权限查询】,按【资源(组)】进行条件查询,然后对该权限执行【修改操作】。如果没有相应资源(组)的权限配置,则新增相应的资源配置。权限配置完毕,要对影响到的资源(组)做权限下发,新的操作才会被相应的用户有权操作

5、给操作后得到的数据增加SLA【服务水平,如不同的精度、不同的粒度、不同的范围等等】

完成操作后,根据数据类型和用户的不同,可以提供针对性的SLA。只需要针对不同的SLA分别定义对应的数据处理函数,然后将这些数据处理函数以数据类型、角色用dataPolicy.register注册跟即可。

类似app/dualResult_vrs20.py,然后动态加载【loadNewPy】这样的py文件即动态增加了对新数据类型、新的角色提供的操作后过滤能力。

注1:app.dualResult_vrs20模块在main.py中被引用

注2:未注册的数据类型直接返回原数据;注册了数据类型时,按用户名、用户角色、默认这三个顺序依次搜索,找到就交其处理,未找到则返回原数据

SLA只是数据策略的一个应用,在jxTMS中,数据策略称为数据的后处理。即设备所接收到的数据有三次处理机会:

  • 设备接收到的数据会交给设备所配置的数据处理策略进行解析、处理、保存等

  • 当用户发起操作并通过授权检验后,jxTMS会调用相应的操作函数来执行该操作。虽然我们示例的操作就是读取设备的实时数据,但也不排除根据需要对数据进行加工处理

  • 当用户操作完毕,取得操作后的数据时,jxTMS会检查是否有合适的数据转换策略,如果有则调用该策略对获取到的数据进行转换后再递交用户,否则直接将数据递交用户

注:数据策略使用dataPolicy.register进行注册:

引用:

from jx.dataPolicy import dataPolicy

dataPolicy.register函数说明:

register(cls, type, dual, target=‘default’)

注册一个数据转换策略

参数:
	type:数据类型
	dual:处理函数
	target:期望匹配的目标,应该是角色名,默认是default,即该类型数据的默认转换策略
返回值:
	无
说明:
	1、同一数据类型,数据转换策略的搜索顺序是:用户名、用户的各角色、default,先找到哪个就用哪个;没找到就返回原数据
	2、dual函数的签名是:
		dual(data)
			data:当前数据

6、mqtt接收到不同的主题如何处理【参考后继的mqqt讲解】

定义对应的处理函数,然后用mqttClient.registerDual注册即可。

main.py中注册了default的topic,即处理所有未指明的topic消息

7、增加新的rest接口来执行操作【参考后继的web讲解】

有两种方案:

a web服务尚未启动前

定义继承自UserRouter的相应的uri处理类,然后用web.register在web服务启动前注册即可。

类似app/web.py,但其中所增加的uri【/api/getDeviceData】只能在web服务启动前添加,无法被动态加载。

b web服务已经启动

增加一个新的操作【需授权】,然后通过/api/access访问即可。即,本方法或说/api/access是将权限、操作、SLA进行了深度融合后的产物,只需要增加新的操作并授权,即可通过/api/access访问。

注:/api/access实质上只是将user.access暴露给了web访问,给user.access提供了web访问通道

8、增加新的告警方式

定义继承warnPolicy的告警策略,然后重写dual对象函数后,然后创建一个该策略的实例用warnPolicy.register注册即可。

类似app/warnPolicy_dingding.py,然后动态加载【loadNewPy】这样的py文件即动态增加了新的告警方式。

注:app.warnPolicy_dingding模块在main.py中被引用

warnPolicy.register的函数签名:

register(cls, type, wp, purpose=None)
type:使用告警策略对象的类型
wp:告警策略实例
purpose:如果一种类型需要更详细的告警策略区分,则用purpose来辅助区分

结语

本文一共讲述了8种动态扩展,加上上篇文章中的注册新型站点,所以jxTMS的python服务一共提供了9种动态扩展能力:

接口机动态升级能力

笔者在main.py中做了说明:本示例一共用到了8种动态注册,本文讲述的这8种动态扩展都使用到了【7b的web服务启动后添加access动作未示例】,只有site.register没被用到。

参考资料:

jxTMS设计思想

jxTMS编程手册

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

如何用jxTMS开发一个功能

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

jxTMS的HelloWorld

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

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

相关文章

Elastic Stack 和 Docker-Compose 入门

作者:Eddie Mitchell 随着 Elastic Stack 多年来的发展和功能集的增加,在本地开始或尝试概念验证 (POC) 的复杂性也越来越高。 虽然 Elastic Cloud 仍然是开始使用 Elastic 最快、最简单的方式,但对本地开发和测试的需求仍然非常丰富。 作为开…

【生成任务下推生成子工序生产计划,无法结单】

今天,车间反馈了一个问题,bpm结单报错。 原先定的流程是,生产任务单审批流程走完之后,下推到MES,生产子工序生产计划。 这个审批流最后要到制品,这个工单做完了,制品也包装好了,流程…

用于改进筛查的乳腺癌异常检测

介绍 乳腺癌是一种严重的疾病,影响着全世界数以百万计的妇女。即使医学领域有了进步,对乳腺癌进行识别和治疗是可能的,但发现它并在早期阶段治疗它仍然是不可能的。 通过使用异常检测技术,我们可以识别出乳腺癌中肉眼可能看不到的…

STM32——关于EXTI讲解及标准库应用(基础篇)

简介: STM32的中断包括EXTI外部中断、TIM定时器、ADC模数转换器、USART串口,SPI通信、I2C通信等一系列的外设。这篇主要来讲解关于EXTI外部中断的概念和应用。EXTI(External Interrupt)是一个非常重要的外部中断模块,…

chatgpt赋能python:Python多条图形绘制在一张图里的实现方法及应用

Python多条图形绘制在一张图里的实现方法及应用 作为一款优秀的编程语言,Python在数据可视化方面有着非常出色的表现。然而有时候我们需要在一张图里绘制多条不同的图形,这时候Python又有什么好的解决方案呢?本文将介绍多种方法实现Python在…

10个最流行的可生成图像嵌入向量的预训练AI模型

迁移学习的出现进一步加速了计算机视觉——图像分类用例的快速发展。 在大型图像数据集上训练计算机视觉神经网络模型需要大量的计算资源和时间。 幸运的是,通过使用预训练模型可以缩短时间和资源。 利用预训练模型的特征表示的技术称为迁移学习。 预训练通常使用高…

《MySQL(三):基础篇- 函数》

文章目录 3. 函数3.1 字符串函数3.2 数值函数3.3 日期函数3.4 流程函数 3. 函数 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在MySQL中 已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应…

Vue.js 中的响应式原理是什么?

Vue.js 中的响应式原理是什么? Vue.js 是一种流行的前端框架,它使用了一种称为“响应式”的技术来实现数据绑定。这意味着当数据发生变化时,Vue.js会自动更新相关的视图,而无需手动操作DOM。在本文中,我们将深入探讨V…

【SCI征稿】Elsevier旗下中科院2区TOP, 仅1周见刊, 6月11日截稿 (文末有好)~

一、【期刊简介】 中科院2区智能计算类SCI (TOP/6.11截稿) 【期刊概况】IF:8.0-9.0, JCR1区, 中科院2区; 【终审周期】走期刊部系统,3-5个月左右录用; 【检索情况】SCI&EI双检;正刊; 【数据库收录年份】2001年…

RHCE练习题目【更新至】

文章目录 第一题、安装和配置ansible第二题、创建和运行ansible临时命令第三题、使用剧本安装软件包第四题、使用RHEL系统脚色第一问、配置时间同步第二问、配置selinux 第五题、使用Ansible Galaxy安装角色第六题、创建和使用角色第七题、从Ansible Galaxy使用角色第八题、创建…

一文搞定国民N32G435高负载串口通信

副标题:USRAT无硬件双缓冲条件下的软件双缓冲 一、前言 在单片机中,USART的通信一般都是最常用也最先去接触的串口外设,在一般的小数据量应用中一般不需要考虑USART串口(以下简称为串口)的高负载能力,比如…

第六十五天学习记录:高等数学:函数与极限(宋浩板书)

C语言学习后,曾为先学C还是数据结构纠结了半天。在看数据结构前言的时候,发现学习数据结构之前还需要一定的数学基础。虽然涉及到的数学基础不多,但想到以前大学高数,现代不是60分万岁就是不到80分,好像就概率论稍微了…

【Python】Python系列教程-- Python3 循环语句(十七)

文章目录 前言while 循环无限循环while 循环使用 else 语句简单语句组for 语句for...elserange() 函数break 和 continue 语句及循环中的 else 子句pass 语句 前言 往期回顾: Python系列教程–Python3介绍(一)Python系列教程–Python3 环境…

Treap C++代码实现

一、全部代码 #include <iostream> #include <cstdlib> #include <time.h>using namespace std;//Treap结构 struct TreapNode {TreapNode *pLeft, *pRight;int value, fix; };//左旋 void TreapLeftRotate(TreapNode* &pCur){//首先&#xff0c;找到当…

平衡树原理讲解

平衡树——Treap 文章目录 平衡树——TreapBST定义性质操作插入insert(o, v)删除del(o, v)找前驱 / 后继get_prev(o)、get_next(o)查找最大 / 最小值get_min(o)、get_max(o)求元素排名get_rank(o)查找排名为 k k k的元素get_value_by_rank 平衡树左旋、右旋zag(o)、zig(o)左旋右…

Vue路由(vue-router)详细讲解指南

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成&#xff0c;让构建单页面应用变得易如反掌。路由实际上就是可以理解为指向&#xff0c;就是我在页面上点击一个按钮需要跳转到对应的页面&#xff0c;这就是路由跳转&#xff1b; 首先我们来学习三个单词&…

运维小白必学篇之基础篇第八集:LVM实验

LVM实验 实验一&#xff1a; 使用/dev/sdb磁盘完成以下操作&#xff1a; 1、创建5个物理卷&#xff0c;组成大小为10G的卷组vgtest 2、创建大小为3G的逻辑卷lv1&#xff0c;格式化xfs文件系统&#xff0c;实现开机自动挂载 3、为lv1逻辑卷扩容至5G&#xff0c;然后查看扩容之…

男子路遇“纸片鸟”,AI帮忙免惹祸

据报道&#xff0c;近日&#xff0c;河南洛阳一网友在路边偶遇一只“纸片鸟”&#xff0c;小鸟远看像一张纸片&#xff0c;样子十分奇特&#xff0c;而且还死死地盯着自己&#xff0c;像是求救&#xff0c;后来他用手机一查发现是二级保护动物“黄斑苇鳽”&#xff0c;便报警处…

排水管网监测预警系统:为城市排水建设提质增效

最近&#xff0c;城市生命线安全工程占据着行业的头条榜单&#xff0c;与民众生活密不可分的城市基础设施&#xff0c;包括城市的燃气、桥梁、供水、排水、供热、综合管廊等被称为城市生命线。城市生命线安全工程是城市更新和新型城市基础设施建设的重要内容&#xff0c;其主要…

数说故事×中广协丨广告代言人内容商业沙龙走进大湾区

以“娱时俱进&#xff0c;内容赋能”为主题的广告代言人内容商业沙龙&#xff08;大湾区站&#xff09;&#xff0c;近日在广州市白云区美湾广场成功举行。 沙龙由中国广告协会作为指导单位&#xff0c;广东省广告协会与中国广告协会广告代言人工作委员会联合主办&#xff0c;广…