关于
专题文章

  >  
 Lotus Notes程序设计随笔(三)
文章作者:李建壹        发布时间:2008年3月25日        文章来源:Lotus 爱好者论坛
版权申明:本站署名的原创文章,本站及作者享有版权,其他网站及传统媒体如需使用,转载时请注明出处和原作者。本站转载的文章如有侵犯到您的版权,请及时向本站提出。

  十一、自我提升

  当我写下这个标题时感觉有点心虚,因为好像在灌水,呵呵。过相信接下Louis的,绝对是让各位初学者非常受用的。

  一般刚开始开发Notes AP时,相信大部分使用者提出的需求都是主管去谈的,而您绝对是伤透脑筋在想功能写程序的那个人。虽然这是很一般的程序,但对于您的未其实不見得是好处。虽然可以写出一支使用者满意的AP绝对是一件很了不起的事,但是当您完成这支AP以后除学到很多程序技巧与成就感以外,您还获得了什么?这是非常值得思考的一件事。

  Notes的精髓在于签核程的开发,而签核程的精髓则是各产业的Domain Know How,也就是各产业的专业知。所以当您接下主管交付的需求后,并非一味的埋头苦思程序该怎写、功能该怎开发,重要的是去了解此系统的真正目的是么、程为么要这么跑、使用者在签核底下的作业是么。所以您应该再找机会去跟提出需求的使用者了解他们的作业程序,进而从他们的脑袋学习他们域的专业知

  其实,我常常在跟使用者谈需求的时候,即使懂也装懂,很有貌的请使用者重头讲一次,反正被骂笨也无所谓,因为目的已经达到,大不了晚上抱着枕头哭一下就好,隔天又是好汉一条,哈哈。

  当您在各产业待过以后,这些知就会逐月逐年累积成为您的宝藏。而这些宝藏将会在以后成为您闯荡江湖的宝刀。因为往后当您在与使用者谈需求时,由于您的宝藏取之绝用之尽,频频点头称是的将再是您而会是使用者。

  我相信应该很少朋友希望自己永远靠写程序维生,尤其到一定纪以后,写程序反而是一种负担。所以接下赖以维生的将会是您的Domain Know How,帮您赚钱的绝对是您的脑袋与口才,而是写程序的技术。这时应该要很高兴您是修计算机的信息人员,而是写Notes的人员。所以,趁现在赶快积您未的财富吧!!加油!! 加油!! Go!! Go!! Go!!

  十二、视界

  在随笔(二)中,Louis跟各位讨到文件与套表的关系,所以接下,我们就谈谈视界吧。

  视界这个设计组件,很多人都会把它拿RDB(关式资库)的table作比较。其实是有那么点像,所以在ND7才会改SQL Query视界这玩意儿。过,撇开视界与table的比较,视界的主要功能是为有系统的整库中的一大堆文件,将这些文件中的关键信息分门别的「显示」出,好让使用者可以快速找到他们所需要的信息。所以您要视界是由一大堆文件所组成也为过。但因为是给使用者使用的,所以在设计一个视界的时候,最好可以先与使用者讨清楚,否则被要求重排视界的可能性非常的大。

  过,从设计面看,视界应该是由直所组成,毕竟没有直的视界是没有任何用处的。在前面,我曾经把「显示」这个字特别标出的原因是,直可以直接显示文件的位值以外,您也可以透过直公式多个位值后再将其显示出。也就是,处过后的直值并非储存在文件中,而仅供「显示」。优点在于,您用在文件中放一大堆计算储存一些只为「显示」用的值。但缺点是,中有太多的计算公式,则视界的负担就会加重,因为它必须要计算每份文件的位值。当文件數量很多时,其负担是可想而知的。

  我想大部份的初学朋友都知道「视界选择」这玩意儿吧,这玩意儿讲明白一点就是透过您指定的条件筛选要显示在此视界的文件。最严谨的条件当属【select @all】,因为它会将资库中所有的文件通通显示在此视界中。最常看到的条件应该是【select form=”套表名】,视界会根据您所指定的套表名搜寻并显示使用此套表建的文件。当然您也可以搭配多的条件设定來更进一步筛选文件,像是某个位等于、大于,或小于某个值。

  有人可能会发现在「视界选择」下面有个「套表公式」,Louis曾经遇到一位我觉得还错的程序设计师,但他却从没用过「套表公式」。这真的是很重要的功能,但我要在此卖个关子,之后会搭配其它功能來說明。

  另外,如果您已经熟悉公式与Lotus Script的话,相信您一定常用到@DBLookup@DBColumnGetDocumentByKeyGetEntryByKey…等等搜寻函式与方法。使用这程序的第一要件当然就是要把视界中的第一直设定为排序。过,Louis要讲的重点是这个,我要讲的是当您在设计视界时,请尽将程序用的视界与使用者用的视界分开,因为当资库中有很多视界时,您共享这种视界又没特别注明的话,哪天使用者要求您重排视界,结果运气好的您移动到程序用视界的第一直,那就糗大,因为一定会有程序找到符合的关键词资,而这很有可能让您花上大半天去找虫虫何在。至于要怎标示,把视界名称括号起就好,要就在视界属性的注明位注明。Louis偏好前者,因为前者可以把视界隐藏起,也就是,当使用者按下【检视】??【移至】也看到那个视界,除非他们知道按下Ctrl + Shift +【检视】??【移至】。

  既然刚刚提到GetDocumentByKeyGetEntryByKeymethod,就顺提一下这者的差别。如果您曾使用侦错器观察的话,就会发现前者是传回文件对象,所以所当然会把文件中的所有位值还有一堆属性通通抓出,而后者就只会抓到视界中直值。这有么影响吗?当然有影响啰!使用GetDocumentByKeyGetEntryByKey可能还察觉,当您使用GetAllDocumentsByKeyGetAllEntriesByKey传回上百笔的资,相信您就可以察觉到Server Loading

  十三、资

  既然谈到视界,就不來谈资夹。这的资夹当然是指Windows的资夹,Louis的是Notes的设计组件之一的那个资夹。资夹跟视界非常之像,我们可以它们是凤胎也为过,因为最明显的差别在于视界选择。ㄜ..没有「视界选择」那怎筛选文件啊!?既然没有「视界选择」当然就是有其它的方法可以筛选啰。资夹筛选文件的方式可以透过程序或使用者手动筛选(复制或剪下,然后贴上)。换,资夹内的文件主要是由程序或使用者手动置入的。

  资夹应用的最彻底的当属邮件资,收件匣各位应该很熟悉吧,它兄就是资夹而是视界,从R5 的邮件资库可能还看太出哪些是资夹,哪些是视界,但从R6的邮件资库就比较容分辨,因为它多一个「视界」的展开项目,在面的全部都是视界。过在「视界」的展开项目以外还是有视界的。要真正去辨别的话,还是要从Notes Designer比较明确一点。

  先来解释「手动」放文件到数据夹的观念吧。假设A视界与B视界的视界选择条件一样,其所筛选出的文件其实都是同一份文件。但是,当您在C夹与D夹中各看到一份几乎是一模一样的文件,在资库中它们『可能』是同一份文件,而是份文件,原因在于资夹是独的个体,所以手动个别贴上的话就会是两份文件。简单來說,资夹的文件是被「放」进去的,视界的文件是被「筛选」出的。这样您应该就懂吧,再懂,那就请您去邮件资库多玩几次复制或剪下,然后到处贴上的游戏啰。好吧,再鸡婆举例說明一下:

  1.当您从A视界中复制一份文件,然后贴到C夹,此时C夹有一份文件,D夹会是空的,A视界则变成份文件。
  2.再到D夹贴上那份文件,这时C夹还是只有一份文件,D夹当然也只有一份文件。但是,回过头看原A视界,您会发现A视界中会变成三份文件。
  3.这三份文件=的文件+C夹的文件+D夹的文件。其实从文件属性中可以看到这三份文件的UNID其实是通通一样的。

  以上都是手动放文件到数据夹的观念,接下来就是「程序」放文件到数据夹的观念了,使用NotesDocumentCollection.PutAllInFolder将文件放到数据夹中时,文件并没有增加,因为PutAllInFolder并不是「复制->贴上」文件,而是帮助数据夹「筛选」出符合条件的文件再「显示」出来。所以来源视界与数据库中的文件是不会增加的。

  资夹有一个很好用的功能-排序。当您使用GetAllDocumentsByKey从视界取得某些文件时(NotesDocumentCollection),这些文件并会按照原视界的排序一份份排好,所以如果当您的需求是要「依照某种顺序」这些文件的话,您可以先建一个资夹,并将此资夹的排序设定成您想要的,再用PutAllInFolder方法把文件通通「显示」到里面进去,这样您的文件就会照顺序排过请记得,处完请务必记得再使用RemoveAllFromFolder把那些文件从资夹删除。否则这资料夹中的文件会一直增加,这样就会造成之后所处理的文件不是当次放进去的文件,而是累积已久杂七杂八的文件。

联系我们
统讯科技
联系方式
了解统讯
统讯为您打造
个性化的服务
   联系我们 | 网站地图 | 错误链接报告