Domino Web開發規則

withwangzhen發表於2011-05-15

Domino Web開發規則

 

Domino Web開發規則之一:Notes命名規範

 

所有的設計元素的命名都分成兩部分,名稱和別名,規定名稱用中文命名,別名用英文,別名儘量使用簡寫,以WEB開發時不會產生較長的URL為前提,提高HTTP Request的響應速度。中文名稱前面加上字母AY用於組織分類和排序。表單和檢視的別名統一在前面加一個空格,代理統一不加空格,其目的是保證在design下看起來對齊一致。

 

1.設計元素

元素

規則

說明

幀結構集

名稱:中文名稱
別名:"frms"+英文

樣例:
啟動幀結構集|frmsStart
內容幀結構集|frmsContent

名稱:中文名稱
別名:"frm"+英文

因為幀只存在於幀結構集中,所以不需要用字母來組織分類。
樣例:
導航幀|frmNav
右邊幀|frmRight

表單

名稱:中文名稱
別名:”fm”+英文(用於存貯)
別名:英文+”.html”(用於顯示)
別名:英文+”.xml”(用於顯示)
別名:英文+”.js”(用於動態JS)

樣例:
申請表單|fmApply
主題表單|fmTopic

說明:
如果表單設計屬於僅限於顯示,如:
HTML\
查詢結果|searchResult.html
XML\
查詢結果|searchResult.xml
JS\
擴充套件日期元件|extCalendar.js
此顯示類表單使用”?readform&login&<引數字串>”開啟。根據實際用途設定ContentType

注:任何需要動態生成顯示內容時(頁面呈現時,呼叫後臺程式碼或複雜的公式設計),如:xml/js/json/html都可使用顯示類表單完成。

檢視

顯示檢視命名

名稱:中文名稱

別名:"vw"+英文["By"+排序關鍵字描述]

程式檢視命名

名稱:"("+中文名稱+")"

別名:"vw"+英文["By"+排序關鍵字描述]

 

檢視的命名與表單是一致的,檢視中文名的組織字母與該表單一致,檢視別名也與表單的別名的英文部分保持一致。

 

比如如果表單名為:申請表單|fmApply,那麼對應的檢視名稱應該是"申請檢視|vwApply"。如果對於一個表單可能有不止一個檢視,經常用的情況是分類檢視,對於此類檢視,命名規範是名稱:中文名稱,別名:"vw"+英文+"By"+類別,

 

樣例:

申請\按日期|vwApplyByDate

申請\按類別|vwApplyByType

(申請\按文件建立日期)|vwApplyByCreateDate

 

注:對於檢視的列,如果沒有強制性的排序要求,請確保所有的文件按建立時間降序排列,這樣新文件才會在最前面顯示(這個問題一定要注意)。

 

檢視一般分為顯示用檢視和程式用檢視。在開發時,公式或程式不要在顯示用檢視中進行操作,如查詢,取值。應另建立程式檢視提供公式或程式使用。這樣不會造成檢視設計發生改變時而影響公式或程式執行。

代理

名稱:中文名稱
別名:"ag"+英文

代理的命名也要與表單保持一致,其名稱的中文組織字母與表單一樣,在表單中經常要使用到QueryOpenAgentQuerySaveAgent,對應的代理應該是與其一致,比如表單"申請表單|fmApply",那麼對應此表單的QueryOpenAgent應該是"申請開啟代理|agApplyOpen",對應此表單的QuerySaveAgent應該是"申請儲存代理|agApplySave",對於非上述兩種情況的代理,不要加open或者save,儘量在代描備註中進行描述此代理作用。

對於所有的代理,如果不是真正意義的定時代理(需要伺服器定時來執行),不要把代理屬性設定成“定時”,如果設定成了定時可能存在一定的風險,並且在不同的系統開啟進行編輯儲存時,代理會自動去查詢執行的伺服器導致design半天不反應。

 

注:定時代理在多伺服器佈署時,如果代理所在資料庫在多臺伺服器上存在複本,請指定定時代理執行的伺服器,以免造成文件複製衝突問題。

子表單

名稱:中文名稱
別名:"sfm"+英文

只用於編輯類子表單

如果只用於編輯類子表單,別名應該為"sfm"+英文簡稱+"Edit"
如果只用於只讀類子表單,別名應該為"sfm"+英文簡稱+"Read"

命名規範:字首+英文,其中的英文如果資料字典有,則必須來自於資料字典,資料字典中沒有的,可自行命名,但需要遵守資料字典中的命名要求。

除了保留域,規範如下:

 

單值文字型別:St+英文,樣例:StTopic

多值文字型別:Mt++英文,樣例:MtAuthor

