Lotus學習心得(-)
一、前言
許多初學Lotus Notes(Lotus Notes以下簡稱Notes)的朋友常常會因為Notes學習範圍太廣、教育訓練課程太貴、中文資料太少?等等因素,而不知該從何開始入門學習。不過因為這些因素而放棄的話,其實是非常之可惜的,畢竟Notes的功能及其整合性在群組軟體領域中,仍然是領先其它群組軟體的佼佼者。
Louis為了讓許多初學Notes的朋友可以快速上手,所以決定著手撰寫此係列的文章,希望以最淺顯易懂的白話文來為初學者建立Notes程式設計最基本的觀念(但會不會中斷不敢保證 :p)。不過既然是「隨筆」,所以一些順序的編排就不會那麼的有系統。另外,在章文中雖然偶爾會提到一些技術觀念,但並不屬於高深的技術檔案,純粹只是觀念養成的文章。若您想進一步瞭解文中提及的觀念時,Louis「強烈」建議直接參考Notes程式設計說明資料庫。當然,本系列文章中若有訛誤還請各位前輩高手多多指教。
二、Notes學習方向
Notes的學習方向主要分為程式設計與系統管理兩部份,一般通稱為Notes AD(Application Development)與SA(System Administration),而這也是IBM官方的說法。不過,有時候AD也有人稱為AP,而SA則常會與IT界常用的系統分析(System Analysis)搞混,所以在與其它朋友交流時可千萬不要雞同鴨講。
但不論是Notes AD還是SA的知識,這兩者並無明確界線,而且兩者其實是相輔相成的。以ACL的設定來講,就無法明確歸納至AD或SA任一範疇,因為不管是在開發應用程式(應用程式以下簡稱AP)或是管理Domino系統,ACL的設定都是必須的常識。另外,在開發Web AP時,為了讓瀏覽器使用者可以正常瀏覽存取Web AP的內容與資料,也須要先在伺服器上做一些設定,而這也是開發人員所須要了解的。
所以就Louis個人的觀點而言,千萬不要將自己的角色侷限在程式設計師或系統管理員而排斥學習任何一方面的知識。因為如此只會讓您在執行一些任務時捉襟見肘罷了。接下來就讓我們進入的正題吧!!
三、Notes資料庫的分類與基礎結構
在學習Notes AP開發的第一步驟,就是要先對Notes資料庫有所瞭解,如此才不會因為觀念不足或是錯誤而導致在開發過程中產生阻礙。所以Louis先整理一些觀念讓您稍微瞭解:
(一)Notes資料庫的分類
以目前市場上的資料庫產品而言,就資料型態、功能性或配置方式分成好幾類,例如最常聽到的就是關聯式資料庫(Relational Database),通常簡稱為RDBMS或是RDB,而最具代表性的就是Oracle、DB2、Informix、SQL?等等,不過這都是要付授權費,如果是免費的,目前最紅的該屬MySQL了(Notes都可以跟這些資料庫整合喔~~)。
就資料型態而言,Notes屬於檔案式資料庫而非關聯式資料庫。很多初學Notes的朋友對檔案式資料庫這名詞通常都會很疑惑,一是因為網路上很難找到相關資訊,二是對Notes還不是很瞭解。不過在之後的內容中Louis會陸續說明檔案的觀念。
就資料庫的配置方式而言,Notes則被歸類在分散式資料庫,為什麼呢?因為Notes 的資料庫可以藉由抄寫機制,將各資料庫抄本分置到各伺服器與客戶端中。分散式資料庫的理論在網路上有很多資料,若有興趣的話可以到各大搜尋引擎網站找找。
(二)Notes資料庫的結構
每一個Notes資料庫在windows OS下是以檔案格式存在的,其副檔名通常是NSF,也就是Notes Storage Facility的簡寫,翻譯成中文就是Notes儲存裝置。至於副檔名NTF也是Notes範本資料庫,全名是Notes Template Facility,是用來產生一般資料庫的範本。也就是說,您可以利用模板資料庫來新建一個資料庫,而此資料庫中的設計是與模板資料庫的設計一模一樣的。
按照官方的說法,每個Notes資料庫是由四個基本元件所組成:
1.ACL:
就是Access Control List,一般翻譯成存取控制清單,或是許可權控制清單,顧名思義就是讓資料庫管理員可以指定使用者對該資料庫執行何種動作。
2.設計元件:
是指套表、視界、外框、圖文框、領航員?等等元件,而這些都是Notes資料庫最最基礎的元件,也是用來讓資料庫可以與使用者互動的基本元件,沒有這些元件,資料庫即無法運作。
3.所謂邏輯:
是指程式設計師在資料庫中所撰寫的程式語言,Lotus Script、公式、代理程式都是。主要是要運算處理資料庫中的資料,或者達成某些自動化的作業。
4.資料:
是指儲存在檔案中的文字、數字、日期時間、附加檔案?等等資訊。
四、資料的安全控管
若要簡單描述Domino對資料的安全控管,基本上由外而內可以分成幾關:伺服器è資料庫è檔案è隱藏公式。
以伺服器這一關來說,是在伺服器檔案中控管的,例如允許或不允許哪些使用者存取此伺服器、允許或不允許哪些使用者可以在伺服器上建立或刪除資料庫…等等。
若是使用者被賦予存取伺服器的許可權,就會進入到資料庫安全控管這關,而這關的安全控管就是由資料庫ACL來決定的。
再來是檔案的安全性控管,這是經由套表屬性之安全卷標下的選項,以及讀者與作者欄位來處理的。
最後就是隱藏公式,其實,隱藏公式根本就不算是安全性控管的方法,這隻能說是開發技巧。因為即使透過隱藏公式把套表中的特定欄位隱藏起來,使用者仍然可以透過檔案屬性方塊看到各欄位中的資料。
五、ACL
既然我們在前面多次談到ACL,不稍微跟他交個朋友好像說不過去,所以在這兒就為大夥兒引薦他吧,呵呵。在ACL中主要有幾種元件設定:使用者類型、許可權類型、執行動作。
設定使用者類型是為了避免ID被誤用。舉例來說,通常伺服器在資料庫ACL中都是管理員許可權,假設伺服器ID被有心人士盜用,可能就會造成極大的破壞。所以為了防範有心「人」士進行這種破壞行動,就必須在ACL中正確設定為伺服器類型,如此該人士即使拿到伺服器ID也沒辦法使用Notes client來對資料庫執行任何活動。因為,伺服器不是「人」,所以不會使用Notes client(不過在系統管理中,Louis強烈建議把伺服器當作是「人」,這樣有助於管理概念的建立)。但相對的,如果未設定適當的類型,也會導致某些動作無法執行。
再來是許可權類型,依許可權低高依序有七層-沒有許可權、儲存者、讀者、作者、編輯者、設計師、管理員。【沒有許可權】當然就不能對資料庫執行任何動作,因為連進去的權利都沒有。Louis常戲稱【儲存者】為工讀生許可權,儲存者僅能輸入資料到資料庫中,輸入完畢後,就無法再看到這些資料。感覺就像找了一位工讀生來key in大量資料到資料庫中,但又不想讓工讀生記起這些資料或是看到其它資料。
先假設檔案或套表中沒有讀者欄位,當使用者被賦予【讀者】許可權時,使用者就只能閱讀檔案,而不能編輯檔案,當然更不可能建立檔案(可執行動作之建立檔案選項被強制disable了)。不過,一但檔案中有讀者欄位,若使用者的名稱未在讀者欄位的名稱清單之中,則即使有再高的ACL許可權還是無法閱讀該檔案。
至於【作者】許可權就必須跟【作者】欄位配合使用才具效用,當使用者被賦予【作者】許可權,但作者欄位中的使用者名稱卻是別位使用者時,這時即使該份檔案是目前使用者所建立,但因為其名稱未列於作者欄位中,所以無法編輯該檔案,僅能閱讀而已。順帶一提,如果使用者被賦予【編輯者】(含)以上許可權,但檔案中的作者欄位中並沒有這位使用者名稱,使用者還是可以編輯檔案,因為【作者】許可權必須跟【作者】欄位配合使用才具效用,也就是說【編輯者】(含)以上許可權不受作者欄位的約束。
至於【設計師】許可權就是多了使用Domino Designer來開發AP的許可權。而管理員則是多了修改ACL的許可權。
茲概略整理下表以供參考:
管理者 設計者 編輯者 作者 讀者 儲存者 沒有權利
ACL設定 V
建立修改設計元件 V V
編輯所有檔案 V V V
編輯自已檔案 V V V V
增加新檔案 V V V V V
讀取所有檔案 V V V V V
在資料庫建立時,會在ACL的使用者清單中看到-Default-這筆專案。-Default-的作用是,當使用者在ACL中找不到適用於自己的許可權時,就套用-Default-的許可權。也就是說,凡名稱未明列在ACL中或未包含在ACL的群組中,就套用-Default-的許可權。在開發AP時若無特殊需求,-Default-通常都設定為編輯者。
您還會看到LocalDomainServers群組與OtherDomainServers群組。顧名思義,只要是與目前資料庫的所在伺服器位在同一Domino網域的伺服器都會自動包含在LocalDomainServers群組中,除非您去names.nsf中更改此群組檔案,那又另當別論了Orz。所以此群組預設許可權是管理員,主要是為了讓相同網域內的伺服器可以進行抄寫作業。至於OtherDomainServers群組就是跟LocalDomainServers相反了,因為此群組的成員均為不同網域外的Domino伺服器,而且預設是無許可權。有些集團企業因為有一個以上的Domino網域,所以可能會利用此群組來達到某些跨網域存取的需求。不過,在達成此類需求時,請先手動把那些位於不同網域的伺服器名稱加到names.nsf中的OtherDomainServers群組檔案喔。
最後要談到Anonymous這個特殊專案,這是要手動新增給Web AP使用的。也就是當未透過Web ID & Password登入的使用者,均會被視為匿名者並套用Anonymous專案的許可權。若Web AP未設定此專案時,當您使用瀏覽器開啟資料庫時,系統就會給您一個警告,要求您到ACL中新增此一專案喔。請特別注意,在開發Web AP時若無特殊需求,請將此專案設為無許可權,否則您資料庫中的資料可能就會在網路上趴趴造了~~。
許多初學Lotus Notes(Lotus Notes以下簡稱Notes)的朋友常常會因為Notes學習範圍太廣、教育訓練課程太貴、中文資料太少?等等因素,而不知該從何開始入門學習。不過因為這些因素而放棄的話,其實是非常之可惜的,畢竟Notes的功能及其整合性在群組軟體領域中,仍然是領先其它群組軟體的佼佼者。
Louis為了讓許多初學Notes的朋友可以快速上手,所以決定著手撰寫此係列的文章,希望以最淺顯易懂的白話文來為初學者建立Notes程式設計最基本的觀念(但會不會中斷不敢保證 :p)。不過既然是「隨筆」,所以一些順序的編排就不會那麼的有系統。另外,在章文中雖然偶爾會提到一些技術觀念,但並不屬於高深的技術檔案,純粹只是觀念養成的文章。若您想進一步瞭解文中提及的觀念時,Louis「強烈」建議直接參考Notes程式設計說明資料庫。當然,本系列文章中若有訛誤還請各位前輩高手多多指教。
二、Notes學習方向
Notes的學習方向主要分為程式設計與系統管理兩部份,一般通稱為Notes AD(Application Development)與SA(System Administration),而這也是IBM官方的說法。不過,有時候AD也有人稱為AP,而SA則常會與IT界常用的系統分析(System Analysis)搞混,所以在與其它朋友交流時可千萬不要雞同鴨講。
但不論是Notes AD還是SA的知識,這兩者並無明確界線,而且兩者其實是相輔相成的。以ACL的設定來講,就無法明確歸納至AD或SA任一範疇,因為不管是在開發應用程式(應用程式以下簡稱AP)或是管理Domino系統,ACL的設定都是必須的常識。另外,在開發Web AP時,為了讓瀏覽器使用者可以正常瀏覽存取Web AP的內容與資料,也須要先在伺服器上做一些設定,而這也是開發人員所須要了解的。
所以就Louis個人的觀點而言,千萬不要將自己的角色侷限在程式設計師或系統管理員而排斥學習任何一方面的知識。因為如此只會讓您在執行一些任務時捉襟見肘罷了。接下來就讓我們進入的正題吧!!
三、Notes資料庫的分類與基礎結構
在學習Notes AP開發的第一步驟,就是要先對Notes資料庫有所瞭解,如此才不會因為觀念不足或是錯誤而導致在開發過程中產生阻礙。所以Louis先整理一些觀念讓您稍微瞭解:
(一)Notes資料庫的分類
以目前市場上的資料庫產品而言,就資料型態、功能性或配置方式分成好幾類,例如最常聽到的就是關聯式資料庫(Relational Database),通常簡稱為RDBMS或是RDB,而最具代表性的就是Oracle、DB2、Informix、SQL?等等,不過這都是要付授權費,如果是免費的,目前最紅的該屬MySQL了(Notes都可以跟這些資料庫整合喔~~)。
就資料型態而言,Notes屬於檔案式資料庫而非關聯式資料庫。很多初學Notes的朋友對檔案式資料庫這名詞通常都會很疑惑,一是因為網路上很難找到相關資訊,二是對Notes還不是很瞭解。不過在之後的內容中Louis會陸續說明檔案的觀念。
就資料庫的配置方式而言,Notes則被歸類在分散式資料庫,為什麼呢?因為Notes 的資料庫可以藉由抄寫機制,將各資料庫抄本分置到各伺服器與客戶端中。分散式資料庫的理論在網路上有很多資料,若有興趣的話可以到各大搜尋引擎網站找找。
(二)Notes資料庫的結構
每一個Notes資料庫在windows OS下是以檔案格式存在的,其副檔名通常是NSF,也就是Notes Storage Facility的簡寫,翻譯成中文就是Notes儲存裝置。至於副檔名NTF也是Notes範本資料庫,全名是Notes Template Facility,是用來產生一般資料庫的範本。也就是說,您可以利用模板資料庫來新建一個資料庫,而此資料庫中的設計是與模板資料庫的設計一模一樣的。
按照官方的說法,每個Notes資料庫是由四個基本元件所組成:
1.ACL:
就是Access Control List,一般翻譯成存取控制清單,或是許可權控制清單,顧名思義就是讓資料庫管理員可以指定使用者對該資料庫執行何種動作。
2.設計元件:
是指套表、視界、外框、圖文框、領航員?等等元件,而這些都是Notes資料庫最最基礎的元件,也是用來讓資料庫可以與使用者互動的基本元件,沒有這些元件,資料庫即無法運作。
3.所謂邏輯:
是指程式設計師在資料庫中所撰寫的程式語言,Lotus Script、公式、代理程式都是。主要是要運算處理資料庫中的資料,或者達成某些自動化的作業。
4.資料:
是指儲存在檔案中的文字、數字、日期時間、附加檔案?等等資訊。
四、資料的安全控管
若要簡單描述Domino對資料的安全控管,基本上由外而內可以分成幾關:伺服器è資料庫è檔案è隱藏公式。
以伺服器這一關來說,是在伺服器檔案中控管的,例如允許或不允許哪些使用者存取此伺服器、允許或不允許哪些使用者可以在伺服器上建立或刪除資料庫…等等。
若是使用者被賦予存取伺服器的許可權,就會進入到資料庫安全控管這關,而這關的安全控管就是由資料庫ACL來決定的。
再來是檔案的安全性控管,這是經由套表屬性之安全卷標下的選項,以及讀者與作者欄位來處理的。
最後就是隱藏公式,其實,隱藏公式根本就不算是安全性控管的方法,這隻能說是開發技巧。因為即使透過隱藏公式把套表中的特定欄位隱藏起來,使用者仍然可以透過檔案屬性方塊看到各欄位中的資料。
五、ACL
既然我們在前面多次談到ACL,不稍微跟他交個朋友好像說不過去,所以在這兒就為大夥兒引薦他吧,呵呵。在ACL中主要有幾種元件設定:使用者類型、許可權類型、執行動作。
設定使用者類型是為了避免ID被誤用。舉例來說,通常伺服器在資料庫ACL中都是管理員許可權,假設伺服器ID被有心人士盜用,可能就會造成極大的破壞。所以為了防範有心「人」士進行這種破壞行動,就必須在ACL中正確設定為伺服器類型,如此該人士即使拿到伺服器ID也沒辦法使用Notes client來對資料庫執行任何活動。因為,伺服器不是「人」,所以不會使用Notes client(不過在系統管理中,Louis強烈建議把伺服器當作是「人」,這樣有助於管理概念的建立)。但相對的,如果未設定適當的類型,也會導致某些動作無法執行。
再來是許可權類型,依許可權低高依序有七層-沒有許可權、儲存者、讀者、作者、編輯者、設計師、管理員。【沒有許可權】當然就不能對資料庫執行任何動作,因為連進去的權利都沒有。Louis常戲稱【儲存者】為工讀生許可權,儲存者僅能輸入資料到資料庫中,輸入完畢後,就無法再看到這些資料。感覺就像找了一位工讀生來key in大量資料到資料庫中,但又不想讓工讀生記起這些資料或是看到其它資料。
先假設檔案或套表中沒有讀者欄位,當使用者被賦予【讀者】許可權時,使用者就只能閱讀檔案,而不能編輯檔案,當然更不可能建立檔案(可執行動作之建立檔案選項被強制disable了)。不過,一但檔案中有讀者欄位,若使用者的名稱未在讀者欄位的名稱清單之中,則即使有再高的ACL許可權還是無法閱讀該檔案。
至於【作者】許可權就必須跟【作者】欄位配合使用才具效用,當使用者被賦予【作者】許可權,但作者欄位中的使用者名稱卻是別位使用者時,這時即使該份檔案是目前使用者所建立,但因為其名稱未列於作者欄位中,所以無法編輯該檔案,僅能閱讀而已。順帶一提,如果使用者被賦予【編輯者】(含)以上許可權,但檔案中的作者欄位中並沒有這位使用者名稱,使用者還是可以編輯檔案,因為【作者】許可權必須跟【作者】欄位配合使用才具效用,也就是說【編輯者】(含)以上許可權不受作者欄位的約束。
至於【設計師】許可權就是多了使用Domino Designer來開發AP的許可權。而管理員則是多了修改ACL的許可權。
茲概略整理下表以供參考:
管理者 設計者 編輯者 作者 讀者 儲存者 沒有權利
ACL設定 V
建立修改設計元件 V V
編輯所有檔案 V V V
編輯自已檔案 V V V V
增加新檔案 V V V V V
讀取所有檔案 V V V V V
在資料庫建立時,會在ACL的使用者清單中看到-Default-這筆專案。-Default-的作用是,當使用者在ACL中找不到適用於自己的許可權時,就套用-Default-的許可權。也就是說,凡名稱未明列在ACL中或未包含在ACL的群組中,就套用-Default-的許可權。在開發AP時若無特殊需求,-Default-通常都設定為編輯者。
您還會看到LocalDomainServers群組與OtherDomainServers群組。顧名思義,只要是與目前資料庫的所在伺服器位在同一Domino網域的伺服器都會自動包含在LocalDomainServers群組中,除非您去names.nsf中更改此群組檔案,那又另當別論了Orz。所以此群組預設許可權是管理員,主要是為了讓相同網域內的伺服器可以進行抄寫作業。至於OtherDomainServers群組就是跟LocalDomainServers相反了,因為此群組的成員均為不同網域外的Domino伺服器,而且預設是無許可權。有些集團企業因為有一個以上的Domino網域,所以可能會利用此群組來達到某些跨網域存取的需求。不過,在達成此類需求時,請先手動把那些位於不同網域的伺服器名稱加到names.nsf中的OtherDomainServers群組檔案喔。
最後要談到Anonymous這個特殊專案,這是要手動新增給Web AP使用的。也就是當未透過Web ID & Password登入的使用者,均會被視為匿名者並套用Anonymous專案的許可權。若Web AP未設定此專案時,當您使用瀏覽器開啟資料庫時,系統就會給您一個警告,要求您到ACL中新增此一專案喔。請特別注意,在開發Web AP時若無特殊需求,請將此專案設為無許可權,否則您資料庫中的資料可能就會在網路上趴趴造了~~。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24998103/viewspace-695422/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- APScheduler 學習心得
- Linux學習心得Linux
- Redis 學習心得Redis
- Github學習心得Github
- nodejs學習心得(一)NodeJS
- Vue學習心得(1)Vue
- react-native 學習心得React
- C語言學習心得C語言
- 2024/9/10學習心得
- 資料結構學習心得資料結構
- MySQL 高效能學習心得MySql
- Laravel 框架學習心得體會Laravel框架
- python學習心得體會(一)Python
- Scrum敏捷開發學習心得Scrum敏捷
- 關於SCRUM的學習心得Scrum
- nodejs學習心得(三)fs模組NodeJS
- 談談一些學習心得
- 華為hcip學習備考心得
- RabbitMQ學習心得體會之ExchangeMQ
- 達夢資料庫學習心得資料庫
- 實驗設計(DOE)學習心得
- 談談自己學習Linux的心得Linux
- java反射機制的學習心得Java反射
- 分享學習linux系統學習心得,從大白變小白Linux
- 機器學習一週心得分享機器學習
- 張傳波老師Scrum學習心得Scrum
- 與MSSQL對比學習MYSQL的心得MySql
- 手寫Json解析器學習心得JSON
- JavaScript 非同步及Promise 菜鳥學習心得JavaScript非同步Promise
- rabbitmq 實踐與學習心得分享(1)MQ
- CC2530 ZigBee協議棧 學習心得協議
- 基線,移動視窗,AWR學習心得
- GSM學習心得1----GSM的結構
- 一點點linux系統的學習心得Linux
- 關於資料結構的學習心得資料結構
- MySQL 5.7 學習心得之安全相關特性MySql
- 【學習心得】老男孩Linux課程學習分享,聽聽我的故事!Linux
- 碼農如何學設計 - Web UI 設計學習心得WebUI
- 【筆記】黃如花.資訊檢索.學習心得筆記