请教lotus上公文审批中多级并行评阅的问题

问题描述

我用lotus现有的模板文档集做了一个公文审批,但是里面的评阅人只有一个选择框,有个类型可以选择逐级或者同时也就是并行评阅,现在的程序可以逐级评阅和一级的并行评阅,那个逐级评阅没有问题,但是并行评阅就只能一个选择框里所有人一起并行了,相当于一级并行,现在我想要实现多级并行,也就是说我另外增加了两个评阅人的选择框,想要实现3级评阅,每级里是并行评阅的,但不知道该怎么做,它本身的评阅人名字是ReviewerList,我加的那两个评阅人分别是ReviewerList1和ReviewerList2,我设想了一下,如果ReviewerList是数组的话,那把ReviewerList放在ReviewerList(0)里,ReviewerList1放在ReviewerList(1)里,ReviewerList2放在ReviewerList(2)里,这样想是不是可行?应该怎么做好呢?我是新手,一点不会lotus,领导安排的任务,急要,实在是没办法,求助大家,拜托大家帮帮我,如果能远程帮我看看就更好了,谢谢!

解决方案

解决方案二:
这个是document的querysave的代码:SubQuerysave(SourceAsNotesuidocument,ContinueAsVariant)DimwsAsNewNotesUIWorkspaceSetsession=NewNotesSessionSetdb=session.CurrentDatabaseIfnoteIsNothingThenSetnote=source.Documentnote.RemoveItem("SaveOptions")Ifnote.NSubmitNow(0)="1"ThenNSubmitNow=True'ParallelReviewCheckIfnote.ReviewType(0)="2"Andnote.complete(0)="1"ThenGotoPContinueEndIf'Serialreviewcheck:Ifwearenotsubmittingforreview,wedon'tneedtodotherestofthisIf(Not(NSubmitNow)Ornote.Status(0)=3)Andnote.Resubmit(0)="0"ThenExitSubPContinue:'ValidatethattheReviewerListdoesnotincludetheoriginatorIfListIncludesOriginatorThen'Callnote.replaceitemvalue("$DocLib","RevCycle")MessageboxGetString(17)&GetString(18),0,GetString(41)continue=FalseIfFieldName="ReviewerList"Thensource.GoToField("ReviewerList")Elsesource.GoToField("NewReviewer")EndIfExitSubEndIf'ValidatethatReviewTimeisnotblank.ifitis,setto"0"(notimelimit)Setitem=note.GetFirstItem("ReviewTime")Ifnote.ReviewWindow(0)=""Thennote.ReviewWindow="0"EndIf'ValidatethatReviewTimehasavalidentryifReviewWindowisnot0Setitem=note.GetFirstItem("ReviewTime")Ifnote.ReviewWindow(0)<>"0"Then'Thisverifiesthatitisnot0orblankorastringIfitem.Text=""Oritem.Text="0"Oritem.TextLike"*错误*"ThenInvalidReviewTime=True'Thisverifiesthatitisawholenumber>0Elseifnote.ReviewTime(0)<1OrInt(note.ReviewTime(0))<>note.ReviewTime(0)ThenInvalidReviewTime=TrueEndIfIfInvalidReviewTimeThenFieldName="TimeLimit"MessageboxGetString(16)&GetString(18),0,GetString(41)continue=Falsesource.GoToField("ReviewTime")ExitSubEndIfEndIf'ValidatethattheReviewerListisnotblankIfnote.ReviewerList(0)=""Andnote.NSubmitNow(0)="1"ThenFieldName="ReviewerList"MessageboxGetString(19)&GetString(18),0,GetString(41)continue=Falsesource.GoToField("ReviewTime")ExitSubEndIf'SetthisglobalvariablesothescriptlibknowswhethertoputupmessageboxesorpagesClientType="Notes"'Ifthesend(functionintheSubmitForReviewscriptlib)wassuccessful,thensaveandclose'SaveOptionssupressesthesavepromptIfnote.ReviewType(0)="1"ThenIfSendToNextThennote.SaveOptions="1"source.CloseElseContinue=Falsesource.RefreshEndIfEndIfIfnote.ReviewType(0)="2"Then下面两句是我加的,但是报错,应该是不对的,我不会,试试的note.ReviewerList(0)=note.ReviewerList(0)note.ReviewerList(1)=note.ReviewerList1(0)IfSendToAllThennote.SaveOptions="1"source.CloseElseContinue=Falsesource.RefreshEndIfEndIffinish:ws.ViewRefreshEndSub
解决方案三:
里面用到的SendToAll的代码是FunctionSendToAllsendtoall=TrueDimParallelEditorsAsVariantDimCurrentEditorAsVariantDimiAsIntegerDimitemAsnotesitemDimuboundrevAsVariantDimprevrevAsVariantIfnote.hasitem("PrevRev")Thenprevrev=note.prevrevElseUboundRev=Ubound(ReviewerList)Redimprevrev(UboundRev)AsVariantEndIfInReview="0"i=0Setmailnote=NewNotesDocument(db)Setusername=NewNotesName(note.CurrentUser(0))Setfromname=NewNotesName(note.From(0))CurrentEditor=note.CurrentEditor'savenoteisacopyoftheoriginalwhichwesaveasaresponsetothecopythatwillbereviewedIfNot(note.HasItem("OriginalSaved"))Thennote.saveTrue,True,TrueSetsavenote=NewNotesDocument(db)Callnote.CopyAllItems(savenote,False)'fromtheNotesclient,thebodyfieldisnotavailabletonoteuntilauisaveIfnote.HasItem("Body")ThenSetrtitem=note.GetFirstItem("Body")savenote.RemoveItem("Body")Callrtitem.CopyItemToDocument(savenote,"Body")Elsenote.CopyBody=TrueEndIfCallsavenote.MakeResponse(note)savenote.~$RefOptions="1"savenote.Subject=GetString(1)savenote.saveTrue,True,Truenote.OriginalSaved=savenote.UniversalIdEndIfSetitem=note.getfirstitem("ReviewerLog")Ifnote.Complete(0)="1"Then'determinewhichitemintheCurrentEditorarrayisthecurrentreviewer'sincetheirreviewiscompete,removethemfromtheCurrentEditorfieldForallaInnote.CurrentEditorIfNotusername.ishierarchicalAndLcase(username.common)=Lcase(a)And_'ifnothier.userandnothier.reviewernameLcase(note.CurrentEditor(i))=Lcase(a)ThenCurrentEditor(i)=""PrevRev(i)=username.commonnote.prevrev=PrevRevnote.CurrentEditor=CurrentEditornote.Locked=""note.reviewernumber=note.reviewernumber(0)+1item.appendtotextlist(GetString(8))Elseifusername.ishierarchicalAndLcase(username.Canonical)=Lcase(a)And_'ifhier.userandhier.reviewernameLcase(note.CurrentEditor(i))=Lcase(a)ThenCurrentEditor(i)=""PrevRev(i)=username.abbreviatednote.prevrev=PrevRevnote.CurrentEditor=CurrentEditornote.Locked=""note.reviewernumber=note.reviewernumber(0)+1item.appendtotextlist(GetString(8))Elseifusername.ishierarchicalAndLcase(username.Common)=Lcase(a)And_'ifhier.userandnothier.reviewernameLcase(note.CurrentEditor(i))=Lcase(a)ThenCurrentEditor(i)=""PrevRev(i)=username.abbreviatednote.prevrev=PrevRevnote.CurrentEditor=CurrentEditornote.Locked=""note.reviewernumber=note.reviewernumber(0)+1item.appendtotextlist(GetString(8))EndIfi=i+1EndForallEndIfIf(ClientType="Notes"Andnote.NSubmitNow(0)="1")Or(ClientType<>"Notes"Andnote.SubmitNow(0)="1")Then'doc.wasjustsubmittedforreviewnote.CurrentEditor=note.ReviewerListnote.reviewernumber=0item.appendtotextlist(GetString(6))EndIfReviewerList=note.ReviewerListParallelEditors=note.CurrentEditor'determineifdoc.isstillinreview(ParallelEditorsarraywillhaveatleast1value)'changestatusto2(inreview)ifitwasanewdocumenti=0ForallbInParallelEditorsIfNotParallelEditors(i)=""ThenInReview="1"GosubContinueEndIfi=i+1EndForallContinue:'fixstatusIfinreview="1"Andnote.status(0)=1Thennote.status=2EndIfIfinreview="0"Thennote.status=3EndIf'settheduedateIfnote.ReviewWindow(0)<>"0"ThenSetdt=NewNotesDateTime("")dt.SetNowReviewTime=note.ReviewTime(0)IfIsnumeric(ReviewTime)Thendt.AdjustDay(ReviewTime)Setnote.DueDateTime=dtEndIfEndIfMailSection:'mailsenttoallreviewersIf(ClientType="Notes"Andnote.NSubmitNow(0)="1")Or(ClientType<>"Notes"Andnote.SubmitNow(0)="1")Theni=0ForallcInReviewerListIfNotParallelEditors(i)=ReviewerList(i)ThenExitFunctionEndIfi=i+1EndForallCallParSendMailIfClientType<>"Notes"Thennote.RemoveItem("SubmitNow")Elsenote.RemoveItem("NSubmitNow")EndIfnote.RemoveItem("Resubmit")ExitFunctionEndIf'determineifauthorshouldbenotifiedaftereachreviewIfnote.hasitem("Reviewers")Andnote.status(0)=2Andnote.NotifyAfter(0)="1"_AndNotusername.ishierarchicalAndNotfromname.ishierarchicalAndNotusername.common=fromname.commonThenmailnote.Form="Memo"Setrtitem=NewNotesRichTextItem(mailnote,"Body")rtitem.AppendText(GetString(10))Callrtitem.AppendDocLink(note,GetString(11))mailnote.SendTo=note.Frommailnote.Subject=GetString(8)NotificationType="complete"'Callmailnote.send(True,note.From)CallParSendMailExitFunctionElseifnote.status(0)=2Andnote.NotifyAfter(0)="1"_Andusername.ishierarchicalAndfromname.ishierarchicalAndNotusername.Abbreviated=fromname.abbreviatedThenmailnote.Form="Memo"Setrtitem=NewNotesRichTextItem(mailnote,"Body")rtitem.AppendText(GetString(10))Callrtitem.AppendDocLink(note,GetString(11))mailnote.SendTo=note.Frommailnote.Subject=GetString(8)NotificationType="complete"'Callmailnote.send(True,note.From)CallParSendMailExitFunctionEndIf'dociscompletedbyoneormore(butnotall)ofthereviewers;don'tnotifyauthoraftereachreviewerIfnote.hasitem("Reviewers")Andnote.status(0)=2Andnote.NotifyAfter(0)<>"1"Andusername.common<>fromname.commonThen'NotificationType="complete"CallParSendMailExitFunctionEndIf'determineifreviewiscompleteandauthorshouldbenotifiedIfInReview="0"Thenmailnote.SendTo=note.Frommailnote.Subject=GetString(2)NotificationType="complete"CallParSendMailnote.RemoveItem("DocAuthors")EndIf'ifI'mnotthefinalreviewerandmailgetssenttooriginatoraftereachreviewiscompleteIfclienttype="Notes"Andnote.complete(0)="1"AndInReview="1"Andnote.NotifyAfter(0)="1"Then'Callmailnote.send(True,note.from)Messagebox(GetString(8))CallParSendMailEndIfEndFunction这个代码实在是看不懂,不知道怎么改好,拜托大家了,帮帮我吧,谢谢
解决方案四:
没看明白问题。

