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-騰訊雲市場​

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