單值數字型別:Sn+英文,樣例:SnMoney

多值數字型別:Mn+英文,樣例:MnMoney

單值日期型別:Sd+英文,樣例:SdApply

多值日期型別:Md+英文,樣例:MdApply

RTF型別:Rtf+英文,樣例:RtfRemark

 

注:和sap整合的域值可以參考sap參數列的定義,可不嚴格遵守上述域值定義規則。

角色

角色的命名限制:不能超過10個英文字母。

不要用中文命名。

不要用過多的角色,正常情況下一個庫5個以下的角色,刪除無用的角色常用角色:ManagerNormalAllReader

 

 

Domino Web開發規則之二:DOMINO與開發相關的管理規範

1.伺服器HTTP優化設定

·         調整活動執行緒數,HTTP伺服器可以同時處理的請求數,而非連線數、會話數

·         併發執行Web代理

·         HTTP執行緒排隊方式的調優

 

·         JavaMaxHeapSize的設定

 

·         建議升級至6.5.6/7.0.2以上版本,就可以使用下面引數來優化HTTP私有記憶體的使用。

INotesThreadMemoryGivePoolsBack=1

·         HTTP編輯輸出使用utf-8,這是為了在多編碼環境中時避免客戶機與伺服器環境不一致造成程式編碼問題。

2.資料庫ACL許可權控制

建議ACL許可權預設為

條目

型別

許可權

Anonymous

未指定

不可存取

-Default-

未指定

編輯者

建立文件許可權
刪除文件許可權(根據應用開發需求,可選)

LocalDomainAdmins

個人群組

管理者

建立文件許可權
刪除文件許可權

LocalDomainServers

伺服器群組

管理者

建立文件許可權
刪除文件許可權

OtherDomainServers

伺服器群組

不可存取

<當前資料庫所在伺服器名稱>

管理伺服器

管理者

建立文件許可權
刪除文件許可權

3.WEB應用資料庫屬性設定

啟用不維護未讀文件標誌

啟用優化文件表格對映

啟用取消事務日置”(如果佈署伺服器的環境啟用了事務日誌,按當前情況而定)

啟用不支援答覆文件層級”(如果此資料庫使用了答覆文件,而不啟用此項)

啟用允許更多的域

啟用允許壓縮資料庫設計

修改$UpdateBy域條目限制,建議值為5

修改$Revisions域條目限制,建議值為5

具體設定如下圖:

 

Domino Web開發規則之三:以資源管理庫為中心開發

 

資源管理資料庫以管理公用設計元素為主,作為應用系統的框架提供給應用模組開發使用。主要有以下功能:

 

•管理和存放產品類模組(包括核心和標準應用)所需要的HTML模板/JS/CSS/XML/XSL/圖片/控制元件等。如:公共JS函式庫、皮膚所需的CSS和圖片以及各模組公共使用的圖片或圖示等;

•存放公共子表單/Web公共元件/WEB應用介面/公共LS類庫,如:公用子表單、組織機構選擇人員對話方塊以及核心LS類庫或JAVA類庫等;

•管理資料字典,統一維護,減化重複開發工作;如:下拉選單框中值的選擇;

基於此方法管理,能夠

 

•有助於開發團隊間共享專案成果,

•有助於從各個專案積累/封裝出優秀程式碼或元件提供以後專案使用,

1.Web元素管理

 

使用文件管理WEB元素如:HTML模板/JS/CSS/XML/XSL/圖片/控制元件,在產品開發或專案實施時呼叫。這樣有助於應用開發時的變更/維護。如下圖:

JS

CSS

圖片/控制元件/FLASH元件/HTML模板

 

對於產品核心類的圖示或通用的小圖示(不經常修改的)而存放於圖片資源中,供產品和專案開發時使用,如下圖:

2.分類字典管理

統一由資源庫管理分類字典,可以統一進行維護,不必再為每個應用模組的需要而定製簡要表,而且各應用間可共享分類設定。方式如下圖:

3.Web元件

統一由資源庫管理封裝公用元件,供應用模組呼叫。如:公用從檢視刪除指定文件的代理、AJAX方式的DBLookup代理、組織機構人員選擇框、日期選擇器、WORD控制元件JS片斷、意見填寫對話方塊等等。

由於每個應用模組都使用在資源庫的WEB元件,當WEB元件功能修改或升級時,只需要修改資源庫中的WEB元件,而不需要對每個庫進行修改。這樣有利於版本的維護和功能的更新,有助於團隊提高開發效率。

4.公共子表單(sfmCommandFields)

域名

預設值公式

描述

Notes部分

RF_ServerName

@ServerName

型別:姓名,顯示時計算
顯示當前所在伺服器名稱

RF_User

@UserName