时间: 2024-11-03 12:11:54

请教lotus上公文审批中多级并行评阅的问题的相关文章

请教lotus中的时间格式和JavaScript中的时间格式是否相同?

问题描述 请教lotus中的时间格式和JavaScript中的时间格式是否相同?我能在JavaScript中对两个时间值进行比较吗?如果可以的话,我该怎么转换数值?请各位大侠指点,谢谢啦! 解决方案 解决方案二:lotus的时间格式很多,可以根据你的程序要求进行修改~~

请教:数组是引用类型,所以数组存在堆上,那数组中的元素存在栈上吗?

问题描述 请教:数组是引用类型,所以数组存在堆上,那数组中的元素存在栈上吗? 解决方案 解决方案二:数组中的元素可以通过地址找到,应该是在堆上解决方案三:当然在堆上,类是引用类型,类实例的某个字段是值类型,类实例的某个字段还是在堆上,数组的情况也一样解决方案四:建议看看装箱,拆箱解决方案五:数组里的对象没有装箱,拆箱问题.就是在堆上分配内存.c,c++的数组可以分配在栈上效率比c#好

c++基础-请教 mooc上的一道题。。。

问题描述 请教 mooc上的一道题... 写一个程序完成以下命令: new id --新建一个指定编号为id的序列(id<10000) add id num --向编号为id的序列加入整数num merge id1 id2 --合并序列id1和id2中的数,并将id2清空 unique id --去掉序列id中重复的元素 out id --从小到大输出编号为id的序列中的元素,以空格隔开 输入 第一行一个数n,表示有多少个命令( n<=200000).以后n行每行一个命令. 输出 按题目要求输

