jxTMS使用示例--使用静态web界面

110 篇文章 0 订阅
44 篇文章 0 订阅

使用本示例需通过docker容器,请先下拉jxTMS的docker镜像并按说明启动tms容器,并从helloWorld开始尝试。

使用静态web界面

到目前为止,我们所演示的界面都是在web文件定义的,jxTMS会根据这些定义动态的创建界面,这种方式称为动态界面。显然,动态界面的控件都是根据参数动态生成的而且布局非常单一,也不支持图像、色彩等,所以其界面的美学肯定是不高的,这对于内部使用的业务系统来说,不是问题,还有成本低、制作快的优势。但如果面向较大范围的应用来说,可能就无法接受了。

所以,jxTMS在默认的动态界面模式之外,还支持静态界面,即web界面显示的是美工和前端制作好的html、js、css等文件,而jxTMS则只提供后台业务逻辑。

注:jxTMS在web处理上采用了自己的会话管理机制,所以如果开发者想采用静态界面,则必须自己处理登录和会话管理

登录

登录的接口是:

方法:post
uri:/ui/login
参数:
	Type:字符串,默认按登录名登录,【contact】则按通信号码登录
	Name:字符串,登录名
	Passwd:字符串,密码
	useCDS:必须是true,指示本次登录工作在静态界面模式,否则无法接收到jxTMS发送的数据

如:

http://127.0.0.1:10018/ui/login?Name=manager&Passwd=123456&useCDS=true

参数还可以是加密的,以json格式传递给jxTMS。

注:加密的js请按jxTMS的docker镜像最下方的方式向笔者索取

如果登录成功,则返回一个json对象:

{
meta:{
	type:"obj",//返回的数据类型,可以忽略
	rc:200,//http返回代码,成功为200,重定向为304,内部错误401,未找到404
	msg:"返回的消息"
	},
data:{
	jxSessionID:xxxxxxx,//返回的会话号,以后每次和jxTMS通信都必须附加此会话号
	peopleName:nnnnn,//用户的登录名
	orgFullName:nnnnn,//登录到的组织全名
	orgAbbr:nnnnn,//登录到的组织简称
	}
}

会话管理

登录后,以后每次请求jxTMS时,都应在url中添加会话号:

//xxxxxxx是登录成功后所获取到的jxSessionID值
/apiv2/ping/?SessionID=xxxxxxx
给静态界面增加接口

想访问jxTMS的某个接口,必须通过授权。而接口的授权,jxTMS是通过在op.py中以role的形式授予的。

所以,如果我们想让静态web界面访问某功能模块的某事件响应函数,必须在op.py文件中定义入口并授权。大家可以打开codeDefine目录下的manager/op目录,看一下op.py文件:

@biz.OPDescr
def op(json):
	json.setA().text('前端用于测试-ping'.decode('utf-8'))
	json.module('manager').capaname('op')
	json.cmd('ping')

也就是授权manager.op.cmd.ping谁都可以访问

然后再看capa.py文件中的ping函数:

@myModule.OutDescr('execResult','bool','true:执行正确'.decode('utf-8'))
@myModule.OutDescr('pong','string、int等基础类型都可以','送入的参数'.decode('utf-8'))
@myModule.InDescr('p','string、int等基础类型都可以','送入的任意参数'.decode('utf-8'))
@myModule.MotionDescr('系统是否存活'.decode('utf-8'))
@myModule.api('apiv2')
@myModule.event('cmd', 'ping')
def ping(self, db, ctx):
	p = self.getInput('p')
	jx.log("p:{}",p)
	jx.log("ap:{}",self.getInput('ap'))

	self.setOutput('pong',p)
	self.setOutput('execResult',True)

	#self.delayExec(1000,self.test,self.getInput('apiKey'))

	return False

注意其中的@myModule.api(‘apiv2’),这是为其指定了一个uri形式的访问接口,前端即可通过访问:

http://127.0.0.1:10018/apiv2/ping?SessionID=1664658381471760

来调用ping函数了。即在用@myModule.api(‘pathName’)修饰了某个函数后,该函数的uri即为:

/pathName/函数名

给其拼接上SessionID,jxTMS即会调用相应的函数。

我们在post该uri时,以json格式传递:

{'p':'t123',ap:23.45}

jxTMS即会为ping函数准备好输入p和ap。大家可以在日志中看到这两个参数的显示。

ping函数执行后,会返回执行结果如下:

{"meta":{"rc":200,"msg":"OK"},"data":{"capaid":"ca_1664658394054673","pong":"t123","execResult":true}}"

data节点中的pong和execResult就是我们在ping函数中调用self.setOutput所返回的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值