資源描述:
《Lotus Domino API 應(yīng)用》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、LotusDomino/Notes是美國蓮花公司出的企業(yè)通訊和群件服務(wù)平臺。但由于其本身提供的開發(fā)工具的限制,在Notes中實現(xiàn)系統(tǒng)級功能十分困難。比如在Notes中,不能通過公式或腳本來得到一個數(shù)據(jù)庫的未讀文檔的數(shù)量和其內(nèi)容。但這個未讀文檔數(shù)的小功能在做有些方面是十分有用的,例如我們可以根據(jù)這個未讀文檔數(shù)來做個提醒功能,提醒用戶該進(jìn)行某類工作如文件簽發(fā)等。Notes系統(tǒng)本身有個Minder的程序,它是在有新郵件來到的時候,提醒用戶,并可提供一些基本的信息:來信人,標(biāo)題等。我們也可以這樣做(當(dāng)然利用未讀文檔數(shù)來做不是完美
2、,如果你有興趣,你可以試試做個數(shù)據(jù)庫鉤子程序來實現(xiàn),但總的來說,利用未讀文檔數(shù)來做較為簡單。)?! ”疚木褪怯懻撊绾卫肗otes提供的CAPI來實現(xiàn)讀取一個Notes數(shù)據(jù)庫的未讀文檔數(shù)和其信息。因為利用的是CAPI,所以我們的開發(fā)語言是C。開發(fā)工具我們選用的是VC++6.0。我們需要借助的是Notes本身提供的CAPI函數(shù)。Notes的大部分API都封裝在nNotes.dll文件中。其中包括有ACL,Database,User,Document,Item等各個方面的API函數(shù)。它不光能實現(xiàn)幾乎所有在Notes中實現(xiàn)的功
3、能,它還提供了其他在Notes中難以想象的功能(換句話說,你可以自己寫自己特有的Notes桌面程序而不再使用Notes.exe。當(dāng)然它的功能還遠(yuǎn)不止這點)。利用NotesAPI包,我們可以做以下的程序: 1、獨立應(yīng)用程序?! ?、DOMINO服務(wù)器的擴(kuò)展插入服務(wù)(add-intasks)。 3、NOTES客戶機(jī)的菜單擴(kuò)展插入(menuadd-ins)?! ?、NOTES客戶機(jī)可動態(tài)加載的函數(shù)庫?! ?、數(shù)據(jù)庫的鉤子驅(qū)動程序(HOOKDrivers)?! ?、擴(kuò)展管理程序的鉤子函數(shù)庫?! ?、非NOTES數(shù)據(jù)庫的驅(qū)動程
4、序。 下面簡單介紹一下我們后面會涉及的主要的NotesAPI函數(shù): NotesInitExtended:初始化Notes環(huán)境,應(yīng)在所有NotesAPI函數(shù)調(diào)用前初始化系統(tǒng)?! SFDbOpen:打開指定的Notes數(shù)據(jù)庫。 NSFDbClose:關(guān)閉指定的Notes數(shù)據(jù)庫?! SFDbGetUnreadNoteTable:取得指定數(shù)據(jù)庫內(nèi)的未讀文檔列表。 NSFDbUpdateUnread:更新數(shù)據(jù)庫的未讀文檔列表。 NIFFindView:取得數(shù)據(jù)庫內(nèi)的指定視圖或文件夾?! IFOpenCollecti
5、on:取得指定視圖或文件夾的所有文檔。 NIFUpdateCollection:更新指定視圖或文件夾的所有文檔。 NIFCloseCollection:關(guān)閉文檔集?! IFReadEntries:讀取文檔集的指定文檔?! SFNoteOpen:打開指定文檔?! SFItemGetText:取得文檔的指定字段值?! 〕绦蛄鞒蹋骸 ?shù)據(jù)庫中有張類型為IDTable的未讀文檔列表,其中包含了該數(shù)據(jù)庫的帶有未讀標(biāo)志的文檔號。這張表存儲在數(shù)據(jù)庫中和客戶機(jī)的Desktop.dsk文件中。當(dāng)然,在數(shù)據(jù)庫和文件中的這張表是一樣
6、的。當(dāng)他們不一致時,則在你打開數(shù)據(jù)庫時,它們會自動同步,使他們保持一樣?! ∥覀兙褪且〉眠@張未讀文檔表,再統(tǒng)計一下這張表中有多少項,就知道了數(shù)據(jù)庫中多少文檔帶有未讀標(biāo)志。我們還可以在此基礎(chǔ)上取得該文檔的一些具體信息。但這張表是整個數(shù)據(jù)庫的未讀文檔列表,我們怎么得到某個視圖或文件夾的未讀文檔數(shù)和信息呢?實際上,這才是我們真正關(guān)心的。我們可以再找到某個視圖和文件夾的文檔列表,再與上面的未讀文檔列表進(jìn)行一一比較,相同的則是該視圖或文件夾的未讀文檔列表。主要程序如下://////////////////////////////
7、//////////////////////////InitNotes:初始化Notes環(huán)境,打開數(shù)據(jù)庫//szServerName:服務(wù)器名//szDBName:數(shù)據(jù)庫名//szDirectory:Notes系統(tǒng)目錄//返回值:1-成功//0-失敗intCNotes::InitNotes(char*szServerName,char*szDBName,char*szDirectory){STATUSstatus;charszPathName[MAX_PATH];charszpInitPara[1][260];//數(shù)據(jù)庫
8、路徑名=服務(wù)器名+“??!”+數(shù)據(jù)庫名if(strlen(szServerName)==0)strcpy(szPathName,szDBName);else{strcpy(szPathName,szServerName);strcat(szPathName,"!!");strcat(szPathName,szDBNam