Notes邮件与OA系统数据交换设计文档.doc
文本预览下载声明
Notes邮件与OA系统数据交换设计文档
设计目的:
NOTES邮件系统与其它邮件系统一样,主要利用DOMINO的邮件服务功能,在大局域网内的各NOTES用户间进行邮件交换,非常方便。但本公司开发的办公自动化系统是基于微软MS SQL关系型数据库而开发,这就产生了如何实现NOTES邮件与SQL数据库之间的数据交换问题。
设计思路:
可以利用NOTES系统中的代理服务功能,以及利用ODBC的连接功能,将SQL数据库与NOTES数据库之间进行数据交换,基本设计思路如下:
在服务器中建立ODBC连接,连通SQL数据库(ODBC的连接是建立在DOMINO服务器上,而SQL数据库可以是非本机器的数据库);
在NOTES代理中设计NOTES代码ODBC连接(利用NOTESODBC类进行);
在需要进行NOTES邮件转换到OA系统中的NOTES信箱中添加代理服务,通过代理进行相关操作(SQL数据库中的SELECT、INSERT等操作);
设计流程:
NOTES邮件传送过来内容默认为收发中心的信息资料,即RType=’2’
OA中的标题RSubject 对应 NOTES邮件中的 Subject
OA中的内容RBody 对应 NOTES邮件中的 Body
OA中的发送人RUserName对应 NOTES邮件中的发送人From
OA中的创建时间 RCreateDate 对应NOTES邮件中的邮件到达时间,而并不是NOTES邮件与OA交换中心的转换时间;
NOTES邮件中的收件人邮箱地址转换成OA中的接收单位ID号(RReceiveID):
收件人地址 ——转换成—— 接收单位代码 ——查询在用的单位(过滤停用的单位)——接收单位列表中查无此单位代码则不进行插入,否则取得接收单位代码,再进行下面的操作;
收件人地址由于存在群发的情况,所以在查询选择时,直接将代理执行的接收地址strSendTo的参数给固定化了,这个地址在不同的OA系统中使用时配置不一样,需要保证与办公系统收发中心单位配置的EMAIL地址相同。
NOTES邮件中的发件人地址转换成发送单位名与发送单位ID(RDepart,RSendID):
发件人地址 ———转换成— 发送单位代码 ——查询在用的单位(过滤停用的单位)—— 发送单位列表中查无此单位代码则不进行插入,否则取得接收单位代码与单位名称——继续判断—— 通过接收单位代码,到收文组中进行判断是否允许此单位的文件发送过来——查询—— 允许则进行插入到SQL数据库中的操作(INSERT),查不允许则退出执行;
NOTES邮件中的附件转换成OA中的RFile(目前还未做上去,先用灰色笔隐藏)
附件传送过程作出如下修改:
直接将附件在NOTES服务器中的地址放置到数据库记录中,供收发中心人员能够打开浏览即可,而收发中心人员要再进行转发时,先将附件存为本地,然后通过上传附件,达到转发的目的。 检索NOTES邮件中是否带有附件(FILE ATTACHMENT)—— 不含附件,则附件字段赋值为空,否则——操作—— 送附件地址到数据库,并把附件路径作为一个参数据执行一个附件拷贝的页面。
接收好邮件后直接将邮件清除掉,执行REMOVE命令。
对于未取到数据或无法执行下去的情况,不能直接通过exit sub来完成,而应该通过执行ELSE语句来完成,这样才能保证程序万一一条数据无法执行,此条数据以后的记录仍可以执行。
源 程 序:
邮件代理名称:AGSENDINFOTOSQL
连接库定义: Option Public
Uselsx *LSXODBC
变量定义 : Dim testcon As ODBCConnection
Dim Session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim object As NotesEmbeddedObject
Dim item As NotesItem
Dim nitem As NotesName
Dim rtitem As NotesRichTextItem
Dim strSubject As String
具体执行代码:
Sub Initialize
Set testcon = New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
If testcon.ConnectTo(oaexchange,oasend,oasend) Then ‘连接SQL数据库
Else
Exit Sub
End If
显示全部