某研究院办公自动化系统设计方案_第1页
某研究院办公自动化系统设计方案_第2页
某研究院办公自动化系统设计方案_第3页
某研究院办公自动化系统设计方案_第4页
某研究院办公自动化系统设计方案_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XX工业研究院办公自动化系统设计方案XXXX年6月目录第一章 系统总体结构XX工业研究院办公自动化系统基于Lotus Domino / Notes平台开发,系统的总体结构如下图所示:图1-1 XX工业研究院办公自动化系统总体结构第二章 系统设计§ 2.1 电子邮件 电子邮件模块的结构如下图所示。图2-1-1 电子邮件模块一. 表单设计1. 邮件表单(Memo)表2-1-1 邮件表单设计数据域类型说明SendTo文本域收件人地址CopyTo文本域邮件抄送地址BlindCopyTo文本域邮件密送地址WebSubject文本域邮件主题Text文本域(允许多行)邮件正文haveread文本域

2、邮件文件已读标志操作说明发送发送邮件保存为草稿将邮件保存为草稿回复回复邮件转发转发邮件地址簿打开地址簿表单编辑编辑邮件删除删除邮件2. 回信表单(Reply)表2-1-2 回信表单设计数据域类型说明SendTo文本域收件人地址CopyTo文本域邮件抄送地址BlindCopyTo文本域邮件密送地址WebSubject文本域邮件主题Text文本域(允许多行)邮件正文haveread文本域邮件文件已读标志操作说明发送发送邮件保存为草稿将邮件保存为草稿回复回复邮件转发转发邮件地址簿打开地址簿表单编辑编辑邮件删除删除邮件3. 转发表单(wForward)表2-1-3 转发表单设计数据域类型说明SendT

3、o文本域收件人地址CopyTo文本域邮件抄送地址BlindCopyTo文本域邮件密送地址WebSubject文本域邮件主题Text文本域(允许多行)邮件正文haveread文本域邮件文件已读标志操作说明发送发送邮件保存为草稿将邮件保存为草稿回复回复邮件转发转发邮件地址簿打开地址簿表单编辑编辑邮件删除删除邮件4. 信件邮递报告表单(NonDelivery Report)表2-1-4 信件邮递报告表单设计数据域类型说明OriginalSubject文本域被邮递的信件名称IntendedRecipient文本域被邮递信件的收件人地址FailureReason文本域邮件为邮递到目的地原因SendTo文

4、本域被邮递邮件文件中指定的收件地址CopyTo文本域被邮递邮件文件中指定的抄送地址BlindCopyTo文本域被邮递邮件文件中指定的密送地址Subject文本域被邮递邮件文件的主题Body文本域(允许多行)被邮递邮件文件的内容haveread文本域邮件文件已读标志操作说明删除删除邮件二. 视图设计1. 收件箱($Inbox)收件箱通过文件夹实现,所有接收到邮件文件均由系统自动放入收件箱中。2. 发件箱($Sent)用于所发送的邮件均自动保存在发件箱中。文档选择条件为:SELECT DeliveredDate="" & PostedDate!=""