工具-请教定制linux在Azure中运行

问题描述 请教定制linux在Azure中运行 各位大牛,我基于CentOS 6.5定制了自己的OS,主要是裁剪了内核和更换Grub为lilo, 可以在Windows 2012 Hyper-v虚拟中运行,功能上一切正常. 我将*.vhd拷贝到Azure上,通过磁盘方式创建了虚拟机,通过web可以看到系统正在运行,但实际ssh无法连接. 我的OS中已经集成了LIS,但没有安装vm agent,网卡设置成DHCP. 我的问题: 1.Azure是否提供工具用于查看系统的启动信息,我现在无法确定我的OS

java代码-求上传文件中nosuchmethoderror(androidsdk与httpclientjar冲突)解决办法

问题描述 求上传文件中nosuchmethoderror(androidsdk与httpclientjar冲突)解决办法 android项目使用阿里云上传文件的Sample文件代码,出现了nosuchmethoderror,然后我顺着日志查到android sdk中在org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager这个类里只有一个构造方法,而代码依赖的httpclient是4.1.3版本,相同的类里有4个构造方法,我认为问题可

安卓 app 形状 绘制-请教,安卓app开发中,能用代码绘制一个纯文本意义的纯色的胶囊形状吗

问题描述 请教,安卓app开发中,能用代码绘制一个纯文本意义的纯色的胶囊形状吗 请教,安卓app开发中,能用代码绘制一个纯文本意义的纯色的胶囊形状吗,还是要用png图片代替呢,各有什么有缺点呢 解决方案 可以直接画,定义圆角的弧度,其他用纯色填充,形如: radius就是角度 字面意思比较清楚,你看看 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://s

