Software 版 (精华区)
发信人: checcy (老巴夺), 信区: Software
标 题: 使用Notes C API开发应用程序
发信站: 哈工大紫丁香 (Sat Apr 4 15:55:58 1998), 转信
使用Notes C API开发应用程序
郭蓓
零售业会因网络计算时代的来临而发生深刻的变化。
———JimGreen
熟悉群件Notes的人都知道,Notes最常用的开发工具
是其内置的公式和Lotus Script语言。这两种方法简单易
学,尤其是Lotus Script与VB类似,很适合一般的客户端
开发需要。但是,如果需要完成Notes数据的引入引出,收
集统计数据,编写服务器上的“任务”(task)等与其他
系统打交道的应用,以上两种开发手段就会显得力不从心
。下面介绍一下Notes C API,这是一个底层的,功能强大
的开发工具,比较适合高水准,要求复杂的开发。
Notes C API能做......
Lotus Notes C API是750多个函数和数据结构的集合
。这些函数都是由C语言写成,可以在C程序里直接调用。
利用Notes C API开发的应用程序可以实现Notes用户界面
的大部分功能,也可以实现不能直接由用户界面完成的一
些操作。具体的说,Notes C API提供的最常用的功能有
以下几种:
●从底层创建,删除整个数据库;在两个数据库之间
,复制数据库的各种元素(宏、表单、视图、图标等等)
。
●读、写、修改一个数据库中的任何文档、一个文档
中的任何域值;对文档和域值可以做任何操作。
●对数据库的设计元素有强大的访问功能。可以创建
、使用数据库索引和创建使用Notes视图及索引;可以读
取视图中的文档;随心所欲地创建表单和布局区域;创建
宏,并从API程序或Notes中运行它。
●通过使用定时的API程序,检索和操纵数据库的信
息。
●可以对Domino服务器的管理特性进行访问。收集、
统计、报告Lotus Domino服务器的性能数据,设置数据库
的可访问用户名单,控制数据库特权属性,产生服务器软
件中的“事件”,取消已由你产生的“事件”。
●用户可以用它编写Add-ins,扩展Notes软件的能
力。Add-ins可以在Notes的工作站上运行,提供下拉菜单
让使用者选择功能;也可以在Domino服务器上编写成常用
的“任务”,并加入到Lotus Domino服务器的通用“任务
”中运行。
Notes C API不能做......
任何一种开发工具都有一定的缺陷,Notes C API虽
然可以算得上Notes功能最强大,效率最高的开发工具,但
仍不是十全十美。
●不能修改Notes本身现有的软件,也不能去除Notes
本身的工作方式。比如,Notes C API不能改变Notes编辑
器的操作,不能删去帮助菜单等等。
●不能直接改变数据库的复制历史,用户操作日志或
是数据库的图标。
●不能访问Notes工作站的安全性选项或是用户执行
控制表ECL。
●不能修改Notes的工作台。比如,不能从工作台增
添、删除数据库图标,不能改变工作台页面的名字,不能
创建私有视图,当用户阅读视图时不能动态选择视图中的
文档。
Notes C API的经常应用
使用Notes C API可以创建各种不同的应用,但最适
合,最常用的是以下几种:
●创建Notes的引入,引出程序。文件引出程序通常
是读一个数据库,选取一部分文档,并把它们转变成一定
的接受方兼容的格式。文件引入程序通常是读一个非Notes
的MIS数据库,然后根据MIS数据库提供的信息产生Notes
文档。
●定期维护数据库。例如,你可以写一个程序,定期
扫描某一类文件,一旦该文件的某一属性符合实现定好的
条件,就把它移入存档数据库。
●用现存的数据库里的数据创建新数据库。比如,为
公司编写一个程序,读取每个部门数据库的内容,然后产
生一个汇总全公司信息的新数据库。
●在程序运行过程中按照一定的标准设计数据库。例
如,可以编写一个程序,一旦接收带有数据和用户名单的
邮件后,马上创建一个新数据库,设计表单和视图显示邮
件数据,并把用户名单加入到数据库的用户存取表中。
●使用Notes C API的程序可以和其他使用产品API的
软件协同工作。比如,你可以使用API从关系性数据库中
读取数据,然后使用Notes C API把数据写入Notes数据库
。
Notes C API应用举例
Notes C API的程序格式有七种,核心代码基本相同
,开始和结束不同。每一种的具体针对的用途也不尽相同
。主要是:独立的应用,Domino服务器Add-ins, Notes工
作站菜单Add-ins, Notes工作站引入引出库,数据库外
挂驱动程序(hook driver),扩展管理器的外挂库,外部数
据库(非Notes)驱动程序。其详细的格式和说明可以查
阅相关手册,在这里不能一一说明。
下面举的例子是一个独立的应用,运行时不需要Note
s工作站运行,已在Windows NT 4.0,Notes 4.6环境下测
试通过。它的功能是向Notes引入其他系统的文件,格式是
纯文本。运行该程序前,必须做以下准备工作:安装Note
s C API, 在notes/data目录下建一个名叫in.nsf的数据
库,在库里设计好表单simple和域subject, body。
核心代码如下:
Include <... > 略
void main(int argc,char *argv[])
{ char path—name[]=″c:/notes/data/in.
nsf″;
/* pathname of database */
DBHANDLE db—handle;
/* database handle */
NOTEHANDLE note—handle;
/* note handle */
STATUS error ; /* return code from API c
alls */
FILE far * fp;
char title[200];
char body[10000];
struct—finddata—t c—file;
long hFile;
/*初始化Notes*/
error = NotesInitExtended (argc, argv);
if (error)
printf(″%s″,″init error″);
C代码略
打开某目录下的文件,读取标题和正文,分别放在
变量Title, Body中
/*打开Notes数据库*/
if (error = NSFDbOpen (path—name, &db—handl
e))
printf(″%s″,″dbopen error″);
/* 用指定表单建立新Notes文档 */
if (error = NSFNoteCreate (db—handle, &note
—handle))
{ NSFDbClose (db—handle);
printf(″%s″,″notecreat error″);
}
if(error=NSFItemSetText(note—handle,
″FORM″,
″Simple″,
MAXWORD))
{ NSFNoteClose (note—handle);
NSFDbClose (db—handle);
printf(″%s″,″set error″);
}
/* 为域subject , body赋值*/
OSTranslate(OS—TRANSLATE—NATIVE—TO—LMBC
S,buf2,sizeof(buf2),title,sizeof(title));
if (error = NSFItemSetText ( note—handle,
″subject″,
title,
MAXWORD))
{ NSFNoteClose (note—handle);
NSFDbClose (db—handle);
printf(″%s″,″set title error″);
} OSTranslate(OS—TRANSLATE—NATIVE—TO—LMBC
S,buf1,sizeof(buf1),body,sizeof(body));
if (error = NSFItemSetText ( note—handle,
″body″,
body,
MAXWORD))
{ NSFNoteClose (note—handle);
NSFDbClose (db—handle);
printf(″%s″,″set body error″);
}
/* 在数据库中添加新文档*/
if (error = NSFNoteUpdate (note—handle, 0
))
{ NSFNoteClose (note—handle);
NSFDbClose (db—handle);
printf(″%s″,″update error″);
}
if (error = NSFNoteClose (note—handle))
{ NSFDbClose (db—handle);
printf(″%s″,″close db error″);
/* 关闭数据库 */
if (error = NSFDbClose (db—handle))
printf(″%s″,″db close error″);
printf(″\nProgram completed successfully.\
n″);
NotesTerm();
}
OSTranslate函数的应用是一个技巧,它可以把操作
系统的字符集转变成Notes自己的字符集LMBCS。否则,文
件引入Notes后,中文可能会出现乱码。--
*********************************
Chengyan Che - Software Freelancer
Harbin, P.R.China
mailto: checcy@public.hr.hl.cn
ICQ: 5116726
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: checcy@public.hr.hl.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.565毫秒