1、B 9+XXXX雷宇潮第批/H XX第一章系统总体结构.6第二章系统设计.72.1 电子邮件.7一.表单设计.71.邮件表单(Memo).72.回信表单(Reply).83.转发表单(wForwa rd).84.信件邮递报告表单(NonDelivery Report).9二.视图设计.91.收件箱($Inbox).92.发件箱($S ent).93.草稿箱($Dra fts).104.垃圾箱(Ca rba ge).102.2 公文流转.11一.结构设计.11二.功能设计.11三.表单设计.121.公文表单(Da ta).122.公文附件表单(AddAtta chment).133.公文正文表单
2、(AddDocumentBody).134.工作流信息表单(WorkFlowInfo).145.流程节点表单(event).146.已办公文记录表单(DoneRecord).167.用户角色设置表单(UserRuls).178.搜索表单(S ea rchForm).17四.视图设计.181.工作流名称列表.182.模版事件列表.183.激活事件列表.184.数据表单列表.185.公文草稿列表.186.公文附件列表.187.公文正文列表.188.已办公文列I表.19五.工作流流转控制算法设计.191.功能分析.192.创建过程定义实例和同应用数据实例绑定.203.维护流程节点状态信息.21六.工
3、作流流程定义工具设计.281.类关系.282.类结构设计.293.过程定义工具文本输出格式.33七.格式转化工具设计.332.3 公共事务.35一.总体结构设计.35二.表单设计.351.日程安排表单.352.会议安排表单.363.会议记录表单.374.会议纪要表单.385.空闲时间查询表单.386.空闲日期查询表单.397.会议室管理表单.398.空闲会议室查询表单.399.会议室空时段查询表单.4010.来宾接待表单.40二.视图设计.401.会议安排视图.412.会议草稿视图.413.在审会议视图.414.议记录视图.415.议纪要视图.416.日程安排视图.417.日程草稿视图.418
4、.在审日程视图.419.会议室视图.4110.来宾接待视图.412.4电子 讨论区.42一.讨论区功能模块设计.42二.讨论板块.42三.用户笔名注册.43 2.5信 息服务.45一.信息服务功能模块设计.45二.电子布告栏.45二.公共信息查询.461.员工地址簿.472.个人名片夹.473.列车时刻表.484.航班时刻表.495.邮编及电话区号.506.公司大事记.50 2.6系 统维护.52一.表单设计.521.组织机构设置表单(Depa rtment).522.用户信息注册表单(Userinfo).523.用户职务注册表单(Ca ste_Na me).534.用户信息列表显示表单(Pa
5、 gePersons).535.用户密码设置表单(Pa ssword).54二.视图设计.541.组织机构列表(Depa rtmentList).542.用户列表(Persons).543.职务列表(Ca ste_Na me).544.用户权限歹U表(Limit).54附录1 XX工业研究院MIS系统设计.55 1概述.552需求分析.55一、科技项目管理.55 项目申报(科委项目、工研院项目).55 合同管理.55 项目跟踪.55二、教育培训管理.55 职工教育培训.55 招生管理.55三、科技情报管理.55 科技情报发布.55 下属单位需求.55四、申请书编号管理.55五、用户权限管理.5
6、53功能表格.56科技项目管理X.56教育管理培训J.56科技情报管理Q.564功能模块设计.57一.功能模块.57 科技项目管理.57 教育培训管理.58 科技情报管理.58二.功能说明.58 科技项目管理.58 教育培训管理.59 科技情报信息管理.595数据表格设计.59一.科技项目及合同管理.59 科技项目申请表.59 申请一览表.61 工研院项目执行情况报告书.61二.教育管理培训.62三.科技情报管理.62科技情报发布.62下属单位需求.63附录2网站设计.64 1概述.642功能设计.64一.情况介绍.64二.需求分析.64三.功能模块及实现.65四.数据接口.66五.网站目录结
7、构.67 3数据库设计.67第一章系统总体结构XX工业研究院办公自动化系统基于Lotus Domino/Notes平台开发,系 统的总体结构如下图所示:图1-1 XX工业研究院办公自动化系统总体结构第二章系统设计2.1电子邮件电子邮件模块的结构如下图所示。图2-1-1电子邮件模块一.表单设计1.邮件表单(Memo)表2-1-1邮件表单设计数据域类型说明S endTo文本域收件人地址CopyTo文本域邮件抄送地址BlindCopyTo文本域邮件密送地址WebS ubject文本域邮件主题Text文本域(允许多行)邮件正文ha verea d文本域邮件文件已读标志操作说明发送发送邮件保存为草稿将邮
8、件保存为草稿回复回复邮件转发转发邮件地址簿打开地址簿表单编辑编辑邮件删除删除邮件表2T-2回信表单设计2.回信表单(Reply)数据域类型说明S endTo文本域收件人地址CopyTo文本域邮件抄送地址BlindCopyTo文本域邮件密送地址WebS ubject文本域邮件主题Text文本域(允许多行)邮件正文ha verea d文本域邮件文件已读标志操作说明发送发送邮件保存为草稿将邮件保存为草稿回复回复邮件转发转发邮件地址簿打开地址簿表单编辑编辑邮件删除删除邮件表2-1-3转发表单设计3.转发表单(wForward)数据域类型说明S endTo文本域收件人地址CopyTo文本域邮件抄送地址B
9、lindCopyTo文本域邮件密送地址WebS ubject文本域邮件主题Text文本域(允许多行)邮件正文ha verea d文本域邮件文件已读标志操作说明发送发送邮件保存为草稿将邮件保存为草稿回复回复邮件转发转发邮件地址簿打开地址簿表单编辑编辑邮件删除删除邮件4.信件邮递报告表单(NonDelivery Report)表2-1-4信件邮递报告表单设计数据域类型说明Origina lS ubject文本域被邮递的信件名称IntendedRecipient文本域被邮递信件的收件人地址Fa ilureRea son文本域邮件为邮递到目的地原因S endTo文本域被邮递邮件文件中指定的收件地址Co
10、py To文本域被邮递邮件文件中指定的抄送地址BlindCopyTo文本域被邮递邮件文件中指定的密送地址S ubject文本域被邮递邮件文件的主题Body文本域(允许多行)被邮递邮件文件的内容ha verea d文本域邮件文件已读标志操作说明删除删除邮件二.视图设计1.收件箱($lnbox)收件箱通过文件夹实现,所有接收到邮件文件均由系统自动放入收件箱中。2.发件箱($Sent)用于所发送的邮件均自动保存在发件箱中。文档选择条件为:S ELECT DeliveredDa te=&PostedDa te!=&!(IsMember(S;ExcludeFromView)&Viewta g!=Dele
11、te3.草稿箱($Drafts)所有保存为草稿的邮件均显示在草稿箱中。文档选择条件为:S ELECT PostedDa te=&$Messa geType=&IsNotMember(D;ExcludeFromView)&IS MAILS TATIONERY!=1&Viewta g=Istra sh4.垃圾箱(Carbage)所有被删除的邮件均保存在此视图中。在此视图中再次删除的话,则邮件文 件被真正删除。文档选择条件为:S ELECT(FORM=Memo|form=Reply|Form二wForwa rd”)&Deleted=true”2.2公文流转一.结构设计XX工业研究院OA系统公文流转模
12、块总体结构如下图所示。图2-2-1公文流转模块结构设计二.功能设计公文流转模块提供的具体功能如下图所示:图2-2-2公文流转模块功能设计三.表单设计1.公文表单(Data)公文表单用于记录公文的相关信息。具体设计如下:表2-2-1公文表单设计数据域类型说明GWLX列表框公文类型DJBM列表框公文的登记部门DJS J文本域公文的登记时间S ubject文本域公文标题NGR文本域公文起草人姓名GWHJ列表框公文缓急信息列表ZTCB文本域公文的主题词ZBDW文本域主办单位名称ZCDW文本域主送单位名称CS DW文本域抄送单位名称CBDW文本域抄报单位名称Info文本域(允许多行)公文正文内容Da t
13、a _Number文本域公文的编号S electWorkFlow列表框显示过程定义模版列表PersonAnswer文本域显示处理人的批复意见Da ta _Personlist文本域允许处理本公文的用户列表S ta rt文本域公文是否为首次提交Da ta _Current_Editor文本域记录当前编辑公文的用户姓名CuiBa n文本域是否存在公文催办通知操作说明提交流转提交公文进入流转过程暂存将公文保存为草稿签收处理人打开公文进行编辑编辑公文作者编辑公文删除删除公文催办发出公文催办通知说明:(1)S ubject、Info等用于记录公文的内容信息,公文的内容信息包括公文主 题、公文编号、公文内
14、容、公文密级、公文缓急等。(2)NGR、DJS J分别记录公文文档的创建人和创建时间,工作流的管理与监 控功能会用到这些信息。(3)S electWorkFlow是列表框,用于显示所有可供使用的过程定义模版。在 公文的创建阶段,用户从列表中选择要使用的流程;在公文进入流转过程以后,由工作流引擎根据所选择的流程,自动生成过程定义实例,之后实现公文文档同 过程定义实例的绑定操作。(4)Da ta _Personlist域用于记录所有对本文档具有处理权限的用户的用户名 列表,只有在此列表中列出的用户才能够对公文进行处理。其取值由工作流引擎 自动填写。2.公文附件表单(AddAttachment)公文
15、附件表单用于存储某一公文所包含的附件文件,一个公文可以包含多个 附件,每个附件对应一个公文附件表单。表2-2-2公文附代二表单设计数据域类型说明Atta chment_Info文本域对附件的简要说明File Uploa d控件上载文件控件Pa rentld文本域此附件表单所从属的公文表单IDAtta chment_N a me文本域附件文件名Atta chment_S ize文本域附件文件大小操作说明保存附件保存公文附件表单删除附件删除公文附件表单关闭窗口关闭公文附件上载窗口3.公文正文表单(AddDocumentBody)公文正文表单用于存储某一公文所包含的正文文件,一个公文可以包含多个 正
16、文文件,每个正文文件对应一个公文正文表单。表2-2-3公文正文表单设计数据域类型说明Atta chment_Info文本域对正文文件的简要说明File Uploa d控件上载文件控件Pa rentld文本域此公文正文表单所从属的公文表单IDAtta chment_N a me文本域附件文件名Atta chment_S ize文本域附件文件大小操作说明保存正文保存公文正文表单删除正文删除公文正文表单关闭窗口关闭公文正文上载窗口4.工作流信息表单(WorkFlowInfo)工作流信息表单用于存储工作流程模版的基本属性信息。在流程信息表单中 定义的重要数据域如下:表2-2-4工作流信息表单数据域类型
17、说明Workflow_Na me文本域流程名称Workflow_Type列表框流程类型,可选值为“预定义流程”和“自定义流程”Workflow_Author文木域此流程创建人姓名Workflow_Crea ted文本域此流程创建时间Workflow_Body文本域此流程功能简要说明操作说明修改编辑工作流信息表单保存保存工作流信息表单删除删除工作流信息表单5.流程节点表单(event)流程节点表单用于记录过程定义中流程节点所包含的信息。过程定义中的每 个流程节点都与Domino数据库中的一个流程节点文档对应。表2-2-5流程节点表单设计数据域类型说明Workflow_Id文本域节点所从属的工作流
18、信息文档IdDa ta _Id文本域与此过程定义所绑定的应用数据文档IdEvent_Id文本域流程节点文档Id,在节点文档生 成后自动填写Event_Na me文本域流程节点功能描述名称,如初审、批阅等。Event_Pre_Na mes列表框此流程节点的全部前趋节点列表Event_Personlist文本域此节点允许处理人名称Event_Personlist_Type列表域指定处理人类型:“个人”、”交 色”S XQM复选框是否使用手写签名功能Event_Body文本框(允许多值)此节点功能简要说明Event_Pre_N a me文本域(允许多值)以节点名称表示的前驱节点列表Event_Pre
19、_Id文本域(允许多值)以节点Id表示的前驱节点列表Evemt_Next_Na me文本域(允许多值)以节点名称表示的后继节点列表Event_Next_Id文本域(允许多值)以节点Id表示的后继节点列表Event_S ta tus文本域流程节点状态Event_Period文本域流程节点文档状态Event_Period文本域用于区分模版和实例,可取值为“模版”、“实例”S electPre复选框此节点是否为选择性收点S electNext复选框此节点是否为选择性发点S electNode文本域如果此节点是选择性发点,则此域 用于记录所选定的后继节点名称说明:操作说明修改编辑流程节点表单保存保存流
20、程节点表单删除删除流程节点表单(1)流程节点定义中的Att(事件属性集合)通过数据域Workflow_Id Da ta _Id、Event_Id、Event_Na me、Evnent_Personlist、S XQM 等表达 出来。Event_Pre_Na me Event_Pred为允许多值的文本域,以节点名称和节点文档Id 两种方式表达此节点的前驱节点集合Pre;Event_Next_Na me Event_Next_Id则 以节点名称和节点文档Id两种方式表达此节点的后继节点集合Nexto Event_S ta tus表达节点状态信息。(2)Workflowd数据域用于标识此流程节点文档
21、所从属的工作流程。属于 同一工作流程的流程节点文档具有相同的Workflowjd o(3)Da ta _Id数据域用于实现应用数据实例同过程定义实例的一一对应。Da tad的值为公文表单的文档实例的文档Id,由工作流管理系统自动填写。组 成一个过程定义实例的所有流程节点文档具有相同的Da ta _Id值。(4)Event_S ta tus标识流程节点的状态信息,由工作流引擎自动设置。(5)构成过程定义的流程节点文档在工作流进入运行期之前,存储在过程定 义模版库中;在运行期,则存储到过程定义实例库。因此,在流程节点表单中使 用Event_Period数据域来标识过程定义的状态。属于同一过程定义的
22、节点文档的 Event_Period域的值是相同的。其可能取值为“模版”和“实例”。(6)S electPre数据域用于标识此节点是否为选择性收点。在工作流实例运行 期间,工作流引擎需要根据此数据域的取值选择不同的启动条件构造算法。(7)S electNext数据域用于表示此节点是否为选择性发点。在工作流实例运 行期间,工作流引擎需要根据此数据域的取值选择不同的完成条件构造算法。节 点所选定的后继节点的名称保存在S electNode数据域中。6.已办公文记录表单(DoneRecord)已办公文记录表单用于记录用户已经处理完成的公文的相关信息,以备日后 查阅。表2-2-6已办公文记录表单设计数
23、据域类型说明S ubject文本域公文标题NGR文本域记录公文的拟稿人姓名S DS J文本域收到此公文的时间BJS J文本域完成处理的时间PYYJ文本域用户的批阅意见操作说明删除删除已办公文记录表单7.用户角色设置表单(UserRuls)用户角色设置表单用于记录用户同其职务的对应关系。表2-2-7用户角色设置表单设计数据域类型说明RulNa me文本域角色名称S endTo文本域人员名称ZhiNeng文本域角色职能说明操作说明修改编辑用户角色设置表单保存保存用户角色设置表单删除删除用户角色设置表单8.搜索表单(SearchForm)搜索表单用于输入文档检索条件。表2-2-8搜索表单设计数据域类
24、型说明S ea rch_ViewNa me列表框选择要检索的视图S ea rch_Info文本域人员名称S ea rch_Type文本域角色职能说明HTML文本域文档检索结果操作说明检索文档进行检索操作四.视图设计1.工作流名称列表用于显示数据库中所有工作流信息文档。文档选择条件:S ELECT form=WorkFlowInfo2.模版事件列表用于显示所有具有“模版”属性的流程节点文档。文档选择条件如下:S ELECT(Form=流程节点”)&(Event_Period二模版”)3.激活事件列表用于显示所有具有“激活”属性的流程节点文档。文档选择条件如下:S ELECT(Form=”流程节点
25、”)&(Event_Period=激活”)4.数据表单列表用于显示所有公文文档。文档选择条件如下:S ELECT form=数据表单”&S ta rt=O5.公文草稿列表用于显示所有保存为草稿的公文文档。文档选择条件如下:S ELECT form=数据表单”&S ta rts 16.公文附件列表用于显示所有公文附件文档。文档选择条件如下:S ELECT form=Add Atta chment7.公文正文列表用于显示所有公文正文文档。文档选择条件如下:S ELECT form=AddDocumentBody8.已办公文列表用于显示所有已办公文记录文档。文档选择条件如下:S ELECT form
26、=DoneRecord五.工作流流转控制算法设计1.功能分析将工作流引擎的功能细化为以下几个子功能:(1)创建过程定义实例在工作流进入运行期以前,过程定义以模版的形式保存在过程定义模版库 中。工作流进入运行期,工作流引擎必须根据用户所选定的过程定义模版自动 生成过程定义实例,并存入负载最低的过程定义实例子库。(2)完成应用数据实例和过程定义实例的绑定操作在过程定义实例生成以后,工作流引擎必须将其同对应的应用数据实例绑 定,实现一一对应,从而完成数据单元实例的组建。(3)在工作流实例运行期间,对流程节点的状态信息进行维护在基于流程节点单一设计元素的过程定义模型中,定义了流程节点状态信 息来描述节
27、点对应用数据的处理状态。而整个工作流实例的运行状态会通过流 程节点的状态表达出来。工作流引擎需要根据流程节点的启动条件和完成条件 来对节点的状态进行设置,从而模拟出数据流动的效果。这是工作流引擎的核 心功能。(4)对应用数据文档的访问控制列表进行维护流程节点状态信息的变化必须转化为用户对应用数据处理权限的变化。某 一流程节点状态信息变为a ctive,实际意味着在此节点定义中指定的处理人获得 了对应用数据文档的处理权;状态信息为ina ctive或done则表示指定的处理人没 有处理文档的权限。因此,工作流引擎需要根据流程节点状态信息的变化,对 应用数据表单中的用户访问控制列表进行修改,从而实
28、现节点状态信息和用户 对文档处理权限的一致变化。(5)工作流实例运行期间,给予用户对过程定义实例的动态修改的能力由于实际业务处理过程往往表现出一定的随意性,因此,工作流引擎应该向 用户提供在工作流实例运行期间,对过程定义实例的修改能力,使用户可以根据 文档处理的需要,对预定义的流程进行临时性的修改。这种动态修改流程的能力,可以大大加强工作流系统的灵活性,使工作流系统更加满足用户的实际需求。下图表示了当用户完成应用数据文档的处理,将文档保存提交以后,工作流 引擎处理数据的过程:图2-2-3工作流引擎处理数据流程2.创建过程定义实例和同应用数据实例绑定在流程节点表单(Event)中定义了数据域Ev
29、ent_Period来区分属于过程定 义模版库的节点文档和过程定义实例库的节点文档;而Da ta-Id域用于记录对应 应用数据文档的文档Id信息。工作流引擎通过四个步骤完成过程定义实例的创 建和同应用数据文档的绑定操作。(1)流程节点文档复制将过程定义模版库中属于相应过程定义的流程节点文档复制,生成一个新的 流程节点文档。此新节点文档的数据域的值同其原型完全相同。关键代码如下:4在数据库中创建新文挡S et newnode=New NotesDocument(db)将模版库中的节点文档node的全部数据域复制到新文档Ca ll node.CopyAllltems(newnode,True)(2
30、)置 Event_Period 域将新建流程节点文档中EvenjPeriod数据域的值由“模版”改为“实例”。关键代码如下:newnode.Event_Period=实例(3)同应用数据实例绑定将应用数据文档如公文文档的文档Id值置入新建流程节点文档的Da ta jd 域,从而完成绑定操作。关键代码如下:4 da ta为应用数据文档newnode.Da ta _Id=da ta.Universa lid3.维护流程节点状态信息a)原理流程假设某节点node完成了应用数据文档处理,接下来工作流引擎会通过设置 流程节点的状态信息来更新工作流实例的运行状态。工作流实例运行状态的更新 过程可以用下图所
31、示的原理流程表达:图2-2-4状态更新原理流程从状态更新的原理流程中可以看出,状态更新过程由节点node完成对应用 数据文档的处理触发,之后工作流引擎分三步来修改节点状态:a.设置节点node状态为done当流程节点处理完成后,状态有a ctive变为done。b.激活新流程节点流程节点的启动条件决定了节点何时被激活,何时获得处理权限。在此步骤 中,工作流引擎通过构造各个流程节点的启动条件,判断其值来完成节点处理权 限的传递。因为流程节点的启动条件可以通过其所有前驱节点的状态信息和流转 顺序信息的逻辑组合表达出来,所以在节点node完成处理后,工作流引擎没有 必要计算构成过程定义实例的所有节点
32、的启动条件,而只需要计算节点node的 所有后继节点的启动条件即可。c.决定哪些节点的状态有done变为ina ctive流程节点状态由done转化为ina ctive的必要性在过程定义模型部分已经作 了说明,节点的完成条件规定了这一状态转化的条件。在某节点完成处理后,工 作流引擎通过计算其它节点的完成条件,来确定哪些状态为done的节点可以将 状态设置为ina ctiveob)步骤1的具体实现步骤1的目的是在节点node完成对应用数据文档的处理以后,将节点状态 设置为done。关键代码如下:node.Event_S ta tus=donec)后继节点状态设置算法步骤2的目的是设置节点node
33、的后继节点的状态,节点node的类型以及其 后继节点的类型决定了步骤2有不同的实现方式。设置node后继节点状态的过 程可以用下图表达:图2-2-5后继节点状态设置算法从图中可以看出,将设置算法依据节点node的分类分为两种情况:a.节点node为唯一后继节点或者发点此种情况下,节点node需要遍历其所有的后继节点,计算每个后继续节点 的启动条件的取值。b.节点node为选择性发点当节点node为选择性发点时,根据选择性发点的定义,只有一个后继节点 可以获得处理权,因此不需要遍历其所有的后继节点,只需计算其所选定的后继 节点的启动条件即可。根据后继节点的类型,计算启动条件分为两种情况(状态设置
34、算法1和状态 设置算法2):a.后继节点为收点或唯一前驱节点当节点node的某个后继节点next为收点或唯一前驱收点时,在遍历next 的所有前驱节点时,对每个前驱节点计算判断式(select(prei)CTN next)AND(sta tus(prei)=done)的值,只要有一个为fa lse,则next的启动条件必然不成立,即可以终止遍历循 环。判断next的启动条件值的关键代码如下:Dim fla g a s Boolea nfla g=fa lse4遍历next的全部前驱节点Fora ll n In next.Event_Pre_IdS et prenode=db.GetDocume
35、ntByUNID(n)If Not(S elect(prenode,next)=true AND prenode.Event S ta tus(O)=done)ThenS elect。函数用于判断prenode所选定的后继节点列表中是否包括 nextfla g=trueExit For AllEnd IfEnd Fora ll设置后继节点next的状态If fla g=true then节点next的启动条件不满足,状态不变Else节点next的启动条件满足,将状态变为a ctivenext.E vent_S ta tus=a ctive”next.sa ve True,True,TrueEn
36、d Ifb.后继节点为选择性收点当节点node的某个后继节点next为选择性收点时,不需要遍历next的所有 前驱节点,而只需要判断下式对节点node的取值即可。(select(node)CTN next)AND(sta tus(nodei)=done)关键代码如下:Tf(S elect(node,next)=true AND note.Event S ta tus(O)=done)then,S elect。函数用于判断node所选定的后继节点列表中是否包括next next.EventS ta tus=a ctive”next.sa ve True,True,TrueElsenext状态保持
37、不变End Ifd)设置完成条件得到满足的流程节点状态当完成对流程节点node的后继节点状态设置以后,其后继节点状态的变化 可能使某些节点的完成条件得到满足,从而完成流程节点状态信息由done向 ina ctive的转化。在判断流程节点的完成条件时,没有必要计算组成过程定义实 例的所有流程节点的完成条件,只需要检查节点node的获得了处理权的后继节 点的所有前驱节点的完成条件即可。判断完成条件的处理流程如图2-2-6所示。从流程中可以看到,根据next的前驱节点类型,构造next的前驱节点的完 成条件有两种方式(完成条件判断算法1和完成条件判断算法2):(2)next的前驱节点为唯一后继节点或
38、者发点关键代码如下:Dim fla g a s Boolea nfla g=fa lse假设prenode为next某个前驱节点,nextnode为prenode的某个后继节点Fora ll x In prenode.Event_Next_Na meS et nextnode=db.getdocumentbyunid(GetIdByNa me(y)If nextnode.Event_S ta tus(0)o tta ctive Then fla g=TrueEnd IfEnd Fora llIf fla g=True Thenprenode的完成条件不满足,保持状态不变Elseprenode.
39、Event_S ta tus=ina ctive”prenode.sa ve True,True,TrueEnd If(2)next的前驱节点为选择性发点关键代码如下:假设prenode为next的某个具有选择性发点类型的前驱节点,nextnode为 prenode所选定的获得处理权的唯一后继节点S et nextnode=db.getdocumentbyunid(GetIdByNa me(prenode.S electEvent(O)If nextnode.Event_S ta tus(0)=a ctive”then,prenode的完成条件得到满足prenode.event_system=
40、ina ctive”prenode.sa ve True,True,TrueElsecprenode的完成条件不成立,状态保持不变End If图2-2-6流程节点完成条件判断算法e)设置应用数据文档的访问控制列表公文表单中的Da ta _Personlist数据域用于存储允许访问列表,只有列在此列 表中的用户才具有对文档的处理权限。通过查找过程定义实例中所有状态为 a ctive的流程节点,将它们在Event_Personlist数据域中所指定的处理人姓名添加 到应用数据文档的Da ta _Personlist数据域,来完成节点状态和应用数据文档处理 权限的同步变化。关键代码如下:假设过程定义
41、实例存储在过程定义实例视图view中,da ta为应用数据文档S et item=da ta.getfirstitem(Da ta _Personlist)S et node=view.getfirstdocumentWhile Not(node Is Nothing)判断与此应用数据文档相绑定的流程节点的状态If(node.Da ta _Id(0)=da ta.Universa lid)And(node.Event_S ta tus(0)=“a ctive)Then找到了具有处理权的流程节点,将其指定的处理人加入到应用数据文 档的Da ta _Personlist数据域中Ca ll item
42、.a ppendtotextlist(node.Event_Personlist(0)da ta.sa ve True,True,True End IfS et node=view.getnextdocument(node)Wend六.工作流流程定义工具设计流程定义工具的功能可以细分为:(1)向用户提供定义工作流的操作界面(2)根据用户的输入自动生成以文本形式表达的工作流抽象描述(3)将以文本形式表达的工作流抽象描述发送给格式转化工具组件 1.类关系将流程节点抽象为流程节点类(Node),同时,将流程节点定义中的事件属 性集合、前驱节点集合、后继节点集合均做对象化处理,由此产生属性信息(Att
43、ibute)前驱节点信息(PreNodes)、后继节点信息(NextNodes)三个类。这三个类同流程节点类构成复合聚合的关系,如下图所示。图2-2-7复合聚合型的类关系2.类结构设计(1)流程节点类(Node)Cla ss Node(priva te S tring node_id;priva te Attibute a tt;priva te PreNodes p;priva te NextNodes n;priva te S tring type;priva teS tring sta tus;Public S tring getld();Public void setId(S trin
44、g s);Public Attibute getAtt();Public PreNodes getP();Public NextNodes getN();Public S tring getS ta tus();Public void setS ta tus(S tring s);实际业务处理过程最终会抽象表达为一系列流程节点类实例的集合。对流程 节点类的定义完全遵循流程节点的定义。类定义中成员变量和方法的含义在下表中加以说明:表2-2-9流程节点类设计成员变量含义node_id流程节点的唯一标识符a tt对流程节点属性信息类(Attribute)的引用P对流程节点前驱节点信息类(PreNod
45、es)的引用n对流程节点后继节点信息类(NextNodes)的引用type流程节点的类型方法作用getld()取得流程节点唯一标识setld()设置流程节点唯一标识getAtt()取得节点状态信息类的指针getP()取得节点前驱节点信息类的指针gerN()取得节点后继节点信息类的指针getType()取得节点类型信息serType()设置流程节点类型信息(2)属性信息类(Attibute)Cla ss Attibutepriva te S tring node_na me;priva te S tring node_person;priva te Boolea n node_reply;pri
46、va te Boolea n node_sign;priva te S tring node_body;Public S tring getNa me();Public void setNa me(S tring s);Public S tring getPerson();Public void setPerson(S tring s);Public S tring getReply();Public void setReply(Boolea n b);Public S tring getS ign();Public void setS ign(Boolea n b);Public S tri
47、ng getBodyO;Public void setBody(S tirng s);属性信息类用于表达流程节点所代表的实际业务步骤的重要属性信息。属性信息类定义中成员变量和方法的含义在下表中加以说明:表2-2-10属性信息类设计成员变量含义node_na me流程节点标识名称node_person流程步骤的处理人。当节点获得了处理权以后,只有在此变量中列出的人员才能够对应用数据 进行处理node_reply节点完成处理以后,是否向工作流发起人发送 已办通知,取值为fa lse或truenode_sign是否在节点完成处理时,使用手写签名认证功 能,取值为fa lse或truenode_bod
48、y对节点所代表的实际业务步骤的功能的说明方法作用getXXXX()取得相应属性值setXXXX()设置相应属性值(3)前驱节点信息类(PreNodes)Cla ss PreNodesArra yList preList;Public void a ddPre();Public Object getPre(S tring s)Public int getAcount();Public void emptyList();前驱节点信息类用于对流程节点的前驱节点进行记录和管理。类定义中成员变量和方法的含义在下表中加以说明:表2-2-11前趋节点信息类设计成员变量含义preList节点的前驱节点引用列表
49、数组方法作用a ddPre()向列表中添加新节点引用getPre()从列表中取得前驱节点引用getAcount()取得前驱节点数目emptyList()清空前驱节点列表(4)后继节点信息类(NextNodes)Cla ss NextNodes(Arra yList nextList;Public void a ddNext();Public Object getNext(S tring s);Public int getAcount();Public void emptyList();后继节点信息类用于对流程节点的后继节点进行记录和管理。类定义中成员变量和方法的含义在下表中加以说明:表2-2-
50、12后继节点信息类设计成员变量含义nextList节点的后继节点引用列表方法作用a ddNext()向列表中添加新后继节点引用getNext()从列表中取得指定后继节点引用getAcount()取得后继节点数目emptyList()清空后继节点列表3.过程定义工具文本输出格式选择XML作为工作流抽象描述文本的输出格式。定义DTD如下:在DTD中定义了两种元素:workflow和node。workflow元素用于记录用 户所定义的工作流流程的名称、类型、创建人信息。一个workflow可以包括一 个或者多个node元素实例。node元素用于记录过程定义中某一流程节点的信息,其属性值对应上节所定义
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100