5、 & !(IsMember("S"ExcludeFromView) & Viewtag!="Delete"3. 草稿箱($Drafts)所有保存为草稿的邮件均显示在草稿箱中。文档选择条件为:SELECT PostedDate = "" & $MessageType = "" & IsNotMember("D" ExcludeFromView) & ISMAILSTATIONERY != 1& Viewtag="Istrash"4

6、. 垃圾箱(Carbage) 所有被删除的邮件均保存在此视图中。在此视图中再次删除的话,则邮件文件被真正删除。 文档选择条件为:SELECT (FORM="Memo" | form="Reply" | Form="wForward") & Deleted="true"§ 2.2 公文流转一. 结构设计XX工业研究院OA系统公文流转模块总体结构如下图所示。图2-2-1 公文流转模块结构设计二. 功能设计公文流转模块提供的具体功能如下图所示:图2-2-2 公文流转模块功能设计三. 表单设计1. 公文表

7、单(Data)公文表单用于记录公文的相关信息。具体设计如下:表2-2-1 公文表单设计数据域类型说明GWLX列表框公文类型DJBM列表框公文的登记部门DJSJ文本域公文的登记时间Subject文本域公文标题NGR文本域公文起草人姓名GWHJ列表框公文缓急信息列表ZTCB文本域公文的主题词ZBDW文本域主办单位名称ZCDW文本域主送单位名称CSDW文本域抄送单位名称CBDW文本域抄报单位名称Info文本域(允许多行)公文正文内容Data_Number文本域公文的编号SelectWorkFlow列表框显示过程定义模版列表PersonAnswer文本域显示处理人的批复意见Data_Personlis

8、t文本域允许处理本公文的用户列表Start文本域公文是否为首次提交Data_Current_Editor文本域记录当前编辑公文的用户姓名CuiBan文本域是否存在公文催办通知操作说明提交流转提交公文进入流转过程暂存将公文保存为草稿签收处理人打开公文进行编辑编辑公文作者编辑公文删除删除公文催办发出公文催办通知说明:(1) Subject、Info等用于记录公文的内容信息,公文的内容信息包括公文主题、公文编号、公文内容、公文密级、公文缓急等。(2) NGR、DJSJ分别记录公文文档的创建人和创建时间,工作流的管理与监控功能会用到这些信息。(3) SelectWorkFlow是列表框,用于显示所有可

9、供使用的过程定义模版。在公文的创建阶段,用户从列表中选择要使用的流程;在公文进入流转过程以后,由工作流引擎根据所选择的流程,自动生成过程定义实例,之后实现公文文档同过程定义实例的绑定操作。(4) Data_Personlist域用于记录所有对本文档具有处理权限的用户的用户名列表,只有在此列表中列出的用户才能够对公文进行处理。其取值由工作流引擎自动填写。2. 公文附件表单(AddAttachment)公文附件表单用于存储某一公文所包含的附件文件,一个公文可以包含多个附件,每个附件对应一个公文附件表单。表2-2-2 公文附件表单设计数据域类型说明Attachment_Info文本域对附件的简要说明

10、File Upload控件上载文件控件ParentId文本域此附件表单所从属的公文表单IDAttachment_Name文本域附件文件名Attachment_Size文本域附件文件大小操作说明保存附件保存公文附件表单删除附件删除公文附件表单关闭窗口关闭公文附件上载窗口3. 公文正文表单(AddDocumentBody)公文正文表单用于存储某一公文所包含的正文文件,一个公文可以包含多个正文文件,每个正文文件对应一个公文正文表单。表2-2-3 公文正文表单设计数据域类型说明Attachment_Info文本域对正文文件的简要说明File Upload控件上载文件控件ParentId文本域此公文正文

11、表单所从属的公文表单IDAttachment_Name文本域附件文件名Attachment_Size文本域附件文件大小操作说明保存正文保存公文正文表单删除正文删除公文正文表单关闭窗口关闭公文正文上载窗口4. 工作流信息表单(WorkFlowInfo)工作流信息表单用于存储工作流程模版的基本属性信息。在流程信息表单中定义的重要数据域如下:表2-2-4 工作流信息表单数据域类型说明Workflow_Name文本域流程名称Workflow_Type列表框流程类型,可选值为“预定义流程”和“自定义流程”Workflow_Author文本域此流程创建人姓名Workflow_Created文本域此流程创建

12、时间Workflow_Body文本域此流程功能简要说明操作说明修改编辑工作流信息表单保存保存工作流信息表单删除删除工作流信息表单5. 流程节点表单(event)流程节点表单用于记录过程定义中流程节点所包含的信息。过程定义中的每个流程节点都与Domino数据库中的一个流程节点文档对应。表2-2-5 流程节点表单设计数据域类型说明Workflow_Id文本域节点所从属的工作流信息文档IdData_Id文本域与此过程定义所绑定的应用数据文档IdEvent_Id文本域流程节点文档Id,在节点文档生成后自动填写Event_Name文本域流程节点功能描述名称,如初审、批阅等。Event_Pre_Names

13、列表框此流程节点的全部前趋节点列表Event_Personlist文本域此节点允许处理人名称Event_Personlist_Type列表域指定处理人类型:“个人”、“交色”SXQM复选框是否使用手写签名功能Event_Body文本框(允许多值)此节点功能简要说明Event_Pre_Name文本域(允许多值)以节点名称表示的前驱节点列表Event_Pre_Id文本域(允许多值)以节点Id表示的前驱节点列表Evemt_Next_Name文本域(允许多值)以节点名称表示的后继节点列表Event_Next_Id文本域(允许多值)以节点Id表示的后继节点列表Event_Status文本域流程节点状态E

14、vent_Period文本域流程节点文档状态Event_Period文本域用于区分模版和实例,可取值为“模版”、“实例”SelectPre复选框此节点是否为选择性收点SelectNext复选框此节点是否为选择性发点SelectNode文本域如果此节点是选择性发点,则此域用于记录所选定的后继节点名称操作说明修改编辑流程节点表单保存保存流程节点表单删除删除流程节点表单说明:(1) 流程节点定义中的Att(事件属性集合)通过数据域Workflow_Id、Data_Id、Event_Id、Event_Name、Evnent_Personlist、SXQM等表达出来。Event_Pre_Name、Eve

15、nt_Pre_Id为允许多值的文本域,以节点名称和节点文档Id两种方式表达此节点的前驱节点集合Pre;Event_Next_Name、Event_Next_Id则以节点名称和节点文档Id两种方式表达此节点的后继节点集合Next。Event_Status表达节点状态信息。(2) Workflow_Id数据域用于标识此流程节点文档所从属的工作流程。属于同一工作流程的流程节点文档具有相同的Workflow_Id。(3) Data_Id数据域用于实现应用数据实例同过程定义实例的一一对应。Data_Id的值为公文表单的文档实例的文档Id,由工作流管理系统自动填写。组成一个过程定义实例的所有流程节点文档具

16、有相同的Data_Id值。(4) Event_Status标识流程节点的状态信息,由工作流引擎自动设置。(5) 构成过程定义的流程节点文档在工作流进入运行期之前,存储在过程定义模版库中;在运行期,则存储到过程定义实例库。因此,在流程节点表单中使用Event_Period数据域来标识过程定义的状态。属于同一过程定义的节点文档的Event_Period域的值是相同的。其可能取值为“模版”和“实例”。(6) SelectPre数据域用于标识此节点是否为选择性收点。在工作流实例运行期间,工作流引擎需要根据此数据域的取值选择不同的启动条件构造算法。(7) SelectNext数据域用于表示此节点是否为选

17、择性发点。在工作流实例运行期间,工作流引擎需要根据此数据域的取值选择不同的完成条件构造算法。节点所选定的后继节点的名称保存在SelectNode数据域中。6. 已办公文记录表单(DoneRecord)已办公文记录表单用于记录用户已经处理完成的公文的相关信息,以备日后查阅。表2-2-6 已办公文记录表单设计数据域类型说明Subject文本域公文标题NGR文本域记录公文的拟稿人姓名SDSJ文本域收到此公文的时间BJSJ文本域完成处理的时间PYYJ文本域用户的批阅意见操作说明删除删除已办公文记录表单7. 用户角色设置表单(UserRuls)用户角色设置表单用于记录用户同其职务的对应关系。表2-2-7

18、 用户角色设置表单设计数据域类型说明RulName文本域角色名称SendTo文本域人员名称ZhiNeng文本域角色职能说明操作说明修改编辑用户角色设置表单保存保存用户角色设置表单删除删除用户角色设置表单8. 搜索表单(SearchForm)搜索表单用于输入文档检索条件。表2-2-8 搜索表单设计数据域类型说明Search_ViewName列表框选择要检索的视图Search_Info文本域人员名称Search_Type文本域角色职能说明HTML文本域文档检索结果操作说明检索文档进行检索操作四. 视图设计1. 工作流名称列表 用于显示数据库中所有工作流信息文档。 文档选择条件: SELECT fo

19、rm="WorkFlowInfo"2. 模版事件列表用于显示所有具有“模版”属性的流程节点文档。文档选择条件如下: SELECT (Form = "流程节点") & (Event_Period="模版") 3. 激活事件列表用于显示所有具有“激活”属性的流程节点文档。文档选择条件如下:SELECT (Form = "流程节点") & (Event_Period="激活") 4. 数据表单列表用于显示所有公文文档。文档选择条件如下:SELECT form="数据表单&qu

20、ot; & Start=0 5. 公文草稿列表用于显示所有保存为草稿的公文文档。文档选择条件如下: SELECT form="数据表单" & Start=1 6. 公文附件列表用于显示所有公文附件文档。文档选择条件如下:SELECT form="AddAttachment"7. 公文正文列表用于显示所有公文正文文档。文档选择条件如下:SELECT form="AddDocumentBody"8. 已办公文列表用于显示所有已办公文记录文档。文档选择条件如下:SELECT form="DoneRecord&quo

21、t;五. 工作流流转控制算法设计1. 功能分析 将工作流引擎的功能细化为以下几个子功能: (1) 创建过程定义实例 在工作流进入运行期以前,过程定义以模版的形式保存在过程定义模版库中。工作流进入运行期,工作流引擎必须根据用户所选定的过程定义模版自动生成过程定义实例,并存入负载最低的过程定义实例子库。 (2) 完成应用数据实例和过程定义实例的绑定操作 在过程定义实例生成以后,工作流引擎必须将其同对应的应用数据实例绑定,实现一一对应,从而完成数据单元实例的组建。 (3) 在工作流实例运行期间,对流程节点的状态信息进行维护 在基于流程节点单一设计元素的过程定义模型中,定义了流程节点状态信息来描述节点

22、对应用数据的处理状态。而整个工作流实例的运行状态会通过流程节点的状态表达出来。工作流引擎需要根据流程节点的启动条件和完成条件来对节点的状态进行设置,从而模拟出数据流动的效果。这是工作流引擎的核心功能。 (4) 对应用数据文档的访问控制列表进行维护 流程节点状态信息的变化必须转化为用户对应用数据处理权限的变化。某一流程节点状态信息变为active,实际意味着在此节点定义中指定的处理人获得了对应用数据文档的处理权;状态信息为inactive或done则表示指定的处理人没有处理文档的权限。因此,工作流引擎需要根据流程节点状态信息的变化,对应用数据表单中的用户访问控制列表进行修改,从而实现节点状态信息

23、和用户对文档处理权限的一致变化。 (5) 工作流实例运行期间,给予用户对过程定义实例的动态修改的能力 由于实际业务处理过程往往表现出一定的随意性,因此,工作流引擎应该向用户提供在工作流实例运行期间,对过程定义实例的修改能力,使用户可以根据文档处理的需要,对预定义的流程进行临时性的修改。这种动态修改流程的能力,可以大大加强工作流系统的灵活性,使工作流系统更加满足用户的实际需求。 下图表示了当用户完成应用数据文档的处理,将文档保存提交以后,工作流引擎处理数据的过程:图2-2-3 工作流引擎处理数据流程2. 创建过程定义实例和同应用数据实例绑定在流程节点表单(Event)中定义了数据域Event_P

24、eriod来区分属于过程定义模版库的节点文档和过程定义实例库的节点文档;而Data_Id域用于记录对应应用数据文档的文档Id信息。工作流引擎通过四个步骤完成过程定义实例的创建和同应用数据文档的绑定操作。(1) 流程节点文档复制将过程定义模版库中属于相应过程定义的流程节点文档复制,生成一个新的流程节点文档。此新节点文档的数据域的值同其原型完全相同。关键代码如下: 在数据库中创建新文挡 Set newnode = New NotesDocument( db ) 将模版库中的节点文档node的全部数据域复制到新文档Call node.CopyAllItems( newnode, True ) (2)

25、 置Event_Period域将新建流程节点文档中Event_Period数据域的值由“模版”改为“实例”。关键代码如下:newnode.Event_Period = “实例”(3) 同应用数据实例绑定将应用数据文档如公文文档的文档Id值置入新建流程节点文档的Data_Id域,从而完成绑定操作。关键代码如下: data为应用数据文档 newnode.Data_Id = data.Universalid3. 维护流程节点状态信息a) 原理流程假设某节点node完成了应用数据文档处理,接下来工作流引擎会通过设置流程节点的状态信息来更新工作流实例的运行状态。工作流实例运行状态的更新过程可以用下图所示

