已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一种基于WSS的公文审批系统的设计和实现2007年6月第23卷第2期陕西理工学院JournalofShaanxiUniversityofTechnologyJune.2oo7Vo1.23No.2文章编号16732944(2007)02003305一种基于WSS的公文审批系统的设计和实现王新房,王福环,(1.西安理工大学自动化与信息工程学院,陕西西安710048:2.西安理工大学计算机科学与工程学院,陕西西安710048)摘要利用WSS的可扩展性和它提供的服务器端对象模型以及它与InfoPath完全集成的特性,设计实现了一个公文审批系统,判断文档库的服务器端事件类型,异步处理文档库的插入,删除和更新事件,确保只有合法的用户才能删除,更新文档,保证工作流的正确流向.系统实现了基于WSS和InfoPath的公文审批工作流模型,提供一种开发工作流的思想方法.关键词WSS;WSS事件;事件池;全局程序集缓存(GAC)中图分类号TP311.52文献标识码A随着信息化的发展,各行业对工作流技术和文档协同操作应用的需求变得越来越普遍.很多文献对工作流的理论和模型进行了研究,各大软件公司也推出了相应的开发工作流应用的平台和工具,其中微软WindowsServer2003中包含的wSS(WindowsSharePointServices)就是为开发工作流应用和文档协同操作应用设计的,它提供给开发人员很方便的应用程序接口.使用WSS作为开发平台既可以充分利用WSS提供的功能简化开发过程,节省开发资金,又可以一定程度上保证系统的性能.本文以WSS作为开发平台,集成InfoPath,结合一个具体实例,给出一个开发工作流应用的完整过程.1问题描述限于篇幅,本文给出一个简化的公文审批流程模型,如图1所示.起草人填写申请,然后提交给领导A.A如果审批通过则把申请提交给上一级领导B;否则,把申请返还给申请人让他重新修改或删除.领导B如果审批通过则把公文发送给申请人,通知他申请通过了;否则,返回给下一级领导A,重新审批.利用InfoPath制作如图2的公文模板,并将该模板发布为WSS的InfoPath表单库.起草人填写完申请后要在下一步递交给下拉列表中选择公文的第一个审批人(领导A);领导完成审批后也要在列表中选择下一个审批人或是起草人,保证工作流的正确流向,驱动工作流的执行.2解决方案2.1InfoPath辅助数据源的开发如图2的InfoPath模板的下拉列表控件显示WSS站点所有用户的用户名.为了实现该功能,模板在发布到WSS站点前,下拉列表控件要绑定到一个的辅助数据源.这个辅助数据源可以是WSS后台数据库的用户信息表,也可以是一个返回用户信息的Web服务.出于系统安全等多方面因素的考虑,InfoPath模板不宜直接连接到WSS的数据库.本系统利用WSS提供的应用程序接口开发一个Web服务作为InfoPath模板的辅助数据源.这个Web服务只有一个UserName函数来返回所有用户的用户名.收稿日期:20061124作者简介:王新房(1962一),男,陕西蒲城人,西安理工大学教授,博士,主要研究方向为计算机网络,reb服务,智能信息控制.陕西理工学院第23卷图1工作流模型2.2WSS文档事件图2InfoPath表单模板界面目前,WSS版本的文档库的服务器端事件有签人,签出,取?肖签出,插入,复制,重命名,更新,删除等.开发一个用户的事件处理类,又叫做事件池,处理这些服务器端事件,事件发生时,通知它执行相应的处理.这个事件池用来处理指定文档库的事件.事件池和文档库是一对多的关系,可以有多个WSS文档库被指定为同一个事件池的事件产生者.一个文档库仅有一个事件处理池.这种一对多的关系意味着所有的对文档库事件处理逻辑必须封装在一个单独的事件池里.为了保证工作流的正确流向,事件池处理文档的更新,删除等事件.文档更新时,通过判断进行更新操作的用户是否是原文档下步递交给下拉列表的值,如果是,允许更新并保存;否则,不保存更新痕迹.删除文档时,首先判断进行删除操作的用户是否是文档的作者,是,则删除之;否,则不响应需求.但是,由于事件是异步执行的,文档只有被删除或修改后,事件池才能被通知执行相应的处理操作.这时,文件的相关信息已经在后台数据库中被删除或修改,导致文档不能拒绝非法用户的修改和删除.为了解决上述问题,本文提供的解决方案是创建一个文档库的镜像库,如图3所示,用来存贮文档库所有文档的副本.当在文档库中插入文件时,事件池对象会把文件复制到镜像文件库,保持两个文档库的一致性.当一个用户删除文件时,事件池对象取出用户的身份与文档的作者比较,如果不是同一个人,则把镜像文档库中的文件复制到主文档库中,相当于没有删除文档库中的文件.否则,删除镜像文档库中的同名文件,保持两个文档库的一致性.当文档库事仆池镜像文档库,)复制到镜像/将修改后的文i复删到镜像将原文档复制到文档库-_J删除镜像内文件/复制到文档库网3镜像文档库用户修改文件时,事件池对象取出用户的身份与原文档的下步递交给下拉列表的值比较,如果是同一个人则把主文档库的文件复制到镜像文档库中;否则,把镜像文档库的文件复制主文档库中,相当于不保存修改痕迹.另外,为了防止用户对镜像库的误操作,导致镜像文档库和主文档库的不一致,对于用户来说镜像库是不可见的.2.3事件池程序流程图4是事件池的执行流程.用户操作文件时触发文档库的服务器端事件,根据被触发的事件类型,事件池对插人,更新,删除事件做处理.对于其他的事件默认为WSS的处理方法.用户新建并保存文件时,服务器端的插入事件被触发,事件池调用相应的处理函数把新建立的文件复制到镜像文档库.用户更新文件时,触发服务器端的更新事件,根据事件类型调用更新事件的处理函数,首先取得表单的下?34?第2期王新房,王福环一种基于WSS的公文审批系统的设计和实现图4事件池的执行流程拉列表控件的值,把这个值与客户端事件执行者的身份进行比较,如果是同一个人,则把修改后的文件复制到镜像文档库,覆盖原来同名文件;否则,把镜像文档库的原文件复制到主文件库,覆盖修改后的文件,保存原文件.当用户删除文件时,文档库中的删除事件被触发,调用删除事件的处理函数.取得删除事件发生前文档的作者,把它和客户端事件执行者的身份相比较,如果执行删除的人是文档的作者就把镜像文档库中的同名文件删除以保持两者的一致性;否则,把镜像文档库中文件复制到主文档库,表面上并没有执行删除操作.3系统实现系统中事件池类DocLibUpDeEventlI是执行和实现IListEventSink接口的.NET类,它实现了IL-istEventSink接口的OnEvent函数,这个函数使用WSS的SPListEvent类的对象,即事件的类型作为输人参数.实现过程中用到SPListEvent下列属性:事件的类型(Type),事件发生前文档的位置(UrlBefore)和事件发生后文档的位置(UrlAfter)等.DocLibUpDeEventH声名处理事件的方法.如上所述.该事件池要捕捉文档库的更新,删除和插人事件就可以创建正确的工作流,下面是OnEvent的函数的主要代码:voidIListEventSink.OnEvent(Microsoft.SharePoint.SPIistEventlistEvent)switch(1istEvent.Type)easeSPListEvent,rype.Update:Updatellandler();break;caseSPListEventType.Delete:Deletellandler();break;caseSPListEventType.Insert:InsertIlandler();break;UpdateHandler函数处理文档的更新操作.实现只有上一级用户指定的用户才能修改文档的权利.在InfoPath中,给下拉列表绑定辅助数据源时设置它的域名,例如Tn.由于InfoPath文档是基于XML,?35?陕西理工学院第23卷rr0是XML文档的第一层子结点.对XML文件编程很容易渎取r0域的值,利用SPListEvent的UrlBe.fore取得更新事件发生前的文档,并加载到SPFile类的对象渎取文档r0域的值,查看目前进行更新操作的用户的用户名是否和rr0的域值相同.如果相同.利用SPListEvent的UrlAfter属性得到更新操作后的文件并复制到镜像文档库中;否则,把镜像文档库的同名文件复制到主文档库中.Deletetlandler函数实现只有文档的作者才能删除文档的功能.利用SPListEvent的UrlBefore的属性取得删除事件发生前的文档.并加载到SPFile类的对象.比较文档的作者和进行删除操作的用户的用户名,如果是同一个人则删除镜像文档库中的同名文件:否则.把镜像文档库中的同名文件复制到主文档库中.InseI|andler函数实现起草人起草公文后,保存到站点下等待领导审批时自动把该文件复制到镜像文档库中的功能,以保证镜像文档库和主文档库的一致性包含事件池DocLIh【JpDeEventII的程序集必须被强命名并安装在全局程序集缓存中才能被触发.强命名程序集的方法是:首先在命令提示符下使用VisualStudio.NET自带的SIt.exe命令在指定路径下生成一个包含密钥对的文件,后缀为.snk.然后修改Assemblylnfo.CS文件的AssemblyVersion指令,指明程序集的版本号.最后在AssemblyKeyFile指令中指定刚才生成的.snk文件的物理路径.发布程序集的步骤是:编译项目,然后把项目的.du文件拖放到loealhost:/wINDOws/assmbly文件夹下,即全局程序集缓存中,即可.默认的WSS配置在文档库事件发生时不能触发相应的事件池程序,所以我们必须明确的配置WSS的这个特征,建立事件池和文档库的联系,使我们的事件池能捕捉到文档库发生的事件.首先在WSS的管理页面中把事件配置设置为On.然后使WSS文档库指向它的事件池,在文档库的高级配置界面中设置事件池程序集的名字,事件处理类的类名以及程序集的密钥和版本号.4结论由于WSS为开发工作流和文档协作应用系统提供方便的应用程序接口.WSS和InfoPath又是完全集成的,InfoPath表单可以直接发布为WSS的表单库.另外,基于XMI的InfoPath文档提供了方便的编程接口,这些就是本文选择WSS作为InfoPath文档的工作流开发平台的关键因素.由上面论述可知本文涉及的工作流是在WSS中的一个InfoPath文档库中实现的,在网络环境下所有能登陆到WSS站点的合法用户,通过安装有OfficeXP客户浏览器就可以实现文档协作.系统实现了基于wSS和InfoPath简单的公文审批工作流模型,提供一种开发工作流的思想方法.但是,它只是一个公文审批工作流的雏形.要完成真正意义上的工作流系统还需要增加自动的数字签名功能.用户完成起草或审批公文后,系统应该自动增加数字签名以保证他签署的内容不被非法的用户修改.本系统暂时使用InfoPath自带的数字签名功能,需要用户手动完成.另外,它还应该实现提醒机制,利用WSS自带的邮件功能可以在文档被修改后通知相关人员进行下步的处理.参考文献1孔芳.基于委托代理模型的审批流转方案的研究【Jj.计算机应用,2006.26(2):491493.【2苏建华,李良城.WSS构建团队知识平台lJj.四川电力技术,2006,29(4):8586.3黄营.用SharePointPortalServer技术促进现代企业信息协作Jj.电脑知识与技术,2006,3(7):l4一l5.【4肖丽君,张继军.微软SllarePoint企业门户研究概述【JJ.现代情报,2006,26(8):192194.5RAHULSAKDEO,ROHITPURI,BRETIsTALLMAN.WritingcustomwebservicesforSharePointproductsandtechnol-ogles【EB/OL.http:/msdn.microsoft.conl/library/default.asp?url=/library/enus/odeSP2003一ta/html/ODCWritingCustomWebServicesforSPlq.asp.2004.f6JASONMASTERMAN.TEDPA333SONUseWindowsSharePointServicesasaPlatformforBuildingCollaborativeAppa.Pan2lEB/OLI.http:/msdn.microsoft.couffmsdnmag/issues/04/08/WebParts/,2004.【7王新房,陈春娥,肖胜.基于GIS的灌区管理信息系统的设计与实现【JJ.陕西工学院(自然科学版).2003,19?36?第2期王新房,王福环一种基于WSS的公文审批系统的设计和实现(4):14.8王新房,张迎春,王小年.增强图元文件(EMF)的识别与存储【Jj.陕西工学院(自然科学版),2002,18(3):12一l5DesignandimplementationofadocumentsexamineandapprovesystembasedOrlWSSWANGXinfang.WANGFuhuan(1.SchoolofAutomationandInformationEngineering,XianUniversityofTechnology,Xian710048.China:2.SchoolofComputerScienceandEngineering,XianUniversityofTechnology,Xian710048,China)Abstract:ThispaperhastakenadvanmgeoftheextensibilityofWSSanditsserversideobjectmodelstodesignandimplementadocumentSexaminationandapprovalsystemmodelbasedonWSSandlnfo-Path.Todevelopaneventsinkforasynchronousserversideprocessingofinsert,judgingthetypeofdocu-mentlibraryserversideeventsdecidethedeletionandupdating.Intheend.thefunctionthatonlylegalusercandeleteorupdatedocumentstoensuretheworkflowtobeexactlyexecutedisimplemented.Ithasprovidedanewwaytodevelopworkflowapplication.Keywords:WindowsSharePointService;WSSevents;eventsink;globalassemblycache【上接第28页)AnewgeneticalgorithmbascdonthebestneighborhoodcrossoverTIANFei,CUIShilin(NanyangInstituteofTechnology,Nanyang473004China)Abstract:Inthenature,an
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大气污染治理技术优化
- 工业废水膜分离处理技术
- 乳制品设备清洁验证
- 工资约定发放协议书
- 建房拆除补偿协议书
- 广告施工类合同范本
- 工厂废料承包协议书
- 火锅购销协议书范本
- 市场供应商合同范本
- 小区租车位合同范本
- 【MOOC】3D工程图学-华中科技大学 中国大学慕课MOOC答案
- 建设工程围挡标准化管理图集
- 2022年高考历史广东卷核心价值观与学科素养的集大成的全面解读课件
- GB 4806.8-2022食品安全国家标准食品接触用纸和纸板材料及制品
- 供应商审核表(英文版)Supplier Audit Form-List
- 机械设备振动状态监测培训讲义课件
- 《痛风饮食管理》课件
- 西安邮政速递网络构建配送能力
- 博弈论与信息经济学课件
- 结膜结石剔除操作
- 姜岚昕分析和总结
评论
0/150
提交评论