怎么用java显示ftp服务器上文件夹中的图片在jsp页面上?

问题描述 怎么用java显示ftp服务器上文件夹中的图片在jsp页面上? ftp在另一台windows上,访问jsp页面要读取并显示出ftp上的图片. ftp上的图片路径保存在数据库中,操作ftp的jar我选了apache的FtpClient. 现在的问题是,action获取到ftp上的文件后,是下载下来再读取成流输出到页面呢?还是直接从FTP获取成流输出到页面?如果有,求思路,最好有代码举例我不想ftp上的文件下载到部署环境上然后再输出到页面,想通过读取ftp的流直接显示到页面,页面关闭后流就

上个项目中写的Ant build文件

项目 一.上一个项目中写的,可以编译.自动化测试.打包的build.xml <?xml version="1.0"?><project name="SimulatorEL" basedir="." default="all"><!-- edit by YangHuaWei --> <property name="build.dir" value="clas

Java调用命令实现视频上传过程中自动转换为flv格式并截图生成缩略图

//视频上传过程中自动转换为flv格式并截图生成缩略图(Java调用命令实现) import java.util.ArrayList; import java.util.List; public class VideoProcess { System.out.println(oldfilepath+"->"+newfilename+"- >"+newimg); List<String> commendF = new ArrayList<