26、的原理流程表达:图2-2-4 状态更新原理流程从状态更新的原理流程中可以看出,状态更新过程由节点node完成对应用数据文档的处理触发,之后工作流引擎分三步来修改节点状态:a. 设置节点node状态为done当流程节点处理完成后,状态有active变为done。 b. 激活新流程节点流程节点的启动条件决定了节点何时被激活,何时获得处理权限。在此步骤中,工作流引擎通过构造各个流程节点的启动条件,判断其值来完成节点处理权限的传递。因为流程节点的启动条件可以通过其所有前驱节点的状态信息和流转顺序信息的逻辑组合表达出来,所以在节点node完成处理后,工作流引擎没有必要计算构成过程定义实例的所有节点的启动

27、条件,而只需要计算节点node的所有后继节点的启动条件即可。c. 决定哪些节点的状态有done变为inactive流程节点状态由done转化为inactive的必要性在过程定义模型部分已经作了说明,节点的完成条件规定了这一状态转化的条件。在某节点完成处理后,工作流引擎通过计算其它节点的完成条件,来确定哪些状态为done的节点可以将状态设置为inactive。b) 步骤1的具体实现步骤1的目的是在节点node完成对应用数据文档的处理以后,将节点状态设置为done。关键代码如下: node.Event_Status = “done”c) 后继节点状态设置算法步骤2的目的是设置节点node的后继节点

