• 133.50 KB
  • 2022-04-22 13:34:04 发布

企业办公自动化系统毕业论文.doc

  • 29页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'企业办公自动化系统毕业论文目录第一章绪论……11.1引言……11.2系统开发的背景和意义……1第二章灵活结构办公自动化平台和工作流概述……42.1灵活结构办公自动化平台概述……42.1.1使用灵活结构办公的原因……42.1.2灵活结构办公自动化的探索……52.1.3现有的办公系统的分析……62.1.4系统构架设计基本原则……82.2工作流概述……10第三章软件概论……123.1软件结构和技术手段……123.2软件特点及软件环境……14第四章设计与实现……164.1分析与设计……164.1.1总体设计……164.1.2公文流转控制方法……214.1.3公文流转流程的设定……224.1.4公文流转的访问控制……324.1.5公文流转的监控处理……414.1.6公文发送处理……474.2软件实现的技术重点……534.2.1jspSmartUpload组件……534.2.2HTML公文至WORD文档的转换……554.2.3EJB的应用……564.2.4数据库操作……574.2.5软件部署程序结构……60第五章总结……62致谢词……64参考文献……65图表目录灵活结构办公自动化工作流的实现图2.1.3.1B/S办公产品和C/S办公产品之间的比较……6图2.1.3.2基于群件的产品和基于数据产品之间的比较……7图2.1.3.3固定结构与灵活结构之间的比较……8图3.1软件体系结构示意图……13图3.2软件系统结构示意图……14图4.1软件主要业务处理流程示意图……16图4.2公文流转设计用例图……17图4.3发布公文时序图……18图4.4审批处理公文时序图……18图4.5公文监控处理时序图……19图4.6流程设定时序图……19图4.7软件总体模块图……20图4.8公文流转流程设定DFD图……23图4.9公文流转流程设定ER图……28表4.1环节记录表……28表4.2案例记录表……29表4.3案例环节记录表……29图4.10流转流程设定流程图……30图4.11流转流程……31图4.12RBAC的组成结构图图……33图4.13RAD工具的工作模式图……33图4.14公文流转访问控制设定DFD图……34图4.15公文流转访问控制ER图……37表4.4资源记录表……38表4.5用户记录表……38表4.6角色记录表……39表4.7访问控制记录表……39图4.16资源分配流程图……40图4.17用户授权流程图……40图4.18公文流转监控DFD图……42图4.19公文流转监控ER图……45表4.8公文流转信息表……45表4.9消息记录表……46图4.20公文流转监控流程图……46图4.21公文流程处理状态图……47图4.22公文发文处理DFD图……48图4.23公文发送ER图……51表4.10公文记录表……52图4.24公文发送流程图……52图4.25发送公文流程……54图4.26WAR包结构图……61第一章绪论 1.1引言在今天,人们利用网络、电子等来实现跨越地域的交流和沟通已经成为现实。席卷全球的数字化大潮,对政府机关、企业而言,既是动力、也是压力,推进信息化、实施办公自动化已经成为一种迫切需求。一套符合中国国情的办公自动化软件,将为政府机关整合各种信息资源,全面实现电子政务提供强大的支持。随着社会经济的不断发展,在国家政策的不断正确引导下,各级政府的内部机构和人员的设置越来越精简,管理也不断走向优化,面对繁重的办公事务,如何提高办公效率、并利用各种资源为领导的决策带来准确无误、快捷详尽的数据成为政府机关单位改革的一个重要的课题。现代管理模式和管理方法在中国的应用,使越来越多的政府机关决策层注意到提高办公效率必须要采用科学的管理工具和管理手段,办公自动化的应用日益迫切,实现办公自动化是众多单位近期的重点目标。办公自动化系统的使用促使全员更加紧密协作,以团队的力量增强竞争力,并且提供准确的监督机制,使管理更加民主化和规范化,充分共享和利用机制使得各种资源能够充分发挥其效能,减少浪费。并且,在竞争日益激烈的今天,办公自动化系统对于提高政府的形象和影响力有着重要的作用。为使我局的办公自动化系统更加灵活的适应工作的需要,于2005年初拟定对原有的NOTES版本的办公自动化系统进行升级,开发一套使用简单、方便快捷,能满足其现有复杂公文流转业务需要的灵活办公自动化软件。该软件的设计和研发工作由信息中心和清华同方公司共同负责。本人负责并参与的是工作流定义、公文发送两部分的设计和实现。1.2系统开发的背景和意义所谓电子政务,就是政府机构应用现代信息和通信技术,将管理和服务通过网络技术进行集成,在互联网上实现政府组织结构和工作流程的优化重组,超越时间、空间与部门分隔的限制,全方位地向社会提供优质、规范、透明、符合国际水准的管理和服务。政府的信息化建设是国民经济信息化建设的重要组成部分。随着技术进步的加快,互联网的出现和迅速发展,一个全球性的信息社会正在逐步形成,推进政府部门政务工作的自动化、网络化、电子化,已是大势所趋。联合国经济社会理事会从1999年开始,连续几年都把把推进发展中国家政府信息化,通过信息化改进发展中国家的政府组织、重组公共管理、最终实现信息资源的共享作为其工作重点。在全球各国积极提倡的“信息高速公路”的应用领域中,“电子政府”(e-government)一直被被列为第一位。当前,世界上许多国家都正在为灵活结构办公自动化工作流的实现第2页构建电子政府、实施电子政务而争分夺秒。实施电子政务能够提高效率,提高政府工作的透明度,推进廉政、勤政建设,最大的优势是,政府可以利用信息化手段更好地为公众服务……随着中国加入WTO和2008年奥运会的临近,关于电子政务的讨论、规划和设计实施已经成为整个社会炙手可热的话题,如何加快政府现代化建设步伐,提升整个社会的信息化水平和服务发展水平是目前从国际到国内、从中央到地方政府、从社会公众到各类企业、从专家学者到IT产业,都在关注的问题,同时也成为中国政务改革最核心的内容之一。全国人大2001年3月通过的《国民经济和社会发展十五计划纲要》明确了“以信息化带动工业化”的主张。今后我国应该进一步明确电子政务在信息化建设中的作用和地位,通过电子政务促进电子商务和家庭上网工程的发展,“以电子政务带动信息化”应当被看作是国民经济和社会信息化的一项基本策略。政府是社会信息资源的最大拥有者、生产者、使用者和传送者,政府所拥有的资源占整个社会资源的80%或更多,对社会信息资源的开发与利用起着主导作用。目前,信息网络技术的发展使得政府机构拥有、生产、使用与传送信息的方式都发生了深刻的变化,这既带来了机遇,又带来了挑战。从某种意义上讲,政府能否适应信息网络技术发展的特点,科学、 有效地开发与利用政府信息资源,将直接决定一个国家的信息化发展前途。对政府来讲,机构改革后对人员工作效率、业务管理和协调能力提出了更高的要求和挑战,通过电子政务可以提高人员效率,减少工作人员负担和加强政府管理职能的管控力度,提高政府部门之间的沟通能力。我们可以看到,电子政务将建立一个更符合环保精神的政府——因为它实现了无纸办公和远程办公,一个更开放和透明的政府——因为它拥有快捷、全面的信息披露和双向直接沟通,一个更有效率的政府——因为它可以把传统的政府管理和服务职能通过互联网直接推进到公众和企业身边,一个更廉洁勤政的政府——因为它的开放性将有效地抑制在传统政务中容易滋生的腐败和徇私现象。另外,政府信息化是社会信息化的基础。随着企业信息化进程的延伸和加速,政府机构在与企业相关的运作和服务方面,也必定要实现数据交换和服务模式的对接。正如有些专家所指出的,没有政府信息化,就没有全面的企业信息化;没有电子政务,就没有真正的电子商务和企业信息化。电子政务不仅为电子商务和企业信息化提供了良好的支持环境和对接方式,而且也成为电子商务的服务对象和客户。在这个意义上,电子政务工程将成为社会信息化水平的重要标志和国内信息产业和服务业发展的关键动力。我国政府信息化项目一直是遵循着这样的主线纵深发展的:内部的办公自动化第3页部分管理部门的电子化,例如金税工程政府的全面职能上网结合一些政府机关的实际情况,我们对本软件的目标界定为建设和实现一套灵活结构的办公自动化系统,主要提高政府机关信息化工作水平,加强沟通,密切使用单位与社会各界的联系,为单位领导提供高质量的信息服务,提供有力的决策政策支持。系统建立之后,能够使日常工作效率更高,对外来事件的响应更加迅速,同时办公成本和人员投入也会随着信息系统的建设不断下降。因此,我们非常有信心的认为系统建设之后,将会为使用单位带来良好的社会效益和经济效益,而目前软件的成功使用也证明了这一点。第4页第二章灵活结构办公自动化平台和工作流概述2.1灵活结构办公自动化平台概述2.1.1使用灵活结构办公的原因办公自动化(OfficeAutomation,简称OA)一词从八十年代中期在国内提出以后,国内IT业界和企业、行政管理的学者们做出了长期努力,他们作为一支中坚力量在不断地推进着我国办公自动化技术的前进。办公自动化本身是一个在不断发展的概念,十几年来,办公自动化从以数据为处理中心的传统MIS系统发展为今天以工作流为中心的办公自动化系统。然而,在实际的应用当中,成功的案例却并不多见。甚至到目前为止,很多单位在办公自动化建设过程中,也常常陷入了“信息化陷阱”当中。我们经常会听到用户抱怨开发者开发几年都没有开发出一套完善的系统。而开发者却抱怨用户在开发前提不出明确的需求,在开发中途又频频地改变需求。于是,开发者便不断地修改程序,以应付不断变化的需求。从而使OA的开发便陷入了“需求不断变化、软件不断修改、周期不断延长、效果难以预料”的尴尬局面。究竟是什么原因造成这样的局面呢?根据研究发现,主要有以下几个原因:作为工作流构成要素的办公环节、组织结构和办公方式在不同的政府机关是各不相同的,在同一机关,也是在不断变化之中的。这种变化和不确定性在相当长的一段时间里使得办公自动化的建设处于“需求更改--程序修改”的循环当中。办公本身的复杂性和广延性从狭义的理解来讲,办公就是管理。对于一个组织,管理活动涉及组织内部外部的诸多因素,经过许许多多适应不同管理需要的环节和人员。这个客观事实决定着办公自动化实现的复杂性和难度都是非常高的。管理的多样性和不确定性 各个组织的管理具有自己的独特模式,即使是遵循ISO9000族标准的组织也可以根据组织的规模和结构复杂性来确定自己的管理复杂程度。另外,一个管理模式也并非是一成不变的,随着组织的发展和进步,管理模式也将不断地向优化和高效发展。人们的习惯意识第5页政务信息化、办公自动化的实现是对人们传统办事方式的革命性改变。人们从原来看得见摸得着的实物为对象的办公方式,要转变到“来无影去无踪”的电子化过程,心里不免会产生“患得患失”的不信任感。人的习惯意识是可以通过培训和实践来得到转变。事实上,在国家高度重视信息化建设的今天,人们对电子化已经并不陌生。因此,归结起来,软件对实际办公应用的“变数”的适应能力是目前国内OA建设的最大技术障碍。软件系统不能适应管理组织与管理模式变化,是实现办公自动化的最大障碍。2.1.2灵活结构办公自动化的探索办公自动化的核心就是工作流的电子化实现,而现实工作流的多样性和不确定性又是办公自动化实现的最大障碍。有没有一种方案可以冲破这些障碍呢?面对实际办公应用中的无穷“变数”这个巨大障碍,中国的OA先行者们做出了巨大的努力。寻找一套适应需求不断变化和组织不确定性的办公自动化解决方式,建立一套能够根据实际组织结构和应用需求定制系统实际功能的智能化办公自动化系统平台,成为我国办公自动化建设的唯一出路。对我国办公涉及的要素和人们办公习惯进行深入的研究、分析,终于找到了实现以上思想的方案,那就是:将办公自动化抽象成一个信息交换的平台,即建立一个办公自动化应用平台,将平台和实际应用分离,然后在这个平台上根据不同的需要和应用来定制适合自己的系统。而在本单位的组织结构、办公方式或者流程变化以后,只要根据新的情况对原来的定制规则做简单的适应性修改就能够满足新的应用。简单来说就是:办公系统平台+应用自定义。打个比方说,就是建立一个集交通网络和交通控制的交通平台,至于在这个交通平台上跑公共汽车、卡车还是小汽车,那就让用户来决定。而这些公共骑车、卡车与小汽车各种各样的行车路线,也可以由用户来决定,并随时改变。基于上述思路,我们在与清华同方的技术人员的讨论中完善了思路,在与多个使用者的交流中成熟了设计,解决了种种问题,推出能自定义工作流程的办公自动化平台。这是一个基于信息交换平台的工作流平台。通过这个平台实现现实办公中存在的直流、横流、分流、环流、子流等等工作流的信息流动方式。信息在流动过程中可以携带目前计算机所支持的任何类型的文件信息。而实际的工作流方式可以由用户根据本单位的实际应用自行定义的。这样就完全解决了因实际办公需要出现“变数”所带来软件修改的问题,从而让客户享受到能够长期满足自己组织需要的OA软件。灵活结构办公自动化工作流的实现第6页可以说,“办公系统平台+应用自定义”基本上科学的地化解了具体需求不断变化和软件生命周期之间长期存在的矛盾。2.1.3现有的办公系统的分析现在市场上的OA产品主要分为以下几种:基于C/S结构的办公自动化系统基于IBMLotusNotes或MicrosoftExchange进行开发的,基于群件系统的办公自动化系统固定结构的办公自动化系统灵活结构的基于关系型数据库的办公自动化系统2.1.3.1C/S结构的OAC/S结构的OA其实是第一代的办公自动化系统。它起源于政府公文和档案管理的需求,它实施了工作流程的自动化和文档的电子化管理。它的特点是以公文处理、档案管理为核心,办公其实就是办文,并形成了以后OA的基本体系。此时OA的架设也多在C/S下,无法很好的支持远程办公和移动办公,同时当用户达到一定程度时部署和管理难度将大大提高。随着时间的推移,使用这类OA系统的用户越来越少。actualizeandorganization’sdifficultyhard mobileofficesupportedmobileofficenotsupportedeasyB/SstructureC/Sstructure图2.1.3.1B/S办公产品和C/S办公产品之间的比较Figure2.1.3.1CompareB/SstructureproductwithC/Sstructureproduct2.1.3.2基于群件的办公自动化系统基于群件的办公自动化系统曾经一度占领办公系统市场的大半河山。Notes/Domino有较强的安全管理机制,有比较好的流程管理功能。但它的缺点也是显而易见的:其标准相对封闭而且通用性较差,日后的数据整理挖掘、再次利用时都会出现很多问题。2005年1月24第7页日,IBM公布了其IBMLotusDomino平台的未来远景详情以及LotusDomino家族的未来方向和产品路线图。LotusNotes和Domino未来远景将允许客户利用新的IBMWorkplace功能和IBMDB2集成,提供关系型数据库的支持。但就现在情况来说,Notes/Domino能将传统意义上的办公支持的很好,但可扩展性可以说是十分不好了,而扩展性往往是现在用户优先考虑的条件。Expansibility:Maintainability:strongstrongweakProductbasedonDominoProductbasedonrelationalDBweakProductbasedonDominoProductbasedonrelationalDB图2.1.3.2基于群件的产品和基于数据产品之间的比较Figure2.1.3.2CompareproductbasedongroupwarewithbasedonDB2.1.3.3固定结构办公自动化系统固定结构办公自动化系统往往是用户根据自身情况度身订造的办公自动化系统,但由于需求的不断变化,往往最终不能完全满足用户的要求。而且,当开发基本完成后,每次修改流程往往需要修改代码,时间和人力的消耗往往令人难以接受。而且不同用户的需求不尽相同,往往不能复用,使得开发成本大大增加,或者根本不能完成产品化工作。灵活结构办公自动化工作流的实现Accordwithuser’sneedMaintenacecost第8页goodHibadFlexiblestrutureFixstrutureloFlexiblestrutureFixstruture图2.1.3.3固定结构与灵活结构之间的比较Figure2.1.3.3CompareflexiblestructureWithfixstructure2.1.4系统构架设计基本原则2.1.4.1平台设计的基本思路由于办公自动化系统是一个规模庞大、结构复杂、信息量大的综合信息系统,因此,在展开本项目时,一定要在设计规划阶段进行细致认真的工作,这样才能保证项目的顺利进行和规避不必要的项目风险。总结现有办公系统的优缺点,我们对办公平台进行了设计。将基本设计定位于:基于B/S结构、关系型数据库的,使用n层结构的自定义办公自动化平台。 在本软件的设计规划阶段,根据系统的特点和业务的要求,我们将遵循以下设计原则:安全性、先进性、实用性、易用性、可扩展性。2.1.4.2安全性安全保密是电子政务建设的关键。国务院规定,安全保密技术与信息技术发展同步——也就是同步发展、同步规划。政府各部门内部的局域网都应该设密码。在加密、防黑客、防病毒等信息安全技术还没有应用之前,政府内部的局域网不应该传输涉密文件,办公系统就不应该接入互联网。同时,系统提供多种安全策略,多种权限控制,高密度日志,从一定程度上保证了系统使用的安全。内蒙古大学硕士学位论文第9页2.1.4.3先进性作为支撑日常办公的办公自动化系统,该系统除了必须满足当前的应用要求,在整套系统的设计过程中,还必须强调先进性。当前的信息技术日新月异,如果这套系统只着眼与满足当前的需求,而忽视了对系统技术和体系的前瞻性,可以预见在不久的将来,系统必将不能满足日益增长的需求,导致系统的生命周期缩短,从而增加在信息化建设上的投资。本系统采用业界公认先进的和标准的软件技术,符合信息技术发展的趋势,保证系统在可预见的阶段内有相当强大的生命力。在系统中,我们在以下两个方面满足系统对先进性的要求:2.1.4.3.1技术先进性保证系统的技术先进性,是保证整个系统生命周期的重要环节。在本系统中,我们使用了比较成熟而又有发展前途的先进技术,保证整套系统在一段时间内的整体技术领先。2.1.4.3.2结构先进性对于技术先进性,系统结构的先进性则更为重要,如果说技术先进性是保证系统生命周期的重要环节,系统结构的先进性则是保证系统生命周期的基础。根据我们以往的项目经验,一般一套庞大的系统不可能是在一段短时间内就能开发完善的,它往往必须通过一段时间的“使用—修改”过程才能够比较好的满足用户的需要。这样,系统的结构就非常重要,系统结构是否设计得灵活,有利于扩展;其数据结构是否设计得科学合理,对于系统日后的使用和修改有着非常大的关系。从以往的经验可以看出,系统结构的不合理,正是导致出现所谓“信息孤岛”现象的关键。为了避免这种现象的产生,我们在设计这套系统时,将充分理解需求,并在此基础上对需求进行整合分析,再利用先进的数据建模的方法对系统进行规范设计,保证整个系统的有机完整。在本系统中,体现了以下一些结构特点:框架结构:保证系统各个模块在用户权限管理和界面整合的一致性。自定义结构:可以根据用户不断变化的需求通过可视化、无代码的方式调整系统各种属性。完善而标准的扩展接口:满足日后增加的需求,使系统具有良好的二次开发接口。2.1.4.4实用性为确保系统的实用性,我们将针对我局的特点选用比较成熟而稳定的技术,针对信息流的特点采用合适的系统结构,使整个系统达到最高的性价比性能,并尽量简化用户的操作步骤,使系统容易被使用。另外,对于一套部署范围比较广的系统,其培训成本和维护成本在灵活结构办公自动化工作流的实现第10页整个系统成本中占有非常大的比重,针对这一特点,我们使用了B/S模式的模式来设计系统,降低用户的操作难度,也为降低系统维护和升级的成本打下很好的基础。2.1.4.5易用性我们必须正视普通用户存在计算机水平参差不齐的可能性。因而,本办公自动化系统的界面并不一定如商业网站那样华丽,其首要的要求应是简单实用,而不是华而不实。在系统设计时,应该对系统的整体风格布局以实用、简洁、易用为原则,具有一致、友好的客户化界面,注重于界面的整体效果,精心设计界面中诸如按钮位置、数据表现方式等细节,使操 作者能够方便地操作和比较容易地理解界面所表达的信息和内容,便于用户快速掌握系统的使用。日常办公无需长时间的训练和磨合,在相当短的周期内就可以完成从传统的纸质文件办公向全面的无纸化办公方式迁移。而对于系统的管理和维护人员,系统具有可管理和易于维护的特点。力求以最少的人力资源和技术要求,就能够很好地维护和管理系统的正常运行。2.1.4.6可扩展性我们在前面提到整个系统结构的重要性,其中十分重要的一点就在于整套系统的可扩展性。系统可扩展性的程度,直接影响到系统的生命周期。在系统中,我们主要使用以下方式来保证系统的可扩展性:系统使用框架结构、使用关系型数据库、使用公开接口、提供自定义工具等等。2.2工作流概述工作流的概念起源于生产制造业与办公自动化领域。工作流是一类能够完全或部分自动执行的经营过程,根据一系列过程规则,文档、信息或任务在不同的执行者之间传递、执行。工作流的目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高办事效率、实现办公自动化。为了实现对业务过程的工作流管理,需要相应的软件系统的支撑。此种软件系统为工作流管理系统(WorkflowManagementSystem,WfMS)。工作流管理系统是“一种在工作流形式化表示的驱动下,通过软件的执行而完成工作流定义、管理及执行的系统”,其主要目标是对业务过程中各活动发生的先后次序及同活动相关的相应人力或信息资源的调用,进行管理而实现业务过程的自动化。工作流的过程定义是指对业务过程的形式化表示,它定义了过程运行中的活动和所涉及到的各种信息。这些信息包括过程的开始和完成条件、构成过程的活动以及进行活动间导航的规则、用户所需要完成的任务、可能被调用的应用、工作流机的引用关系以及与工作流数据的定义。其中活动指的是工作流中的一个逻辑步骤;工作流实例指的是工作流的一次执行过程;工作流机是一个为工作流实例的执行提供运行服务环境的软件或内蒙古大学硕士学位论文第11页“引擎”,它是工作流执行服务的核心,负责对解释过程定义、控制过程实例的执行、控制工作流中各个活动的执行顺序、并完成与其它工作流机的交互与通讯。根据工作流系统所采用的任务项传递机制的不同,工作流管理系统(主要有三种方式:(1)基于文件的工作流管理系统——以共享文件的方式来完成任务。这种类型的产品是产生最早、发展最成熟、最具多样性的,通常包含有Client/Server模式的图像、文档与数据库管理系统。(2)基于消息的工作流管理系统——通过用户的电子邮件系统来传递文档信息。这种产品都实现了一种或多种电子邮件系统的集成。(3)基于Web的工作流管理系统——随着计算机网络技术的发展和Internet应用的不断普及,Web技术因其界面的一致、简单及与平台的无关性,在其出现之后就得了迅速发展。同时Internet的发展及单位Intranet的构建为人们提供一个理想的协同工作环境,也使基于Web的工作流管理系统成为可能。1994年11月,工作流管理联盟发布了工作流管理系统的参考模型,它定义了一个基本的工作流管理系统所需要的6个基本模块,并制定了各模块之间的接口标准。其基本的模块功能如下:1)过程定义工具:为用户提供一种对实际业务过程进行分析、建模的手段,并生成业务过程的可被计算机处理的形式化描述。2)工作流执行服务:它借助于一个或多个工作流机,激活并解释过程定义的全部或部分,并同外部的应用程序进行交互,完成工作流过程实例的创建、执行与管理,为工作流程的运行提供一个运行时环境。3)其他工作流执行服务:在大型的WfMS中,工作流可能需要多个工作流机共同完成,甚至需要其他异质的工作流执行服务来辅助来完成,这涉及到WfMS系统之间的互联。4)客户应用程序:它给用户提供一种手段,以处理过程实例运行过程中需要人工干预的任务。每一个这样的任务就被称为一个工作项。WfMS 为每一个用户维护一个工作项列表,它表示当前需要该用户处理的所有任务。5)被调应用程序:指工作流执行服务在过程实例的运行过程中,调用的、用以对应用数据进行处理的程序。在过程定义中包含这种应用程序的详细信息,如类型、地址等。6)管理及监控工具:其功能是对WfMS中过程实例的状态进行监控与管理,如用户管理、角色管理、审计管理、资源控制等。Internet/Intranet应用的普及和Web技术的发展,为工作流管理系统的实现提供了一个理想的平台,而基于Web的工作流管理服务为灵活办公自动化的实现提供了良好的基础。灵活结构办公自动化工作流的实现第12页第三章软件概论3.1软件结构和技术手段B/S结构的系统以服务器为核心,程序处理和数据存储基本上都在服务器端完成,用户无须安装专门的客户端软件,只要通过网络中的计算机连接服务器,使用浏览器就可以进行事务处理。B/S模式具有易于升级,便于维护,客户端使用难度低、可移植性强等特点,其采用的主要技术手段有Notes编程、ASP、Java等,同时也使用COM+、ActiveX控件等技术;而C/S模式系统以服务器作为数据处理和存储平台,在终端上设计有专门的应用程序进行数据的采集和简单处理,再将数据传递到服务器端,用户必须使用客户端应用程序才能对数据进行操作。可以说C/S和B/S两种模式各有特点,那么究竟选择哪种模式作为本软件的系统结构呢?考虑到本软件的用户群大多是不具备计算机专业知识的用户,C/S结构客户端软件在使用上具有一定难度,而B/S结构本身就具有操作简单、快捷,尤其在网络迅猛发展的今天,几乎人人都要使用浏览器进行网上冲浪;C/S结构客户端软件存在升级更新的问题,在客户端众多的情况下也是一件头痛的事情,而B/S结构升级维护相当的便利,只需要调整服务器程序即可;从本软件使用的维护角度上考虑,B/S结构也可以节省大量的维护费用,因此本软件最终决定采用B/S结构。那么软件采用什么技术手段进行开发呢?目前主要的技术手段有基于群件技术、基于Windows.NET、基于Java,而这些开发手段也是各有特色。现在市场上的主流群件软件有两种。一种是IBM公司的LotusNotes,另外一种则是Microsoft公司的ExchangeServer。LotusNotes被视为最成熟的办公自动化系统平台,由于其本身具有强大的工作流(Workflow)设计能力,与公文流转复杂的工作流相适应,因而成为了大型公文流转系统开发的首选技术手段。利用LotusNotes既可以实现C/S模式的公文流转系统,也可以使之适应B/S的应用模式,其完善的文档数据库和权限管理系统为公文流转的顺利实现提供了强有力的保障。但LotusNotes的灵活性较差,外在表现形式单一,开发成本高。ExchangeServer与LotusNotes有相似之处,都具有强大的工作流设置能力,在早期的办公自动化系统中,ExchangeServer被广泛使用,在客户端使用Outlook等电子邮件系内蒙古大学硕士学位论文第13页统进行操作,在使用上不直观,灵活性差,同时基于ExchangeServer的二次开发难度也较大,系统之间的兼容性和扩展性差,目前在市场上单纯地基于ExchangeServer的公文流转系统比较少见。Windows.NET框架具有很强的灵活性和扩展性,能够与操作系统平台进行良好的结合,与各类应用程序可进行数据传递,其系统同时可应用B/S和C/S两种模式,在外在表现形式上十分灵活,开发难度和成本低,能够方便地使用各类中间件。Windows.NET框架下的开发工具很多,主要有VB、VC、ASP等,作为一种通用的开发手段,Windows.NET框架的应用范围很广,但其专业性不强,在开发公文流转系统时需要进行复杂的重定义工作,同时在规模大的应用过程中稳定性一般。Java 具有很强的数据处理功能和稳定性,在大规模数据处理和安全性方面占有优势,适合开发浏览器形式的应用系统,J2EE的开发模式适合工作流性质软件的开发,有比较强的灵活性,在开发模式上与ASP相似,并且Java技术发展迅速,周边产品众多。综合考虑这三种技术手段的优劣,最终本软件选择Java作为主要技术手段。提出系统的基本建设原则如下:运用Java技术手段,建立一个B/S结构,基于Internet、以通用浏览器为前端、完全Web化的灵活办公自动化系统。clientWebcontainerExhibitionlayer:JSP/HTML/JavaScript/CSSApplicationlayer:Servlet/JavaBeanEJBcontainerServerlayer:flowBooleancalculationSessionPermanencelayer:CMPBMPOODBMS图3.1软件体系结构示意图Figure3.1Softwarestructuresketchchart灵活结构办公自动化工作流的实现第14页图3.2软件系统结构示意图Figure3.2Softwarestructuresketchchart3.2软件特点及软件环境本软件采用B/S结构,运用Java技术实现,涵盖所有与纸质公文处理有关的基本流程,具有很强的通用性。主要特点:1.业务处理能力强、运行效率高、可移植性强;2.使用Java技术实现了工作流引擎;3.资源配置灵活,功能丰富;4.使用操作简单,人性化程度高;5.升级、维护简单安全;6.高度安全性支持电子签章、数字签名与传输加密技术、身份验证技术。本软件选择基于BEA公司的WebLogic8.1应用服务器为基础的J2EE实现体系,软件运行的硬件环境使用用户现有设备;软件环境如下:开发工具:JBuilderX内蒙古大学硕士学位论文第15页Web服务器:操作系统:Windows2003Server应用服务器:WebLogic8.1数据库服务器:操作系统:Windows2003Server数据库:Oracle9i客户端环境:浏览器:IE6.0操作系统:Windows98/2000/XP灵活结构办公自动化工作流的实现第16页第四章设计与实现4.1分析与设计4.1.1总体设计4.1.1.1主要业务处理流程公文流转,主要实现公文的创建、查询、办理、催办、跳转、归档和销毁等功能,而公文流转的主要业务处理流程为,起草发送公文-登记公文-进入流转流程处理-归档或销毁。DraftdocumentReleasedocumentEnterflowDealwithdocumentYLabelNNAchieveYDestroydocument图4.1软件主要业务处理流程示意图Figure4.1softwaremainoperationflowsketchchart公文流转的主要业务处理流程的说明:首先,用户登入办公自动化系统,根据权限起草公文,当公文起草完成后,即可选择上 内蒙古大学硕士学位论文第17页传文件或者在线编辑的方式发布公文。接下来,公文进入流转流程进行流转,在流程中每个环节处理完毕后会为其加上一个标签,该标签表明本环节处理完成并指明下一环节(有些环节的后续环节可能不是一个,并且没有先后次序,因此就可以不加上标签)。公文再次进入流转流程开始流转、处理,直到公文没有被任何环节加签,此时检查是否完成了全部处理流程,若没有完成全部处理流程则进入流转流程继续处理;若完成了全部流程,则结束在流转流程中的处理。最后,进行归档或者销毁等操作。4.1.1.2主要的功能模型公文流转实现公文的创建、查询、办理、催办、跳转、归档和销毁等功能。其中公文创建指内部公文的拟制、发布,还包括对公文的修改。办理是流转过程的核心,办理过程对公文进行审核、批复、回答、退签等,还可以对公文正文进行修改。公文催办可以通过电子邮件或者信息方式向办理人发出催办信息。公文跳转指让公文跳过流程中的某一环节流入下一个环节办理。公文归档和销毁是公文办理完毕后,有归档或销毁权限的人员对公文做的相应处理。根据以上需要和功能的描述,绘制公文流转软件主体设计用例图。图4.2公文流转设计用例图Figure4.2Documenttransferdesignusecasechart灵活结构办公自动化工作流的实现第18页图4.3发布公文时序图Figure4.3Documentreleasetimeorderchart图4.4审批处理公文时序图Figure4.4Documentapprovedisposaltimeorderchart内蒙古大学硕士学位论文第19页图4.5公文监控处理时序图Figure4.5Documentwatchdisposaltimeorderchart图4.6流程设定时序图Figure4.6Flowsettingtimeorderchart公文发布用户在登录系统后,在其拥有的权限范围内可以起草、发布一些发文;对于自己发布的发文,在公文进入流转前可以进行修改,包括公文相关信息和正文的修改;当公文进入流转以后,发布人可以查询其办理情况;公文办理用户在登录系统后,如果有公文需要办理,则对公文进行审核、批复或编辑;而拥有催办、跳转、代理权限的用户也可以执行相关的处理;负责归档销毁操作的用户,则对公文进行归档或销毁的处理;系统管理员登录系统后,可以使用系统维护的功能对软件中资源、功能、人员等进行调灵活结构办公自动化工作流的实现第20页配。4.1.1.3模块分析根据公文流转软件实现的功能,将软件分为:公文流转控制、公文流转监控、公文发送、公文接收、公文业务处理、归档/销毁、系统维护、查询统计、通讯录等主要模块。办公自动化软件公文流转控制公文流转监控公文发送公文接收公文业务处理归档销毁系统维护查询统计通讯录 图4.7软件总体模块图Figure4.7softwareentiremodulechart软件总体模块图中实线框【公文流转控制】【公文流转监控】【公文发送】三个模块的、、设计和开发是本人的主要参与的工作,因此本文重点说明了这三部分的设计和实现。各模块实现的功能描述如下:公文流转控制:定义公文流转的处理结构、描绘处理过程,确定公文流转的活动和任务组成;确定公文流转中各个环节的执行条件、处理规则;完成公文流转中用户权限的设定。公文流转监控:实现对公文流转中任务的监控,并调用催办、跳转、代理等功能。公文发送:实现公文发送的功能。公文接收:实现接收公文的功能。公文业务受理:实现包括公文的编辑、审批处理和针对某一具体任务的催办业务、跳转处理、代理处理等功能。归档销毁:对公文进行归档、作废、销毁等处理。系统维护:包括日志管理、组织管理、角色管理、用户管理、功能管理、资源管理。查询统计:实现公文的各种查询,如:流转中公文查询统计、归档公文查询统计、作废公文查询统计、销毁公文查询统计。通讯录:记录流程中相关人员通讯记录,支持发送即时消息、电子邮件。内蒙古大学硕士学位论文第21页4.1.2公文流转控制方法本文首先需要解决的问题,是采用何种方式、方法对公文的流转加以控制,来保障公文流转的进度。在公文流转业务中,有些公文是按等级划分的,比如普通公文、加急公文、特级公文等,不同等级的公文有各自处理的时间要求;有些公文对于处理时间提出了具体的要求,比如说某公文的整个处理流程要在30个工作日完成;有些公文,不但公文整体处理有时间上的要求,还对各个处理环节、步骤提出了具体时间要求,比如某公文的处理流程为四个环节,分别是:发文、核实、审批、归档,要求该公文的整个处理流程要在30个工作日完成,并且要求发文3个工作日完成,核实8个工作日完成,审批8个工作日完成。显然对于不同类型的公文,应该采取不同的控制方法,有针对性的对这些公文进行流转控制。根据上述公文流转业务的实际要求,本文采取了公文分类法和时间控制法来对公文的流转加以控制。一、公文分类法任何事情都有轻重缓紧之分,不能将所有的事清都一概而论,如果大小不分、轻重不论,直接导致的后果就是事情杂乱无章。公文同样如此。因此有必要引入公文分类制度,按照公文处理的时间要求,将公文分为三类:普通公文、加急公文、特急公文。这三类公文的处理时间为固定值,根据用户业务的具体需求而定,有别于后文的时间控制法。如普通公文办理时间为30天,加急公文的办理时间为10天,特急公文的办理时间为3天。当用户登录系统后,系统显示该用户可以处理的公文列表,列表的排列顺序以公文的级别的为依据。特急公文显示在待办公文的最顶端,并用显眼的红颜色表示;接着是加急公文,以黄颜色表示;最后是普通公文,以浅蓝色表示。方便用户按照特急、加急、普通的顺序来处理公文。二、时间控制法在分类的同时,可以为每一个公文流程设置处理的时限,并通过时间来控制公文的流转;还可以为公文流程的各个环节分别设置处理的时限,以此来控制和推动公文的流转。由此抽象出四种方法来推动和控制公文流转。1、单步控制法将一个公文流转分解成每一个具体的步骤(即流转环节),为每一个步骤按照在流转流程中所占的比例设定一个完成时限,按照每一个步骤的时限来控制公文的流转。除了每一个具灵活结构办公自动化工作流的实现第22页体步骤办理的时间需要设定外,还要设定其他相关的时间:如单个环节接受任务时间,整个流程接受任务时间,预先警告时间等等。单个环节接受任务时间为上一节点完成流程到下一节点接受流程两者之间的时间。这个时间用来控制整个流程的紧凑程度。整个流程接受任务时间为流程开始到第一个处理节点接受流程两者之间的时间。预先警告时间为一个节点或整个流程当前所用的时间己经超过了所能用的时间的80%的时间。2.整体控制法 设置公文流转流程的处理时限,以一个公文的整个流转过程作为判定有没有超过所设定的最后时限的依据,以此来控制公文的流转。3.自动控制法系统根据指定的时限自动对公文进行控制,进行催办、跳转、代理等操作。比如说:系统设定特急公文的处理时限为3天,若一个环节从开始流转到当前的时间超过了预先警告时间,那么就应该对该公文、该环节的处理人员进行催办。如果催办没有结果,还要按照系统的设定进行跳转或代理。如果该环节在关键流程上,那么只在此进行催办;如果该环节不在关键流程上,那么既可以进行催办,也可以进行跳转。4.人工控制法人工控制法,是具有相应权限的用户通过催办、跳转、代理等手段控制公文流转的方法。例如:具有催办权限的用户,在登录系统后,进入催办处理功能模块,选择待处理的公文业务,可以看到该公文的流转状态图。图中直观的显示出:公文的开始时间和最后时限、各个环节的开始时间和最后时限,己经完成了哪些流程或环节具体的开始、结束的时间是什么,哪些公文已经开始或上一环节已经结束而下一环节没有开始,哪些公文或者环节已经超过预先警告时间等等。用户根据需要可以进行催办、跳转、代理等等相关的操作,此后可以随时查询这项工作的具体进展情况。本软件在使用中,可以任选上述诸方法中的某一种方法对公文流转加以控制,也可以选择多种方法相结合对公文流转进行控制。合理的使用这些控制方法可以将公文分门别类、按照一定的规则将业务进行划分处理,使业务处理更加清晰,方便对业务进行监控处理。如何将这些控制方法应用到公文流转软件中呢?如何定义公文流转的时间要求、处理规则呢?这就是下文公文流转流程设定所要解决的问题。4.1.3公文流转流程的设定为了行之有效的运用流转控制方法对公文流转进行控制。本文将定义公文流转的处理过程、流转规则、执行条件、处理规则的工作合并起来,称为公文流转流程设定,也就是定义内蒙古大学硕士学位论文第23页工作流的过程。现实工作中,公文的种类多种多样,不同类型的公文也不可能全部按照同一流程进行流转,并且在各个环节上的处理也不尽相同,这样就需要为不同业务处理流程定义不同的处理规则。本文参考工作流的概念,将公文流转的基本要素定义为案例、任务、过程三个:案例定义了一类公文的处理过程、活动、各个步骤、环节的处理操作和处理规则;任务是案例的一个具体应用,对应一笔具体的业务;过程是任务在流转中一系列处理的描述。本文将流转中的每一个步骤(或处理环节)定义为最小的单位,称之为活动或者流转环节。因此公文流转流程设定,实际上也是案例设定的过程,亦可称为案例的设定。案例的设定信息存储在数据库中,设定的信息描述了公文流转的起始点、公文流转的步骤、流转途经的各个环节,并定义在各个环节上需要进行的操作和处理规则,并可根据需要定义整体处理的时间限制和每一步骤的处理时间限制。公文在流转软件中流动,可以理解为某一流转过程(案例)的一个具体实例。公文流转的信息和正文存储在数据库表中,公文信息表记录了公文的正文和基本信息,其中流程类型(FlowType)这一属性即标识了公文选用的流转流程(案例),公文就会按照选用的流转流程(案例)流转处理。接下来用数据流图、ER图、数据字典、程序流程图,详细描述了公文流转流程设定的分析和设计部分。EnactmentpersonUserinformationTacheselecttachelistEnactmentorderorderEnactmentperformanceFoundusecaseCaseinformationTacheinformation DealwithtacheCasenoteCasenoteTachenote图4.8公文流转流程设定DFD图Figure4.8DocumenttransferflowDFDchart数据字典如下:1.数据流条目灵活结构办公自动化工作流的实现第24页数据流名称:用户信息简述:登录用户的用户信息来源:用户登录后Session中去向:创建案例组成:用户编号+用户名称数据流名称:案例信息简述:公文流基本信息来源:数据库去向:选择流转环节组成:案例编号+案例名称数据流名称:环节信息简述:环节的配置信息来源:处理流转环节去向:选择流转环节组成:环节编号+环节名称数据流名称:环节列表简述:案例选定的环节信息列表来源:选择流转环节去向:设定流转顺序组成:{环节编号}+{环节名称}数据流名称:环节顺序简述:按顺序排列的选定环节信息来源:设定流转顺序去向:设定环节功能组成:{排序编号}+{环节编号}+{环节名称}内蒙古大学硕士学位论文第25页2.数据存储条目数据存储名称:案例记录简述:存放在数据表库中的案例信息组成:案例编号+案例名称+创建人+创建时间+修改时间+状态+任务时限组织方式:数据库表,案例编号为主键;创建人为外键;创建人和案例名称为索引查询要求:能够根据案例编号进行精确查询数据存储名称:环节记录简述:存放在数据库表中流转环节信息组成:环节编号+创建时间+环节名称+所处科室编号+状态+环节类型+创建人+修改时间+描述信息组织方式:数据库表,环节编号为主键;创建人、所处科室编号为外键;创建人和环节名称为索引查询要求:能够根据环节编号进行精确查询数据存储名称:案例环节记录简述:案例的环节设置信息组成:案例环节编号+案例编号+环节编号+步骤名称+步骤序号+创建人+创建时间+操作时限+操作处理编号组织方式:数据库表,案例环节编号为主键;创建人、案例编号、环节编号、操作处理编号为外键查询要求:能够根据案例环节编号进行精确查询3.数据项条目数据项名称:案例编号简述:案例主键编号类型:字符串长度:12取值范围:各位皆取值0~9灵活结构办公自动化工作流的实现第26页数据项名称:环节编号简述:环节主键编号类型:字符串长度:12取值范围:各位皆取值0~94.加工条目加工名:创建案例激发条件:当用户进行创建案例的操作优先级:普通输入:案例基本信息输出:案例存储记录信息加工逻辑:根据案例信息IF案例信息齐全THEN组织案例存储信息ELSE提示案例信息不全ENDIF提交存储至数据库加工名:选择流转环节激发条件:用户调用选择流转环节页面优先级:普通输入:案例基本信息和环节基本信息输出:环节列表信息加工逻辑:浏览环节记录REPEATIF该环节被选择THEN环节列表添加该环节编号,该环节名称ENDIFUNTIL浏览完毕内蒙古大学硕士学位论文第27页 加工名:处理流转环节激发条件:查询环节信息优先级:普通输入:查询条件输出:环节信息列表加工逻辑:浏览环节记录REPEATIF该环节符合条件THEN结果集添加该环节编号,该环节名称ENDIFUNTIL浏览完毕加工名:设定流转顺序激发条件:用户调用调整设置流转顺序优先级:普通输入:案例基本信息和环节列表信息输出:案例基本信息和排序的环节列表信息加工逻辑:监听用户操作,排列环节顺序加工名:设定环节功能激发条件:用户为环节设置相关功能优先级:普通输入:案例基本信息和排序的环节列表信息输出:案例环节设定信息加工逻辑:浏览环节列表REPEATIF环节A选择功能BTHEN结果中添加环节A与功能B关联信息ENDIFUNTIL浏览完毕灵活结构办公自动化工作流的实现第28页提交存储至数据库Caselist1includeNNCaserecordlistTacherecordlist1correspond图4.9公文流转流程设定ER图Figure4.9DocumenttransferflowERchart字段名NodeIDCreateTime类型CHAR(12)CHAR(12)说明环节编号(主键PK)创建时间YYYYMMDDHHMMTitleDepartStateTypeDescCreateUserUpdateTimeVARCHAR(500)CHAR(12)CHAR(1)CHAR(12)VARCHAR(1000)CHAR(12)CHAR(12)环节名称环节所处科室(外键FK)状态1-有效0-无效环节类型描述信息创建人(外键FK)修改时间YYYYMMDDHHMM表4.1环节记录表Sheet4.1Tacherecordsheet字段名WFIDCreateTime类型CHAR(12)CHAR(12)说明案例编号(主键PK)创建时间YYYYMMDDHHMMTitleVARCHAR(500)案例名称内蒙古大学硕士学位论文第29页CreateUserUpdateTimeCHAR(12)CHAR(12)创建人(外键FK)修改时间YYYYMMDDHHMMSTATESessTimeCHAR(1)NUMBER表4.2案例记录表状态任务时限单位(天)Sheet4.2Caserecordsheet字段名StepIDWFIDNodeDCreateTime类型CHAR(12)CHAR(12)CHAR(12)CHAR(12)说明案例环节编号(主键PK)案例编号(外键FK)环节编号(外键PK)创建时间YYYYMMDDHHMMTitleSortNumStateRangTimeFunctionId VARCHAR(500)NUMBERCHAR(1)NUMBERCHAR(12)步骤名称步骤序号状态1-有效0-无效步骤操作时限(单位:天)操作处理编号(外键)表4.3案例环节记录表Sheet4.3Casetacherecordsheet创建案例流程描述如下:灵活结构办公自动化工作流的实现第30页FoundcaseNreadyfoundYSelectenactmentNcompleteYMemoryenactment图4.10流转流程设定流程图Figure4.10Transferenactmentflowchart公文流转流程设定采用JSP页面与用户进行交换,利用EJB进行逻辑业务处理和数据库操作。JSP页面包括:流转流程列表(WFList.jsp),创建环节(CreateNode.jsp),修改环节(ModifyNode.jsp)创建流程(CreateWF.jsp)修改流程(MdifyWF.jsp)删除流程,,,(DelWF.jsp)等页面;EJB包括:取相关信息EJB(GetWFInfo),维护环节EJB(MaintenceNode)和维护流转流程EJB(MaintenceWF)等。公文流转流程设定操作过程的详细的描述:用户登录后,进入【公文流转流程设定】的功能,首先进入流转流程列表(WFList.jsp)页面,该页面为用户提供查看、修改、删除和创建流转流程的功能接口。创建流转流程首先选择流转流程需要的全部流转环节,若所需要的流转环节不存在则首先通过创建环节(CreateNode.jsp)页面,调用维护环节EJB(MaintenceNode)来创建流转环节。内蒙古大学硕士学位论文第31页接下来为各个流转环节选定操作人员和操作功能,通过调整各个环节的步骤序号达到调整公文在该流转流程中的流转顺序的目的;设置任务整体时间限制和各个环节的时间限制。对于采用了人工控制流转方法的流程,在设定的时候还要设定具备催办、跳转、代理操作权限的监控人员。最后通过调用维护流转流程EJB(MaintenceWF)将流转流程设定信息记录在数据库表中。现举例说明设定流转流程设定的过程和操作。例如:现在需要创建一个名为“公文审批”的流转流程,该流程有发布公文、核实资料、初次审阅、复审批准、归档五个环节,发布公文由1科室负责,核实资料由2科室负责,初次审阅由信息中心负责,复审批准由处长负责,归档由资料中心负责。其公文流转的顺序为:releaseverifyFirstcheckReviewpigeonhole图4.11流转流程Figure4.11Transferflow开始设定公文流转流程,假定上述环节均需要创建。首先建立“发布”环节,用户调用创建环节(CreateNode.jsp)页面,在该页面中填写该环节的名称和描述信息,并采用下拉列表方式选择环节所属1科室,之后提交至服务器调用维护环节EJB(MaintenceNode),在流转环节信息表中添加一条记录,完成环节的创建。该记录的NodeID调用系统维护模块中生成主键的方法生成;名称(Title)为用户录入的“发布”;描述信息(DESC)为用户输入的该环节的具体描述信息;状态(State)默认值为 1;创建时间(CreateTime)和修改时间(UpdateTime)取服务器当前时间;创建人(CreateUser)是从用户登录系统后的会话(Session)中提取出来的。采用相同的步骤和方法创建“核实资料”“初次审阅”“复审批、、准”“归档”四个环节,操作过程不再重述。、接下来进行设定流程的操作,访问创建流程(CreateWF.jsp)页面,填写流程的名称和描述信息,以复选框的形式选择所需的五个环节即:发布、核实资料、初次审阅、复审批准、归档。至详细定制页面,以下拉列表方式为各个流转环节选择操作人员;以下拉列表方式为各个环节设定工作时限;以下拉列表方式为各个环节设定操作类型;使用Javascript脚本供用户方便的调整环节的前后顺序。最后提交至服务器,由维护流转流程EJB(MaintenceWF)将流程设定信息保存在数据库中,灵活结构办公自动化工作流的实现第32页完成创建流转流程的工作。维护流转流程EJB(MaintenceWF)内部的处理:在数据库流程信息表中添加一条名为“公文审批”记录,该记录包括此流转流程的处理时限、名称、描述信息、创建时间等;在流程步骤表中添加五条记录分别对应“发布”“核实资料”“初次审阅”、、、“复审批准”“归档”五个环节,这五条记录中记录了各个步骤的所属科室、操作人员、操、作功能和工作时限。至此名为“公文审批”的流转流程创建完成了,可以供用户使用该流程进行公文处理工作了。4.1.4公文流转的访问控制在公文业务处理中,由于公文种类多样、业务处理又具个性,再加上用户众多、资源和功能丰富,如何合理地为用户分配功能、资源成为重点考虑的问题。在现实工作中,往往一个用户身兼数职,既要起草发布公文又要核实材料,可能还担负着公文归档的工作,由此业务处理的复杂性可见一斑。这就要求公文流转软件能够方便、快捷地对资源、功能进行分配,简单高效地对用户岗位进行调整,实现合理的访问控制。公文流转的访问控制正是上述问题的解决方案。在对业务进行分析、考虑流行的访问控制方式后,本软件将角色访问控制(RBAC)和对象管理组(OMG)中资源访问决策(RAD)的思想结合起来,实现访问控制。引入角色这个中介,管理人员根据需要定义各种角色,并为角色设置合适的访问权限,而用户根据其职责被分配为不同的角色。用户与角色之间是多对多的关系,即一个用户可以被委派多个角色;一个角色也可以分配给多个用户使用。角色和功能之间也是多对多的关系,即一个角色可以分配多项功能;一个功能也可以分配给多个角色使用。由于实现了用户与访问的逻辑分离,基于角色的策略极大地方便了权限管理。而在公文流转中,对一个具体公文的访问权限常常是动态产生的,仅仅采用角色访问控制不足以胜任访问控制。因此,本软件在角色访问控制RBAC的基础上,溶入资源访问决策工具(RAD)的思想,对公文流转系统中用户的权限管理提出了一种静态授权和动态授权相结合的机制。内蒙古大学硕士学位论文第33页RoleinsertDistributerightDistributeroleroleuseraccreditdialog图4.12RBAC的组成结构图Figure4.12RBACstructurechart在RBAC的模型中用户和角色是多对多的关系,角色和授权之间也是多对多的关系,采用此种访问控制机制可以灵活的控制用户访问。requestusercorrespondAppserverrequestVisitdecideservercorrespond图4.13RAD工具的工作模式图Figure4.13RAD’sWorkpatternchart公文流转软件中用户的权限管理采取静态授权和动态授权相结合的机制。静态授权通过为用户分配角色体现,动态授权通过对用户资源的分配来体现。由管理人员为用户分配角色, 并动态的为特定用户分配可以使用的资源。接下来用数据流图、ER图、数据字典、程序流程图,详细描述了公文流转访问控制的分析和设计部分。灵活结构办公自动化工作流的实现第34页UserrecordRolerecordadministratorUserinformationUserselectUserinformatioaccreditAccreditresultResassignResinformationResrecordAccesscontrol图4.14公文流转访问控制设定DFD图Figure4.14DocumenttransferaccesscontrolDFDchart数据字典如下:1.数据流条目数据流名称:管理员信息简述:管理员的用户信息来源:用户登录后Session中去向:创建案例组成:用户编号+用户名称数据流名称:用户信息简述:用户基本信息来源:数据库用户信息表去向:授权处理和资源分配组成:用户编号+用户名称数据流名称:授权结果信息简述:记录用户编号和配置的角色编号列表来源:授权处理去向:数据库访问控制记录内蒙古大学硕士学位论文第35页组成:用户编号+{角色编号}数据流名称:资源分配信息简述:记录用户编号和配置的资源编号列表来源:资源分配去向:数据库访问控制记录组成:用户编号+{资源编号}2.数据存储条目数据存储名称:用户记录简述:存放在数据表库中用户记录组成:用户编号+登录名称+真实姓名+登录口令+联系电话+所在机构编号+联系地址+电子邮件地址+状态+描述信息+创建时间+用户类型组织方式:数据库表,用户编号为主键;创建人、所在机构编号为外键查询要求:能够根据用户编号进行精确查询数据存储名称:角色记录简述:存放在数据表库中角色记录组成:角色编号+角色名称+创建人+创建时间+状态+描述组织方式:数据库表,角色编号为主键;创建人为外键查询要求:能够根据角色编号进行精确查询数据存储名称:资源记录简述:存放在数据表库中资源记录组成:资源编号+资源名称+创建时间+资源类型+状态+描述信息+创建人+修改时间组织方式:数据库表,资源编号为主键;创建人、资源类型为外键查询要求:能够根据资源编号进行精确查询数据存储名称:访问控制记录灵活结构办公自动化工作流的实现第36页简述:存放在数据表库中访问控制记录组成:访问控制编号+用户编号+角色编号、资源编号+创建时间+类型+状态组织方式:数据库表,访问控制编号为主键;用户编号、角色编号、资源编号为外键查询要求:能够根据访问控制编号、用户编号进行精确查询3.加工条目加工名:用户选定激发条件:选取目标用户时优先级:普通输入:组织信息、管理员信息输出:用户信息加工逻辑:浏览组织用户对照表IF组织含有目标用户THEN取出用户编号和用户名称并传送ENDIF 加工名:授权处理激发条件:用户需要配置角色时优先级:普通输入:用户编号和用户角色列表输出:用户编号和选定的角色列表加工逻辑:浏览角色列表REPEATIF该角色被选择THEN该用户角色列表添加该角色编号,该角色名称ENDIFUNTIL浏览完毕存储至数据库加工名:资源分配内蒙古大学硕士学位论文第37页激发条件:用户需要配置资源时优先级:普通输入:用户编号和资源列表输出:用户编号和选定的资源列表加工逻辑:浏览资源列表REPEATIF该资源被选择THEN该用户资源列表添加该资源编号,该资源名称ENDIFUNTIL浏览完毕存储至数据库RolerecordResrecord1Userrecordlist1correspondcorrespondNcorrespondM1AccesscontrollistN图4.15公文流转访问控制ER图Figure4.15DocumenttransferaccesscontrolERchart字段名RESOURIDCreateTime类型CHAR(12)CHAR(12)说明资源编号(主键PK)创建时间YYYYMMDDHHMMTitleTYPEStateVARCHAR(500)CHAR(12)CHAR(1)资源名称资源类型(外键FK)状态1-有效0-无效灵活结构办公自动化工作流的实现第38页DescCreateUserUpdateTimeVARCHAR(1000)CHAR(12)CHAR(12)描述信息创建人(外键FK)修改时间YYYYMMDDHHMM表4.4资源记录表Sheet4.4Resourcerecordsheet字段名USERIDLOGINNAMEREALNAMEPWDTELORGIDADDRESSEMAILSTATEDESCCREATETIME类型CHAR(12)VARCHAR(50)VARCHAR(50)CHAR(32)VARCHAR(20)CHAR(12)VARCHAR(200)VARCHAR(200)CHAR(1)VARCHAR(500)CHAR(12)说明用户编号(主键PK)登录名称真实姓名登录口令MD5联系电话所在机构编号(外键)联系地址电子邮件地址状态描述信息创建时间YYYYMMDDHHMMTYPECHAR(2)表4.5用户记录表用户类型Sheet4.5Userrecordsheet内蒙古大学硕士学位论文第39页字段名ROLEIDROLENAMECreateTime类型CHAR(12)VARCHAR(50)CHAR(12)说明角色编号(主键PK)角色编号(外键FK)创建时间YYYYMMDDHHMMDESCStateCreateUserVARCHAR(500)CHAR(1)CHAR(12) 描述状态1-有效0-无效创建人(外键FK)表4.6角色记录表Sheet4.5Rolerecordsheet字段名ACLIDUSERIDFUNIDCreateTime类型CHAR(12)CHAR(12)CHAR(12)CHAR(12)说明访问控制编号(主键PK)用户编号(外键FK)角色、资源编号(外键PK)创建时间YYYYMMDDHHMMTYPECHAR(2)类型00-资源、01-角色、11-功能STATECHAR(1)状态表4.7访问控制记录表Sheet4.7Accesscontrolrecordsheet资源分配和用户授权的流程如下:灵活结构办公自动化工作流的实现第40页UserselectNRescompleteYResselectFoundresNcompleteYstore图4.16资源分配流程图Figure4.16ResassignflowchartUserselectNRolecompleteYRoleselectFoundroleNCompleteYstore图4.17用户授权流程图Figure4.17Useraccreditflowchart内蒙古大学硕士学位论文第41页公文流转访问控制的设定,分为用户授权和资源分配两部分。在操作过程中这两个部分的操作无先后关系,就是说先进行哪项配置都可以,现在举例说明。假设现实工作中,第一科室的用户A具有起草公文、归档两项操作,并且要维护B科室全部人员资料和整理B科室月汇报材料。那么分析该用户拥有的权限和资源,其中功能权限包括:起草公文、归档、维护用户资料、整理汇报材料,而拥有的资源包括:B科室全部人员资料和B科室月汇报材料。若每项功能对应一个角色,则用户A需要分配起草公文、归档、维护用户资料、整理汇报材料四个角色,现在使用管理员身份设定公文流转的访问控制权限。本例中首先进行用户授权,管理员登入系统,利用组织管理模块中的组织列表找到第一科室,在第一科室的用户列表中查找到用户A,进入用户A配置角色界面,将起草公文、归档、维护用户资料、整理汇报材料四个角色分配给用户A(若角色不存在,则通过角色管理模块创建角色)。接下来为用户A配置资源,利用组织管理模块中的组织列表找到第一科室,在第一科室的用户列表中查找到用户A,进入用户A配置资源界面,查找B科室全部人员资料和B科室月汇报材料这两项资源(资源的维护通过资源管理模块实现),并将两项资源分配给用户A。这样,用户A的授权和资源配置就完成了。用户A登入系统,可以执行维护B科室全部人员资料和整理B科室月汇报材料的操作了,同时也拥有了起草公文、归档、维护用户资料、整理汇报材料这四项功能。4.1.5公文流转的监控处理 公文在软件中流转处理,如何有效的对处理情况进行监控呢?在现实的工作处理流程中,一项公文处理任务开始后,流经各个处理部门进行处理,而负责这项任务的领导或者负责人,则需要经常性的询问相关处理人员,从而了解公文的处理进行到了哪个环节、是如何处理的,并要根据公文处理任务的时限要求,监督业务处理的进度。必要的时候可以选择催办、指定其他人员代理或者干脆跳转某些环节。在本软件中,监控人员通过查看软件绘制出的公文流程处理状态图,了解公文业务的处理情况,在必要的情况下可以选择催办、跳转、代理等处理。接下来用数据流图、ER图、数据字典、程序流程图,详细描述了公文流转监控设定的分析和设计部分。灵活结构办公自动化工作流的实现第42页ChartinformationWatchpersonUserinfoWatchinfoTransferchangeWatchdisposeHurryinfoDocumentfindDocumentplanProtractchartDocumenttransferInforecord图4.18公文流转监控DFD图Figure4.18Documenttransferwatchchart数据字典如下:1.数据流条目数据流名称:用户信息简述:设定用户的用户信息来源:用户登录后Session中去向:创建案例组成:用户编号+用户名称数据流名称:图表信息简述:描述流转状态图的HTML代码来源:绘制进度图去向:浏览器(为用户查看)组成:包含公文流转记录的HTML代码,在浏览器中显示为图表的形式数据流名称:公文进度信息简述:公文流转记录的信息列表来源:数据库中公文流转记录去向:绘制进度图组成:{公文流转编号+环节编号+处理人+处理时间+处理状态+环节顺序编号}内蒙古大学硕士学位论文第43页数据流名称:监控处理信息简述:调用监控的催办、跳转、跳转的控制信息及用户信息来源:监控人员操作控制去向:监控处理组成:监控人员编号+处理代码数据流名称:变更流转信息简述:调整流转处理环节的信息来源:监控处理去向:数据库流转控制记录表组成:案例编号+公文编号+{公文流转步骤编号}数据流名称:催办信息简述:指定环节的催办信息来源:监控处理去向:数据库消息记录表组成:催办信息编号+创建时间+发送人+接收人+信息正文+公文编号2.数据存储条目数据存储名称:公文流转记录简述:存放在数据表库中的公文流转记录组成:公文流转编号+环节编号+处理人+处理时间+处理状态+环节顺序编号+编辑审批信息组织方式:数据库表,公文流转编号为主键;环节编号、处理人为外键;处理状态和环节顺序编号为索引查询要求:能够根据公文流转编号进行精确查询;根据公文流转编号按照环节顺序编号排序查询数据存储名称:消息记录灵活结构办公自动化工作流的实现第44页简述:存放在数据表库中的消息记录组成:消息编号+发送人+接收人+创建时间+查看时间+状态+消息标题+消息正文组织方式:数据库表,消息编号为主键;发送人、接收人为外键;状态、查看时间为索引查询要求:能够根据消息编号进行精确查询3.加工条目加工名:公文查看激发条件:用户登入系统调用查看公文功能优先级:普通输入:用户操作控制信息和公文流转记录输出:描绘公文进度的信息加工逻辑:查询公文流转记录REPEATIF该记录是当前选择的公文流转记录THEN公文进度信息添加该条记录ENDIFUNTIL浏览完毕 加工名:监控处理激发条件:用户调用监控功能优先级:普通输入:用户信息和操作控制信息输出:变更流转信息、催办信息加工逻辑:测试控制信息IF催办TEHN生成催办信息ELSEIF跳转THEN生成跳转的变更流转信息ELSEIF代理THEN生成代理的变更流程信息ENDIF内蒙古大学硕士学位论文第45页加工名:绘制进度图激发条件:用户查看公文流转状态图时优先级:普通输入:公文进度信息输出:图表信息加工逻辑:将公文进度信息组织成为HTML代码形式的图表信息Caserecordlist1includeNNCaserecordlist1Documenttransferinfo1correspondInforecordlistNcorrespond图4.19公文流转监控ER图Figure4.19Documenttransferwatchchart字段名WFSTEPIDNodeIDSortIDInfoStateProUserProTime类型CHAR(12)CHAR(12)NUMBERBlobCHAR(1)CHAR(12)CHAR(12)说明公文流转编号(主键PK)环节编号(外键FK)环节序号编辑审批信息处理状态处理人(外键FK)处理时间YYYYMMDDHHMM表4.8公文流转信息表Sheet4.8Documenttransferinformationsheet灵活结构办公自动化工作流的实现第46页字段名MSGIDCreateTime类型CHAR(12)CHAR(12)说明消息编号(主键PK)创建时间YYYYMMDDHHMMTitleContentCreateUserRecUserSTATEViewTimeVARCHAR(500)VARCHAR(2000)CHAR(12)CHAR(12)CHAR(1)CHAR(12)消息标题消息正文创建人(外键FK)接收人(外键FK)状态查看时间YYYYMMDDHHMM表4.9消息记录表Sheet4.9Messagerecordsheet公文流转监控的处理流程如下:examineDocumentlistExamineplanchartWatchdisposseYNhurryskipactstore图4.20公文流转监控流程图Figure4.20Documenttransferwatchflowchart内蒙古大学硕士学位论文第47页拥有公文流转权限的用户,可以通过相关的功能,对需要监控的公文业务进行监控,必要时进行催办、跳转、代理等处理。现举例说明:当前案例――审批流程,共有四个流程,1――发布信息,2――公文初审,3――公文复审,4――公文归档。当前用户所在环节为4――公文归档。当前用户为该流程的责任人,拥有监控该流程业务的权限。用户登入系统,调用【业务监控】功能,系统根据其可使用资源的权限取出业务列表, 并将业务列表按照已归档、处理中进行分类,并用鲜明的颜色标识出不同时间限制的业务名称,将特急公文显示在待办公文的最顶端,并用显眼的红颜色表示,加急公文以黄颜色表示,最后是普通公文以浅蓝色表示,以方便用户优先处理紧急的业务。用户通过查看业务的流程处理状态图,可以对任务的处理情况一幕了然。该公文的流程处理状态图如下:Title:releaseinfoOp:huazhangTime:2006.11.11State:achieveTitle:firstcheckOp:jingwangTime:2006.11.12State:passTitle:recheckOp:gangliTime:2006.11.15State:passTitle:pigeonholeOp:minzhaoState:undisposeDeadline:2006.11.23图4.21公文流程处理状态图Figure4.21Documenttransferstatechart公文流程处理状态图,直观地表现出公文的流转进度和处理情况,用户根据任务处理的情况可以进行催办、跳转、代理等操作。催办操作通过催办信息页面(CB.jsp),生成催促提醒工作人员加快对该项任务的处理的信息,并调用信息处理EJB存储在数据库中,相关工作人员一登入系统就可以看到该信息。跳转操作通过跳转处理页面(TZ.jsp),将该业务处理环节中某一环节在该业务流程中删除掉,并调用变更处理流程EJB完成对业务流程的修改。代理操作通过代理处理页面(DL.jsp),变更该业务处理中某一环节的受理机构、受理人,指定该业务由其进行代理,并调用变更处理流程EJB完成代理操作。4.1.6公文发送处理公文发送处理需要确定公文的发送方式、公文的版式、公文格式的处理。在公文流转软件的使用者中有相当一部分是企业的行政办公人员。在传统办公模式下,他们灵活结构办公自动化工作流的实现第48页文字处理大多采用MicrosoftOfficeWord或者类似的产品,如果突然迫使他们使用另一种完全陌生的公文写作方式,软件被接受程度必然大大下降,因此本软件首先支持客户机上传MicrosoftOfficeWord格式文件作为公文发送的方式之一;此外支持的另外一种发文方式为浏览器框架的文本编辑方式,这种发文方式操作简单、方便快捷,特别适合简单版式的公文的起草发送。对于公文的版式也根据这两种发文方式分为两种情况考虑。1.对于客户机上传MicrosoftOfficeWord格式文件的公文发送方式,Word本身的模板技术可以很好的完成公文版式的确定。由管理人员在设定公文流转流程后,为该流程设定一个Word格式的公文版式的模板,保存在系统中,供用户下载模板书写公文。2.对于浏览器在线编辑的公文发送方式,由于采用了传统的JS脚本操作文本域(TEXTAREA)的方式,同时通过JSP、EJB处理公文正文信息,因此可以由管理人员在设定公文流转流程后,为该流程设定一个HTML代码表示的公文版式的风格,在用户在线书写公文时,选择模板样式,以此来实现公文的版式。公文的文件采用主流的MicrosoftOfficeWord格式。那么格式处理最主要的问题,就是考虑在线编辑公文的时候,如何将HTML代码表示的公文正文转换为Word格式的文档(实现部分说明)。接下来用数据流图、ER图、数据字典、程序流程图,详细描述了公文发文处理的分析和设计部分。UploaddocumentinfoUploaddisposeDocumentinfoTemplateselectTemplateinfostoreDispatcholineDocumentinfoDispatchpersonSendmodeCaserecordSubmitdisposeDocumentrecord图4.22公文发文处理DFD图Figure4.22DocumenttransferdisposeDFDchart数据字典如下:1.数据流条目内蒙古大学硕士学位论文 第49页数据流名称:发送方式简述:公文发送方式代码来源:用户通过页面选择产生去向:模板选择服务组成:发送方式代码+模板类型编号数据流名称:上传文件发文信息简述:上传发送的公文文件和公文的基本信息来源:用户录入信息,选择文件上传去向:上传处理组成:描述信息+发布人+公文标题+公文正文+发布类型+案例类型数据流名称:在线发文信息简述:在线编辑的公文正文和基本信息来源:用户录入信息去向:提交处理组成:描述信息+发布人+公文标题+公文正文+发布类型+案例类型数据流名称:模板信息简述:系统支持的公文版式的模板来源:模板下载去向:发布公文的用户组成:模板编号+模板文件+模板名称数据流名称:公文记录信息简述:公文在数据库中保存的记录信息来源:上传、提交处理去向:数据库组成:公文编号+描述信息+发布人+发布时间+公文标题+公文正文+发送类型+案例类型+状态灵活结构办公自动化工作流的实现第50页2.数据存储条目数据存储名称:公文记录简述:存放在数据表库中的公文记录信息组成:公文编号+描述信息+发布人+发布时间+公文标题+公文正文+发送类型+案例类型+状态组织方式:数据库表,公文编号为主键;发布人、案例类型为外键;发送类型为索引查询要求:能够根据公文编号进行精确查询3.加工条目加工名:模板选择激发条件:用户选择下载模板优先级:普通输入:发文方式、案例类型和模板编号输出:模板编号、模板名称和模板文件加工逻辑:浏览模板记录REPEATIF该记录符合匹配THEN取该记录,BREAKENDIFUNTIL浏览完毕提供用户下载使用加工名:上传处理激发条件:用户选择公文上传功能,确认上传优先级:普通输入:描述信息、发布人、公文标题、公文正文、发布类型、案例类型输出:公文编号、描述信息、发布人、发布时间、公文标题、公文正文、发送类型、案例类型、状态加工逻辑:调用生成公文编号,组织公文记录信息,发送至EJB存储加工名:提交处理内蒙古大学硕士学位论文第51页激发条件:用户选择公文发布功能优先级:普通输入:描述信息、发布人、公文标题、公文正文、发布类型、案例类型输出:公文编号、描述信息、发布人、发布时间、公文标题、公文正文、发送类型、案例类型、状态加工逻辑:调用生成公文编号,组织公文记录信息,发送至EJB存储加工名:存储激发条件:调用公文信息存储优先级:普通输入:公文编号、描述信息、发布人、发布时间、公文标题、公文正文、发送类型、案例类型、状态输出:数据库加工逻辑:存储至数据库Caserecordlist1correspondNDocumentrecordlist图4.23公文发送ER图Figure4.23DocumenttrsferERchart字段名FILEIDCreateTime类型CHAR(12)CHAR(12)说明公文编号(主键PK)发布时间YYYYMMDDHHMMTitleSendUserStateTypeDesc VARCHAR(500)CHAR(12)CHAR(1)CHAR(12)VARCHAR(1000)公文名称发布人(外键FK)状态1-有效0-无效案例类型描述信息灵活结构办公自动化工作流的实现第52页ContentSendTypeBlobCHAR(1)公文正文发送类型1-上传2-在线编辑CurStepNumCHAR(12)当前处理环节编号(外键FK)表4.10公文记录表Sheet4.9Documentrecordsheet公文发布的处理流程如下:TemplateselectDocumentwriteDocumentsendonlineSendmodeuploadUploaddisposeEditonlineDocumentstore图4.24公文发送流程图Figure4.24documenttransferflowchart公文发送方式有两种,因此本文将这两种发文方式的流程分别开来,举例说明。1.假设用户使用MicrosoftOfficeWord书写公文,公文的版式采用管理员设定过的“标准公文”,然后通过上传功能发布公文。用户所在客户机未下载过“标准公文”的模板,因此在起草公文前,用户需要登入系统,通过【公文模板下载】选择“标准公文”的模板下载到本地客户机(已经下载过模板则无需此项操作)。接下来用户利用该模板书写公文,待公文书写完毕,用户登入系统,选择【公文上传发内蒙古大学硕士学位论文第53页送】的功能,进入上传公文页面(FileForm.jsp)。在该页面进行录入公文的标题、选择公文类型、选择公文案例等操作,将公文的基本信息设定完毕。最后通过点击按钮,提交公文至服务器。服务器端通过发送公文处理JSP(SendFilePro.jsp)对上传信息进行组织整理,该页面使用jspSmartUpload组件获取客户机上传的文件和相关信息,并调用上传公文处理EJB将之存储在数据库中。2.假设用户使用在线编辑方式书写公文,公文的版式采用管理员设定过的“标准公文”。用户登入系统,选择【公文在线编辑】的功能,进入编辑公文页面(EditFile.jsp)。在该页面Form元素的“模板样式”下拉菜单中选择“标准公文”。而后进行录入公文的标题、选择公文类型、选择公文案例等操作,录入编辑公文的正文,将公文的基本信息设定完毕。最后通过点击按钮,提交公文至服务器。服务器端通过发送公文处理JSP(SendFilePro.jsp)对信息进行组织整理,并调用在线编辑公文处理EJB将之存储在数据库中。4.2软件实现的技术重点4.2.1jspSmartUpload组件本软件中上传文件公文发送方式处理中,用户在客户机使用MicrosoftOfficeWord软件进行公文的书写,当公文书写完毕,用户登录进入公文流转软件,选择公文发送的功能,利用浏览器Web页面的Form域选择本地的公文文件,同时书写公文的相关信息后发送即可。整个发送的工作仅仅是点击几次按钮填写一些简单信息,操作相当简单,即使不具有很多计算机知识的用户只需要经过简单的培训也可熟练的使用。但是Java本身并不具备文件上传的类似接口或方法,经过调查了解,发现jspSmartUpload组件很好的满足了处理文件上传的需求。jspSmartUpload 组件是由www.jspsmart.com网站开发的一个开源的的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件拥有如下几个特点成为选择使用的依据。1、能全程控制上传:利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。2、能对上传的文件在大小、类型等方面做出限制,因此可以滤掉不符合要求的文件。3、下载灵活:仅写两行代码,就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下,都可以利用jspSmartUpload进行下载。灵活结构办公自动化工作流的实现第54页4、能将文件上传到数据库中,也能将数据库中的数据下载下来。但是该特性是针对MySQL(数据库的,因此不适用于本软件,故本软件中将jspSmartUpload组件稍作调整使用。)公文流转中的主体-公文,在整个流转过程中需要以Blob大字段的形式存放在数据库中,这就需要使用jspSmartUpload组件在服务器端获取客户机上传的文件,最终储存至数据库中。该组件的使用非常简单,仅仅需要两个JSP页面:公文上传页面FileForm.jsp和处理公文页面SendFilePro.jsp,即可完成公文上传、提取信息、存储至数据库的操作。LoginsoftwareUploaddocumentInfodisposeEJBstore图4.25发送公文流程Figure4.25Documenttransferflow首先,用户在客户机使用MicrosoftOfficeWord软件进行公文的书写,当公文书写完毕,用户登录进入公文流转软件,选择【公文发送】的功能,使用具有表单的公文上传页面FileForm.jsp页面,录入公文的基本信息和正文,录入完毕提交,将公文正文及其详细信息描述提交到服务器处理公文页面SendFilePro.jsp,该页面中使用jspSmartUpload组件获取客户机上传的文件和其他参数信息,然后调用EJB存储至数据库之中,使用的主要接口及大致流程如下:mySmartUpload.initialize(pageContext)初始化SmartUpload组件的一个实例mySmartUpload;mySmartUpload.upload()完成客户端信息到服务器的传输;(String)myEnum.nextElement();将myEnum中的每个枚举元素(一个元素既是提交表单中的一个控件的VALUE值)提取出来并转换成String类型以便插入数据库中;mySmartUpload.getFiles().getFile(0).zGetBytes();该方法是本软件增加的方法,实现获得组件中上传文件的Byte数组。组件中共包括File.java、Files.java、Request.java、SmartUpload.java、SmartUploadException.java,本软件在File.java文件中增加下面方法:publicbyte[]zGetBytes(){returnm_parent.m_binArray;内蒙古大学硕士学位论文第55页}最后,调用EJB将公文正文的字节流存入数据库中的Blob字段,至此发文的处理过程完毕。4.2.2HTML公文至WORD文档的转换本软件的公文在线编辑,采用了传统的JavaScript脚本操作文本域(TEXTAREA)的方式,通过JSP技术处理结果,比较好的实现了在线编辑的功能模块。同VBScript相比,软件选择了具有更多的操作方式,更灵活的语法,且被更多的浏览器所兼容的Javascript作为脚本语言。首先在Web容器中定义三个JavaScript脚本文件:menu.js(部署菜单、按钮),editpro.js(定义每个菜单、按钮所对应的事件处理方法),content.js(定义在TEXTAREA操作表单的相关属性、方法)。而且利用这种方式编辑公文,可以很方便的对TEXTAREA区域进行标记嵌套,即在TEXTAREA区域内的隐含值为HTML格式的公文正文。在公文全部编辑完成后,使用JSP页获取TEXTAREA的值,根据需要进行数据整理,最后调用EJB存储再数据库中。使用此种方法发送的公文,在数据库表中存放的是HTML格式的公文正文,下文对于此种方式的编辑稍作说明。在线编辑公文,使用了比较多的Javascript脚本,勾画编辑公文的JSP页 面(Editfile.jsp),通过JS脚本捕捉用户的鼠标、键盘事件,识别出用户所选取的操作内容、操作类型,利用HTML代码对文本输入域(TEXTAREA)中的VALUE值进行嵌套HTML代码,以实现对公文正文的文字、版面格式的处理。举例说明,例如:操作1:用户选取公文正文(TEXTAREA)中某些文字为红颜色;处理:在TEXTAREA中用户选择的文字前后嵌套相应的HTML代码,如xxxxxxxxxx操作2:用户选取公文正文(TEXTAREA)中某些文字为标题1号字;处理:在TEXTAREA中用户选择的文字前后嵌套相应的HTML代码,如xxxxxxxxxx。。。。。。灵活结构办公自动化工作流的实现第56页通过这种方式对公文正文格式进行处理,处理完成后提交至服务器,将TEXTAREA域中的含有HTML代码的公文信息存储至数据库表中。在读取公文时,只需要取出记录中的公文正文,放置HTML页面中即可还原显示出公文内容,同时可以通过使用JS脚本调用IE的打印功能将公文打印出来。为了公文格式的统一,如何将数据库中的HTML代码格式的公文信息转换为WORD文档格式呢?实际上实现起来非常的简单,只需要在浏览公文的JSP页面中加入如下代码:response.setHeader("Content-disposition","attachment;filename=No"+FileID+"File.doc");response.setContentType("application/vnd.ms-word");ResultSetrs=stmt.executeQuery(sql);if(rs.next()){in=rs.getBinaryStream("Content");//将Blob字段内容按照二进制流的方式读入response.setContentType("application/vnd.ms-word");//设置Servlet返回格式sop=response.getOutputStream();intlen;byte[]buf=newbyte[1024];while((len=in.read(buf,0,1024))!=-1){sop.write(buf,0,len);//输出Blob中公文正文信息到浏览器中显示}}通过上述代码既可以将HTML代码转为WORD文件类型,能够进行这种转化是因为WORD本身即采用的HTML语言脚本。4.2.3EJB的应用本软件是基于J2EE架构的,而EJB是J2EE重要的组成部分,可以说没有EJB的J2EE只是一种Web系统,这样的系统非常容易丧失了多层结构的大部分优点。因此本软件采用JSP、HTML等实现表现层处理,普通JavaBean实现应用层处理,EJB实现服务层、持久层的处理。对于EJB使用,本软件使用实体Bean(EntityBean)对数据库中的数据对象进行控制,使用会话Bean(SessionBean)处理业务逻辑。内蒙古大学硕士学位论文第57页本软件开发环境使用JBuilder,通过JBuilder可以方便的实现EJB的开发和部署。下面使用一个简单的范例说明使用JBuilder开发和部署EJB的过程:首先配置JBuilder的环境,配置WebLogicServer相关的设置;然后配置工程的属性,选择配置好的WebLogicServer作为该工程的服务器;接下来创建一个EJB工程,并设计EJB;最后编译、运行EJB并完成EJB在WebLogic中的部署,再创建相应的EJBTestClient对EJB进行测试。调用EJB的实例如下范例:try{Propertiesh=newProperties();h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");h.put(Context.PROVIDER_URL,url);Contextctx=newInitialContext(h);Objecthomes=ctx.lookup(JNDI_NAME);//JNDI_NAME-目标EJB的JNDI名称home=(ProcessorHome)narrow(homes,ProcessorHome.class);processor=(Processor)narrow(home.create(),Processor.class);Stringflag=processor.process(m_szParam);//m_szParam-XML格式的公文记录信息//flag-EJB处理返回的操作结果}catch(Exceptionne){}4.2.4 数据库操作对于数据库操作,主要是连接方式和数据库对象控制两方面问题。一、数据库连接方式本软件使用Java实现,因此数据库连接采用JDBC连接方式,而JDBC的连接有两种,一种是直接连接,另一种是池连接。本软件选用了WebLogic8.1和Oracle9i,为提高效率,采用连接池的Thin方式连接数据库。灵活结构办公自动化工作流的实现第58页config.xml中连接池配置如下:连接池测试主要代码如下:packagecom.j2ee.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.sql.DataSource;importjava.sql.Connection;importjava.sql.Statement;importjava.sql.ResultSet;importjavax.naming.Context;importjavax.naming.InitialContext;importjava.util.*;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicvoiddestroy(){super.destroy();}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{内蒙古大学硕士学位论文第59页Contextctx=null;Hashtableht=newHashtable();ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");ht.put(Context.PROVIDER_URL,"t3://68.16.40.200:7001");Connectionconn=null;Statementstmt=null;ResultSetrs=null;response.setContentType("text/html;charset=gb2312");PrintWriterout=response.getWriter();try{ctx=newInitialContext(ht);DataSourceds=(DataSource)ctx.lookup("MyJdbc");conn=ds.getConnection();stmt=conn.createStatement();stmt.executeQuery("select*fromUSERINFO");rs=stmt.getResultSet();out.println("");while(rs.next()){out.println(rs.getString(1)+"_")}out.println("");if(stmt!=null)if(conn!=null)out.flush();out.close();}catch(Exceptione){e.printStackTrace();}finally{try{ctx.close();}catch(Exceptione){out.println("ctxERR!");}try{if(rs!=null){rs.close();}{{stmt.close();conn.close();}}灵活结构办公自动化工作流的实现第60页if(stmt!=null){stmt.close();}if(conn!=null){conn.close();}}catch(Exceptione){out.println("ctxERR!");}}}二、数据库对象控制 由于本软件中的公文正文,存储在Oracle数据库中的Blob大对象字段中,所以对于Blob对象的读出和显示也是技术重点之一。经过对Oracle中Blob字段的研究,采用类似以下的代码能实现将存储在Blob字段中的正文显示在浏览器中:Statementstmt=//建立statement对象conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);Stringsql="select*fromFileInfowhereFileID=’”+FileID+”’表中含有Blob字段:Content。ResultSetrs=stmt.executeQuery(sql);if(rs.next()){in=rs.getBinaryStream("Content");//将Blob字段中的内容按照二进制流的方式读入response.setContentType("application/vnd.ms-word");//设置Servlet返回格式sop=response.getOutputStream();intlen;byte[]buf=newbyte[1024];while((len=in.read(buf,0,1024))!=-1){sop.write(buf,0,len);//输出Blob中公文正文信息到浏览器中显示}}4.2.5软件部署程序结构按照J2EE规范,软件可以组合成一个EAR包来部署,在EAR包里分为两个程序包:WAR包和JAR包,其中WAR包包括整个软件的Web应用部分(下图描述了WAR的结构),内蒙古大学硕士学位论文第61页而JAR包则是软件用到的EJB部分。JSP目录:软件中的JSP页面HTML目录:软件中的HTML页面IMAGE目录:软件中图片资源WAR包JS目录:软件中JS脚本文件CSS目录:软件中样式表定义文件WEB-INF目录:软件中配置文件和JavaBean图4.26WAR包结构图Figure4.26StructureofWARchart灵活结构办公自动化工作流的实现第62页第五章总结目前灵活办公自动化软件开发任务已经完成,经过使用,认为本软件操作简单、使用灵活,很好的满足了目前的业务需求,比较符合人工处理的工作习惯。在软件开发的过程中,Java语言的继承性、重用性得到了充分的发挥,其灵活性和安全构架及Java在安全组件上的支持使开发强度大大下降。这些特性令系统架构更显清晰,缩短了开发周期。软件具有以下特点:1.具有较好的可扩充性、可靠性、安全性、可移植性;2.很好的满足了该企业内部的公文流转业务需求;3.运行环境简单,由于使用纯Java实现软件,因此对运行环境要求简单,可以选择多种应用服务软件平台,如选择Tomcat等;预留访问其他数据库接口,可以方便的移植到其他数据库中如MicrosoftSQLServer;4.采用B/S结构,客户端全部Web页面处理,因此操作简单并更具人性化;5.访问控制机制采用基于角色的RBAC和OMG的RAD工具的思想结合的机制,使访问控制灵活、易变,充分满足了复杂繁琐的业务需求。当然软件中也有很多的不足,如:1.采用基于角色的RBAC和OMG的RAD工具思想结合的访问机制,增加了管理员的工作强度,而且操作略显复杂,从而提高了管理员的技术要求;2.软件中组织机构采用树状结构,并且未限制组织机构的层次,使用JSP页面结合JS呈现在用户面前,当组织层次较深、机构较多的情况下,速度较慢;3.尽管在人性化和操作简洁方面颇为关注,但是由于过多的灵活性导致功能多和资源丰富,从而使操作略显繁琐。针对软件中的一些不足之处,做出改进和调整:合理调整灵活性和易用性的平衡点,使软件更加简单易用,更具人性化。优化JSP表现层,简化某些繁琐且效率较低的JS脚本,或者改用其他技术加以实现。如组织机构的树状列表,本文采用JSP、JS脚本方式,可以改为JS和XML结合的方式,通过多次和服务器交互实现其功能。增强通讯录的功能,如开发即时通信的小客户端插件,用户通过访问公文流转软件即可 内蒙古大学硕士学位论文第63页自动下载该插件,方便流转环节中工作人员的工作交流。此外,可以考虑增加一些具有实用意义的功能模块,使软件更具吸引力。如增加工作计划模块,该模块方便的记录用户的工作计划,并且在需要的情况下提醒用户。随着工作的开展,本软件会进一步完善、发展,拥有更强的生命力!灵活结构办公自动化工作流的实现第64页致谢词论文完成之际,我思绪万千,心情久久不能平静。回顾三年的工程硕士的学习经历,心中充满感慨。三年前,我参加了全国统一的计算机工程硕士入学考试,考入了内蒙古大学学习。从此,下班后我就与书本和计算机为伴,节假日也不例外。这样一下子就是三年。这三年里,几乎一切的业余生活都是学习,似乎失去了很多,但是今日我却感觉得到了很多。我得到了一种自信,磨练了自己的意志,具有了更强的毅力。今天终于要完成论文了,即将毕业,我希望能给这三年的学习生活画上一个圆满的句号。在此,我感谢在学习和生活中关心和帮助过我的老师、同学、朋友,特别感谢指导我完成论文的王平老师,在繁忙的工作中,对我的耐心辅导,帮助我完成论文,我由衷的表示感谢!我愿在未来的学习和生活中更加努力,以此来答谢曾经关心、帮助和支持过我的所有老师、同学和朋友,再次感谢!内蒙古大学硕士学位论文第65页参考文献[1]汪孝宜,JSP数据库开发实例精粹,电子工业出版社,2002年8月[2]文红,J2EE开发使用指南,电子工业出版社,2002年3月[3]孙一林,彭波,JSP数据库编程实例,清华大学出版社,2003年5月[4]赵强,乔新亮,J2EE应用开发,北京电子工业出版社,2003年6月[5]王立福,麻志毅,张世琨,软件工程(第二版),北京大学出版社,2003年3月[6]刘振安,面相对象程序设计,经济科学出版社,2000年3月[7]WendyBoggs,MichaelBoggs,UMLwithRationalRose从入门到精通,电子工业出版社,2000年3月1'