jxTMS--入口

入口

入口就是jxTMS所开发的业务系统需要暴露给外部访问,以完成其工作的功能访问点。这些访问点有两类:

  • 显示一个界面,disp型,目前有三种亚型:显示到主界面中的、显示到辅助界面中的、显示到弹出来的对话框中的。这三种的工作机制完全相同,只是根据显示参数的指示显示到不同的区域

  • 在当前显示处理的界面中执行某种操作,cmd型

根据入口出现位置的不同,又可以把入口划分为:

  • 菜单入口,位于整个页面的左上角的功能菜单区中

  • 快捷功能入口,位于整个页面的左侧的快捷功能树中

  • 工具条,位于在主界面中打开的disp型入口打开的界面的左上角,是该界面提供给用户的相关操作

工具条

其中【显示补充说明、日志、数据变动】即为【订单详情】这个界面的工具条中的三个工具。

  • 操作按钮,即显示给用户的界面中定义的各种按钮

入口主要有两个定义途径:op.py文件中以及web文件。op.py主要定义菜单入口、快捷功能入口、工具条,web文件在定义显示界面时也会定义按钮型的入口。下面我们主要讲解op.py文件中如何定义入口,按钮型入口请参考在线编程手册中web定义部分。

disp入口

demo中演示的订单查询入口:

#所有的入口,必须使用@biz.OPDescr进行修饰
@biz.OPDescr
#函数名无所谓,建议不要动
def op1(json):
	#定义一个左侧快捷功能树中销售订单一栏下的订单查询项,由于转码的问题,中文都必须用utf-8解码一下,否则显示出来是乱码
    json.setShortcut('销售订单'.decode('utf-8'),'订单查询'.decode('utf-8'))
    #本入口位于sales空间order模块中,分别对应capa中的module和name
    json.module('sales').capaname('order')
    #本入口为显示listSalesOrder列表
    json.disp('listSalesOrder')
    #开始定义本入口的参数,入口所有的设置都是流式的,这里分拆开是因为显示不下
    #由于是列表分页查询,所以这两个参数是必须的,且dispType必须是list,dataSource指出数据源
    json.setParam('dispType','list').setParam('dataSource','sales.listOrder')
    #给出本次查询的数据对象的类型,由于sales.order这个capa的joType()就是返回的extOrder,所以这里的objType其实可以不设
    #但为了避免以后有什么调整而修改了joType函数的返回值,所以建议还是明确为好
    json.setParam('objType','extOrder')
    #指定会在他的快捷功能树中显示本入口的角色,后台也会在用户访问本入口时,再次核验其是否映射了这两个角色
    json.role('总经理'.decode('utf-8'),'销售部经理'.decode('utf-8'))

disp型入口,可以出现在菜单项中、快捷功能树中,还可以是工具条。

注:由于用户所看到的界面,是在每次登录后由ORG对象根据其当前映射的所有角色【包括真实角色和这些真实角色所映射的所有虚拟角色】拼合而来,所以如果调整了某用户的岗位或职能,需要其退出当前的登录然后重新登录,而新的其能操作的界面就会立刻生效

cmd入口

demo中没有,我给一个以前做的少儿编程大赛的大赛开始倒计时的入口:

#所有的入口,必须使用@biz.OPDescr进行修饰
@biz.OPDescr
#函数名无所谓,建议不要动
def op(json):
	#定义一个工具条,名为开始倒计时,本入口位于match空间mgr模块中,分别对应capa中的module和name
    json.setA().text('开始倒计时'.decode('utf-8')).module('match').capaname('mgr')
    #点击【开始倒计时】工具条,即触发一个startPrepare的cmd事件,即会执行一个启动大赛倒计时的函数
    json.cmd('startPrepare')
    #指定会在查看大赛详情时显示本入口的角色,后台也会在用户访问本入口时,再次核验其是否为教务部主管。也就是说:
    #只有教务部主管才能看到本入口,才能访问本入口
    json.role('教务部主管'.decode('utf-8'))

cmd型入口,不允许单独出现,其只能是某个界面中的按钮、工具条。很简单的原因,只有disp入口会加载capa,所以cmd入口因为不可能自己加载capa,其只能依附在一个已经显示给用户查看的界面中。

入口链接

由于工具条的存在,所以我们必须为工具条中的那些入口和其要出现在哪些disp入口的工具条中进行显式的绑定。

demo中演示的如何为【订单详情】链接【日志】这个工具条:

#所有的入口,必须使用@biz.OPDescr进行修饰
@biz.OPDescr
#函数名无所谓,建议不要动
def op1(json):
	#为sales.order.disp.sfApproveSalesOrder链接一个affair.mgr.disp.dispAffairLog的工具条
    json.setBtnList('sales.order.disp.sfApproveSalesOrder', 'affair.mgr.disp.dispAffairLog')

入口生效

所有的入口和其它四中开发者定制内容【web、data、sql、capa.py】一样,都是和模块作为一个整体一同被加载和卸载的,所以只要入口修改完毕,然后热机刷新一下,相应的角色再次登录,就能看到他能看到的入口了,而访问权限也同步生效了。

目前,jxTMS已经打包为云服务器镜像,开发者开箱即用:
jxTMS-腾讯云市场​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章