28、的状态,节点node的类型以及其后继节点的类型决定了步骤2有不同的实现方式。设置node后继节点状态的过程可以用下图表达: 图2-2-5 后继节点状态设置算法从图中可以看出,将设置算法依据节点node的分类分为两种情况:a. 节点node为唯一后继节点或者发点此种情况下,节点node需要遍历其所有的后继节点,计算每个后继续节点的启动条件的取值。b. 节点node为选择性发点当节点node为选择性发点时,根据选择性发点的定义,只有一个后继节点可以获得处理权,因此不需要遍历其所有的后继节点,只需计算其所选定的后继节点的启动条件即可。根据后继节点的类型,计算启动条件分为两种情况(状态设置算法1和状态

29、设置算法2):a. 后继节点为收点或唯一前驱节点当节点node的某个后继节点next为收点或唯一前驱收点时,在遍历next的所有前驱节点时,对每个前驱节点计算判断式(select(prei) CTN next) AND (status(prei) = “done”) 的值,只要有一个为false,则next的启动条件必然不成立,即可以终止遍历循环。判断next的启动条件值的关键代码如下:Dim flag as Booleanflag = false 遍历next的全部前驱节点Forall n In next.Event_Pre_Id Set prenode = db.GetDocumentBy

30、UNID(n)If Not(Select(prenode,next) = true AND prenode.Event_Status(0) = “done”) Then Select()函数用于判断prenode所选定的后继节点列表中是否包括next flag = true Exit ForAll End IfEnd Forall  设置后继节点next的状态If flag = true then 节点next的启动条件不满足,状态不变Else 节点next的启动条件满足,将状态变为active next.Event_Status = “active” next.save True,