型別:姓名,顯示時計算
顯示當前使用者的Notes名稱

RF_UserCN

tmpName:=@NameLookup([NoUpdate];RF_User;"displayname");

@If(tmpName=""|@IsError(tmpName);@Name([CN]; RF_User);tmpName)

型別:姓名,顯示時計算
顯示當前使用者的中文名

如果佈署時使用了等價名時可以使用@UserName(1)代替,使用@NameLookupDOMINO整合了ADSLDAP時使用。此預設公式可按情況而定

RF_DocStatus

@IsDocBeingEdited

型別:姓名,顯示時計算
當前文件狀態

RF_CreateUser

@UserName

型別:姓名,建立時計算
當前文件建立者

RF_CreatedTime

@Created

型別:日期,建立時計算
當前文件建立時間

RF_ResFilePath

"VResource.nsf"

型別:文字,顯示時計算
公共資源庫路徑

RF_OrgFilePath

"VOrgManage.nsf"

型別:文字,顯示時計算
組織機構庫路徑

RF_PortalFilePath

"VPortal.nsf"

型別:文字,顯示時計算
首頁配置庫路徑

RF_WfFilePath

"VWfManage.nsf"

型別:文字,顯示時計算
流程管理庫路徑

RF_DBPath

@ReplaceSubstring(@Subset(@DbName; -1);"\\";"/")

型別:文字,顯示時計算
當前資料庫路徑

RF_FilePath

@LeftBack(RF_DBPath;"/")

型別:文字,顯示時計算
當前資料庫所在目錄

RF_FileName

@Right(DF_DBPath;"/")

型別:文字,顯示時計算
當前資料庫檔名

RF_DBID

@LowerCase(@ReplaceSubstring(@ReplicaID;":";""))

型別:文字,顯示時計算
當前資料庫ID

注:只支援R6以上版本,如果是R5版本可使用計算RF_DBPath

RF_ClientType

@ClientType

型別:文字,顯示時計算
當前客戶端型別

RF_UNID

@Text(@DocumentUniqueID)

型別:文字,顯示時計算
當前文件UNID

Web部分

RF_ResURL

"/"+RF_ResFilePath+"/"

型別:文字,顯示時計算
資源資料庫URL

RF_DBURL

"/"+RF_DBPath+"/"

型別:文字,顯示時計算
當前資料庫URL

RF_DocURL

RF_DBURL +"0/"+RF_UNID+"?opendocument"

型別:文字,顯示時計算
當前文件URL

Query_String_Decoded

Query_String_Decoded

型別:文字,顯示時計算
URL
引數解碼

Server_name

Server_name

型別:文字,顯示時計算
伺服器的宿主名稱、DNS 別名或 IP 地址,將出現在自引用的 URL

HTTP_Referer

HTTP_Referer

型別:文字,顯示時計算
HTTP
頁面引用路徑

Remote_Addr

Remote_Addr

型別:文字,顯示時計算
發出請求的遠端主機的 IP 地址

REMOTE_USER

REMOTE_USER

型別:文字,顯示時計算
返回被驗證的使用者名稱

Path_Info

Path_Info

型別:文字,顯示時計算
附加的路徑資訊(相對於伺服器的 HMTL 根目錄),與客戶機給出的相同。換句話說,Script. 可以通過虛擬路徑名稱存取,後面是作為 PATH_INFO 傳送的附加資訊

此子表單做為表單必需子表單,提供這些域供JS、公式和LS方便使用。在開發時將此子表單拷貝至所需要開發的資料庫。

 

5.公共函式庫(LotusScript:LSCore)

 

LS存放公共函式,此類函式或過程與應用模組無關(包括產品應用/專案應用模組),完成從產品核心程式碼角度上考慮,彌補LotusScript功能上不足之處,以產品核心為中心積累公共函式,供產品應用和專案應用使用,做為程式碼基礎呼叫的統一介面。

 

存放在此類的函式或過程由產品部統一規劃及嚴格控制。

 

封裝完成後,將所有程式碼引出至文字檔案中,使用%include引用進行預編譯。

 

6.工作流函式庫(LotusScript:LSWorkFlow)

 

LS存放處理工作流相關函式和過程,此類函式或過程被相關聯的代理呼叫,完成工作流引擎上的處理。供產品應用和專案應用使用,做為程式碼呼叫工作流功能的統一介面。

 

此函式庫以LSCore為基礎。在構建時使用LSCore,即在Options中加入

 

Use “LSCore”

 

存放在此類的函式或過程由產品部統一規劃及嚴格控制。

 

封裝完成後,將所有程式碼引出至文字檔案中,使用%include引用進行預編譯。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24998103/viewspace-695431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章