31、True,TrueEnd Ifb. 后继节点为选择性收点当节点node的某个后继节点next为选择性收点时,不需要遍历next的所有前驱节点,而只需要判断下式对节点node的取值即可。(select(node) CTN next) AND (status(nodei) = “done”) 关键代码如下:If (Select(node,next) = true AND note.Event_Status(0) = “done”) thenSelect()函数用于判断node所选定的后继节点列表中是否包括next next.Event_Status = “active” next.save Tru

32、e,True,TrueElse next状态保持不变End Ifd) 设置完成条件得到满足的流程节点状态当完成对流程节点node的后继节点状态设置以后,其后继节点状态的变化可能使某些节点的完成条件得到满足,从而完成流程节点状态信息由done向inactive的转化。在判断流程节点的完成条件时,没有必要计算组成过程定义实例的所有流程节点的完成条件,只需要检查节点node的获得了处理权的后继节点的所有前驱节点的完成条件即可。判断完成条件的处理流程如图2-2-6所示。从流程中可以看到,根据next的前驱节点类型,构造next的前驱节点的完成条件有两种方式(完成条件判断算法1和完成条件判断算法2):(

33、2) next的前驱节点为唯一后继节点或者发点关键代码如下:Dim flag as Booleanflag = false 假设prenode为next某个前驱节点,nextnode为prenode的某个后继节点Forall x In prenode.Event_Next_NameSet nextnode=db.getdocumentbyunid(GetIdByName(y)If nextnode.Event_Status(0)<> “active” Thenflag=TrueEnd IfEnd ForallIf flag=True Then prenode的完成条件不满足,保持状

34、态不变Else prenode.Event_Status= “inactive” prenode.save True,True,TrueEnd If(2) next的前驱节点为选择性发点关键代码如下: 假设prenode为next的某个具有选择性发点类型的前驱节点,nextnode为prenode所选定的获得处理权的唯一后继节点Set nextnode=db.getdocumentbyunid(GetIdByName(prenode. SelectEvent(0)If nextnode.Event_Status(0)= “active” thenprenode的完成条件得到满足 prenode

35、.event_system= “inactive” prenode.save True,True,TrueElse prenode的完成条件不成立,状态保持不变End If图2-2-6 流程节点完成条件判断算法e) 设置应用数据文档的访问控制列表公文表单中的Data_Personlist数据域用于存储允许访问列表,只有列在此列表中的用户才具有对文档的处理权限。通过查找过程定义实例中所有状态为active的流程节点,将它们在Event_Personlist数据域中所指定的处理人姓名添加到应用数据文档的Data_Personlist数据域,来完成节点状态和应用数据文档处理权限的同步变化。 关键代码

36、如下: 假设过程定义实例存储在过程定义实例视图view中,data为应用数据文档 Set item=data.getfirstitem(“Data_Personlist”)Set node=view.getfirstdocumentWhile Not(node Is Nothing) 判断与此应用数据文档相绑定的流程节点的状态If (node.Data_Id(0)=data.Universalid) And (node.Event_Status(0)= “active”)Then找到了具有处理权的流程节点,将其指定的处理人加入到应用数据文档的Data_Personlist数据域中 Call i

37、tem.appendtotextlist(node.Event_Personlist(0) data.save True,True,True End If Set node=view.getnextdocument(node)Wend六. 工作流流程定义工具设计流程定义工具的功能可以细分为:(1) 向用户提供定义工作流的操作界面(2) 根据用户的输入自动生成以文本形式表达的工作流抽象描述(3) 将以文本形式表达的工作流抽象描述发送给格式转化工具组件1. 类关系将流程节点抽象为流程节点类(Node),同时,将流程节点定义中的事件属性集合、前驱节点集合、后继节点集合均做对象化处理,由此产生属性信息

38、(Attibute)、前驱节点信息(PreNodes)、后继节点信息(NextNodes)三个类。这三个类同流程节点类构成复合聚合的关系,如下图所示。图2-2-7 复合聚合型的类关系2. 类结构设计(1) 流程节点类(Node)Class Node private String node_id ; private Attibute att ; private PreNodes p ; private NextNodes n ; private String type ; privateString status ; Public String getId(); Public void setI

39、d(String s); Public Attibute getAtt() ; Public PreNodes getP(); Public NextNodes getN(); Public String getStatus(); Public void setStatus(String s); 实际业务处理过程最终会抽象表达为一系列流程节点类实例的集合。对流程节点类的定义完全遵循流程节点的定义。类定义中成员变量和方法的含义在下表中加以说明:表2-2-9 流程节点类设计成员变量含义node_id流程节点的唯一标识符att对流程节点属性信息类(Attribute)的引用p对流程节点前驱节点信息类

40、(PreNodes)的引用n对流程节点后继节点信息类(NextNodes)的引用type流程节点的类型方法作用getId()取得流程节点唯一标识setId()设置流程节点唯一标识getAtt()取得节点状态信息类的指针getP()取得节点前驱节点信息类的指针gerN()取得节点后继节点信息类的指针getType()取得节点类型信息serType()设置流程节点类型信息(2) 属性信息类(Attibute) Class Attibute private String node_name ; private String node_person; private Boolean node_repl

41、y; private Boolean node_sign; private String node_body; Public String getName(); Public void setName(String s); Public String getPerson(); Public void setPerson(String s); Public String getReply(); Public void setReply(Boolean b); Public String getSign(); Public void setSign(Boolean b); Public Strin

42、g getBody(); Public void setBody(Stirng s); 属性信息类用于表达流程节点所代表的实际业务步骤的重要属性信息。属性信息类定义中成员变量和方法的含义在下表中加以说明:表2-2-10 属性信息类设计成员变量含义node_name流程节点标识名称node_person流程步骤的处理人。当节点获得了处理权以后,只有在此变量中列出的人员才能够对应用数据进行处理node_reply节点完成处理以后,是否向工作流发起人发送已办通知,取值为false 或 truenode_sign是否在节点完成处理时,使用手写签名认证功能,取值为false 或 truenode_bod

43、y对节点所代表的实际业务步骤的功能的说明方法作用getXXXX()取得相应属性值setXXXX()设置相应属性值(3) 前驱节点信息类(PreNodes) Class PreNodes ArrayList preList ;Public void addPre();Public Object getPre(String s)Public int getAcount();Public void emptyList(); 前驱节点信息类用于对流程节点的前驱节点进行记录和管理。 类定义中成员变量和方法的含义在下表中加以说明:表2-2-11 前趋节点信息类设计成员变量含义preList节点的前驱节点引

44、用列表数组方法作用addPre()向列表中添加新节点引用getPre()从列表中取得前驱节点引用getAcount()取得前驱节点数目emptyList()清空前驱节点列表(4) 后继节点信息类(NextNodes)Class NextNodes ArrayList nextList;Public void addNext() ; Public Object getNext(String s) ;Public int getAcount();Public void emptyList();后继节点信息类用于对流程节点的后继节点进行记录和管理。 类定义中成员变量和方法的含义在下表中加以说明:表2

45、-2-12 后继节点信息类设计成员变量含义nextList节点的后继节点引用列表方法作用addNext()向列表中添加新后继节点引用getNext()从列表中取得指定后继节点引用getAcount()取得后继节点数目emptyList()清空后继节点列表3. 过程定义工具文本输出格式选择XML作为工作流抽象描述文本的输出格式。定义DTD如下:<!ELEMENT workflow (node+ ) ><! ATTLIST workflow workflowname CDATA #REQUIRED workflowtype (public | private) #REQUIRED

46、 author CDATA #REQUIRED ><!ELEMENT node EMPTY ><!ATTLIST node nodename CDATA #REQUIRED prenodes CDATA #REQUIRED nextnodes CDATA #REQUIRED type CDATA #REQUIRED person CDATA #REQUIRED sign (yes | no) #REQUIRED body CDATA #REQUIRED >在DTD中定义了两种元素:workflow和node。workflow元素用于记录用户所定义的工作流流程的名称

47、、类型、创建人信息。一个workflow可以包括一个或者多个node元素实例。node元素用于记录过程定义中某一流程节点的信息,其属性值对应上节所定义的流程节点类(Node)中所包含的信息。七. 格式转化工具设计 格式转化工具的功能可以细分为: (1) 接收工作流过程定义工具的文本输出流 (2) 对接收到的抽象表达工作流的文本序列进行分析,生成相应的数据库操作指令。 格式转化功能的实现流程可以用下图来表达:图2-2-8 格式转化功能实现流程 通过JAVA语言提供的SAX(扩展标记语言简易应用程序编程接口)25来读取XML格式文本序列中的信息。支持SAX接口的XML解析器对接收到的XML格式工作

48、流抽象描述文本序列进行分析,当它发现了一个元素实例后,随即触发文档处理器中用于处理该种元素实例的代码。不同种类元素实例的处理代码均在文档处理器中定义。元素实例处理代码首先取得元素实例的所有属性信息,之后利用数据库提供的数据库远程操作接口,在数据库中创建相应的数据文档。以流程节点文档的创建过程为例。XML格式工作流抽象描述文本中的node元素实例被XML解析器解析出来,触发文档处理器中针对node元素实例的处理程序。处理程序首先取得node元素实例的参数值,作为在Domino数据库中创建的流程节点文档的数据域的值,随后通过Domino系统为JAVA语言提供的数据库远程操作接口完成流程节点文档的创建。当XML 格式文本序列中所包含的workflow元素实例和多个node元素实例所对应的数据库文档均创建完成以后,格式转化工作即告完成。§ 2.3 公共事务一. 总体结构设计XX工业研究院公共事务模块整体结构如下:公共事务日程安排会议安排办公室设备管理其他日常事务全部会议日程全部日程列表日程草稿列表审批日程列表空闲时间查询空闲日期查询全部会议列表全部会议列表审批会议列表会议记录列表会议纪要列表空闲会议室会议室空时段会议室管理固定资产管理来宾接待图2-3-1 公共事务模块结构图二.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论