毕业,论文初稿出土!!欢迎大家提意见!!!
基于web的工作流系统的设计与实现
摘要
工作流是指整个或部分业务流程在计算机支持下的全自动或半自动化。在计算机网络环境下,工作任务在多个人或单位之间的流转实际上将表现为信息或数据在多个人之间的传送。工作流管理系统(WfMS )就是根据既定的规则集,部分或全部实现一个业务流程的自动化的软件系统。
论文以工作流管理系统的开发为基础,主要阐述四个方面的内容。第一部分介绍了工作流系统的相关概念与开发背景;第二部分介绍了实际开发过程中使用到的关键技术;第三部分详细介绍了项目需求及工作流的设计实现过程,包括工作流的建模、驱动和监控;最后一部分在总结了系统开发心得的同时,提出了目前系统存在的不足和有待改进的地方。
关键词:工作流管理系统,工作流建模,工作流引擎,工作流监控
Design and Implementation of Web Based Workflow System
Abstract
Workflow is a full automation or semi-automation on business process, which is supported by the computer technology. In the distributed environment , tasks transferred among different persons and departments are information or data passed among participants according to the defined set of rules. Workflow Management System (WfMS) is automatic software that realizes full automation or semi-automation on business flow according to rule collection defined.
This dissertation is based on the development of a practical Wfms. The main content consists of four parts. The first part introduces the background of the project and basic concepts in WfMS. The second part focuses on the key technologies used in the development. The third part expounds workflow system requirement and main implementation methods(workflow modeling, workflow driving, workflow monitoring).The last part points out some shortage of the current system. At the same time, it summarizes some experience of software development.
Key words: WfMS, workflow modeling, workflow engine, workflow monitoring
目录
f.创建流程模板(CreatStandardFlow)... 47
1.前言
随着社会的发展和信息技术的进步,全球信息化的趋势越来越明显。任何一家大型企业不再是局限于某一个地区,都在自觉不自觉地参与到全球化的市场竞争中。在这个全球化的竞争过程中,企业对信息的掌握程度、信息获取是否及时、信息能否得到充分的利用、对信息的反应是否敏感准确,已越来越成为衡量一个企业市场竞争能力的重要因素。
1.1工作流管理系统简介
工作流管理联盟给出的工作流定义是:工作流是指整个或部分经营流程在计算机支持下的全自动或半自动化。在实际情况中可以更广泛地把由计算机软件系统(工作流管理系统)控制其执行的流程都称为工作流。它所要解决的主要问题是使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的流程自动进行,从而实现某个预期的业务目标,或者是促使此目标的实现。
一个工作流包括一组行为及它们的相互顺序关系,还包括流程及行为的启动和终止条件,以及对每个行为的描述。为了实现对业务流程的工作流管理,需要有相应的软件系统的支撑,此种软件系统我们就称之为工作流管理系统(Workflow Management System,以下简称WfMS)。通常我们所说的工作流管理系统是指运行在一个或多个工作流引擎(用于定义、实现和管理)上的一套软件系统,它与工作流执行者(人、应用)交互,推进工作流实例的执行,并监控工作流的运行状态。
一个完整的工作流至少应包含三个部分,即工作流建模、工作流引擎、工作流监控。工作流的核心是可以由计算机识别的流程模型,工作流建模是给用户提供一个建立流程模型的工具,最好是可视化的工具。在工作流建模中涉及到几个概念,流程模板、流程实例、节点、节点实例、表单,下面列出对其解释。
1、流程模板
流程模板定义了一个流程必要的元素,如流程的名称、表单、节点、使用权限等信息,用户在使用流程时,只要根据已有的流程模板实例化相应的流程实例,就可以启动一个流程。流程模板是企业根据自己的需要定义的。在进行流程定义的时候,除了需要定义流程本身的一些必要属性外,还需要利用各种组成元素来描述一个流程的具体执行情况。
2、流程实例
流程实例是在运行时由流程模板创建,流程实例的创建是执行一个流程开始第一步,创建流程实例包括创建一些相关流程状态数据和工作流管理数据,如分配该实例的唯一ID号,取得第一个节点即开始节点的相关信息及激活条件等。流程实例在运行时有初始态、运行态、挂起态、完成态共四种状态。流程实例创建时还没有满足流程启动执行的条件,处于初始态。一个流程实例的运行是通过启动并激活流程的第一个节点而开始整个流程的。整个流程的流转过程体现在流程实例的状态转换上。
3、节点
节点即通常所说的流程中的办理步骤,它是构成工作流的基本元素,节点主要描述了一个工作流程是由哪些办理步骤构成,一个流程是由若干个节点和它们之间的连线组成。另外它还指定了处理是否被工作流管理系统自动开始和结束,以及工作的优先级别等信息。节点定义中需要指定事件的执行者、事件完成的功能及与事件相关的各类信息。当一个节点有多个出口,或多个节点的出口连接到一个节点时,就涉及到节点的出口控制和入口控制。
4、节点实例
节点实例是在流程运行过程中由流程实例启动并执行时开始创建的,节点实例由节点模板实例化而来,创建时给节点实例分配一个唯一的ID号,并将节点模板的相关数据赋予节点实例。节点实例同样具有节点模板的各种状态,随着流程的流转修改各个节点状态。启动流程时第一个节点实例由初使态变为运行态,流程结束时最后一个节点实例由运行态变为完成态,结束节点实例完成时将流程实例置于完成态,流程运行结束。节点实例是流程使用者真正操作的地方,使用人员完成自己所在节点的工作后,由工作流引擎驱动流向下一节点实例,同样,一个节点实例可能存在多个前驱实例或多个后继实例,工作流引擎如何来进行节点实例的出口控制和入口控制将在后面的章节进行描述。
5、表单
流程流转过程中需要参与人员填写的表单,它是为了完成某一项业务流程而定的,是几个人在网络上合作完成同一件事情的体现,在流程定义时可以为每一个表单项指定相应的读写权限。
工作流引擎是根据模型来驱动事项的流转,是工作流的主要控制部分,由它来决定一个节点流转完后,如何流转到下一个节点,在工作流引擎中涉及到以下概念。
1、催办
在流程实例流转到某一个节点时,节点处理人员未能及时进行处理,则由系统或流程参与人员督促进行办理。催办的方式一般有两种,一种是系统催办,在流程节点定义时,定义好每个节点的办理时限,超过时间未办则系统自动发送短消息进行催办;另一种是人工催办,流程监控人员发现流程在某一处停滞不前时进行催办。
2、委托
委托是流程流转过程中的一种工作转交机制,某个节点的办理人若由于某种原因暂时无法处理其工作,可将该节点的工作委托给其他人办理,被委托人就临时具有了该节点的处理权限。
3、回退
当参与流程人员发现前面节点处理不当时,可以将节点向上返回,由前面处理人重新审核,以纠正错误。
4、重新发起
某个流程存在严重不当的地方时,或有多个节点发生错误时,发起者有权对该流程重新发起,重新发起后流程所有节点都回到初始态。
工作流的实际流转状况可以通过流程监控来查看。工作流模型必须留有进行监控的接口。进行监控一般有两种方式,一种是图形化监控,一种是表单监控。图形化监控以将流程的流转状况以图形的形式给出,使用户可以很直观地看到当前流转的进度,表单监控可以详细列出流程的处理步骤及每一步的信息。
工作流管理系统三部分之间的关系可用下图表示:

图1.1 工作流原理图
1.2工作流技术的发展现状
国内工作流管理系统在短短10多年时间内,已经从无到有,有了长足的发展,特别是办公自动化、电子政务热的兴起,更有利的推动了对工作流管理系统的研究。工作流管理系统的一个重要应用即办公自动化,从80年代中期起步的第一代办公系统以个人电脑、办公套件为主要标志,实现了数据统计和文档写作电子化,完成了办公信息载体从原始纸介质方式向电子比特方式的飞跃。从20世纪90年代中期开始,随着以Lotus Notes为代表的工作流群件技术的面世,以及网络通讯技术的长足发展,办公自动化系统发生了第一次革命性演进,第二代办公自动化系统以网络技术和协同工作技术为主要特征,实现了工作流程自动化,以及收发文从传统的手工方式向工作流自动化方式的飞跃。随着21世纪知识经济时代的来临,知识成为经济增长和社会发展及企业成长的关键性资源,最大限度地掌握和利用知识越来越成为企业与机构信息化建设的核心。对知识前所未有的重视,使以工作流为中心的办公自动化系统开始提升到以知识管理为核心的第三代办公自动化系统。以公文流转为例,如果说第二代办公自动化,实现了收发文和档案管理一体化的自动处理,那么第三代办公自动化,在此基础上更为文件处理的每一个环节,提供了该步骤所需要的相关知识,包括在线的专家、文件背景资料及企业其他的有关信息,确保每一个使用者,都能够随时随地根据需要,向专家学习、向企业现有知识学习,使员工在办公自动化系统中的地位从被动向主动转变,从而在提升每个员工创造能力的过程中,大大提高企业与机构的整体创新和应变能力。
但是,在我国由于企业内部的实际情况复杂多变,各种制度、法规多不健全,很多事情是靠人来协调、沟通完成的,这种国情给企业信息化带来了极大的不便,使得现行的成熟的工作流技术在实际中很难普及开,多数企业的信息化建设流于形式,没有能真正提高企业的办事效率,反而浪费了大量的物力、财力来维持这些系统的运行。在这篇文章里,我们将结合西安高压开关厂的实际情况,重点阐述如何适应企业现状,开发出实用、有效的工作流体系。
1.3课题背景
西安高压开关厂是一家以生产、制造业为主的大型国有企业。随着市场经济的不断发展,企业对信息化的以来日益增强,为适应社会主义市场经济的要求,转换企业经营机制,建立现代企业制度,提高企业运行效率和经济效益,由该厂信息部门与西安建筑科技大学合作开发了本次协同办公系统。本项目以实用、可靠、安全、灵活为原则,旨在为西开公司提供一个协同的、集成的办公环境,使所有的办公人员都在同一个且个性化的信息门户中一起工作,摆脱时间和地域的限制,实现协同工作。办公系统以岗位角色为核心,允许客户根据本单位的实际管理需要,灵活进行各类角色的定义,赋权工作。这种授权机制体现了现代管理中的定岗定员、对岗不对人的管理思想。
在后面的章节中,我们将从项目实践用到的技术、工作流需求、实现过程三个方面进行讲解。
2. 基于web工作流系统的关键技术
2.1面向对象技术
所谓面向对象(Object-Oriented),就是一种使用对象(它将属性与操作封装为一体)、消息传送、类、继承、多态和动态绑定来开发问题域模型之解的范型。而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。概括地说,面向对象的方法的基本思想是,从现实世界中客观存在的事物(即对象)触发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题。这些问题所涉及的业务范围称作该软件的问题域。面向对象方法强调直接以问题域中的事物为中心来思考问题,认识问题。并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相差较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。对象的分析,设计,编程,是面向对象的工作流应用系统的基础。面向对象技术的封装性,可扩充性和安全性成为实现和运用工作流应用系统的前提和保障。在工作流管理系统的设计和开发过程中,面向对象的软件开发方法将成为分析、设计和实现以及扩展工作流管理系统最常用的分析设计方法和思想。
可视化建模语言UML提供了用来构造面向对象系统模型的有力工具。UML可以用来对一个软件系统进行说明、形象化描述、构造和编制文档,它也可以用于商业流程建模和其它非软件系统。标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义:
第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
第二类是静态图(Static diagram),包括类图、对象图和包图。其中类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。包由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。
第三类是行为图(Behavior diagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态并且其行为受外界环境的影响并且发生改变的类画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。
第四类是交互图(Interactive diagram),描述对象间的交互关系。其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互,合作图描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。这两种图合称为交互图。
第五类是实现图( Implementation diagram )。其中构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。
当采用面向对象技术设计系统时,首先是描述需求;其次根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。在第一步与第二步中所建立的模型都是静态的,包括用例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语言UML的静态建模机制。第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等四个图形,是标准建模语言UML的动态建模机制。因此,标准建模语言UML的主要内容也可以归纳为静态建模机制和动态建模机制两大类。
随着web技术的不断发展,基于web 的开发已变的越来越容易了。微软的.net平台提供了完整、强大的web 开发机制。.net平台是微软建立在XML和Internet工业标准之上的各种产品的综合体,提供了丰富的类库和完全面向对象的机制以及强大的异常处理功能。
2.2 Web Service技术
Web Service体系结构包含了三个角色:服务提供者(Service provider)、服务代理者(Service broker)和服务请求者(Service request)。服务提供者提供可通过网络访问的软件模块(Web 服务的一个业务处理功能),并通过 WSDL(Web Service Description Language,Web服务描述语言)描述服务中所含的功能、要使用此功能所需输入的数据,以及预期的输出结果。服务提供者把它发布到服务代理者。服务代理者的核心是UDDI(Universal Description, Discovery, and Integration,通用描述、发现和集成)数据库,它允许服务提供者公告服务内容并使服务请求者能找到这些服务。服务请求者使用查找操作来从本地或服务代理者处检索服务描述,然后使用服务描述与服务提供者进行绑定并调用Web Service 功能。图2.1显示了这些操作和提供这些操作的组件以及它们之间的交互。

图2.1 Web Service的体系结构
无论是何种应用环境,都将面对不同的平台、不同的系统和不同的编程环境,要能最大可能地支持所有的平台、系统和编程环境,同时又要确保服务的实现代价保持相对固定,因此,使用基于规范的Web Services解决方案将是一个不错的选择。
.net平台是完全支持Web Services的,只需要创建后缀名为.asmx的文件,就可以直接编写Web方法,在方法名前注明[WebMethod]即可。WSDL描述文件可以在.net中自动生成。
2.3 JavaScript脚本、Ajax技术
JavaScript 是一种新的描述语言,可以被嵌入 HTML的文件之中。在执行时服务器把JavaScript和 HTML 一起发送到客户端执行,由于它运行于客户端,可以在很大程度上降低服务器的负担,Ajax技术就是主要应用JavaScript来实现的客户端和服务器端的一种异步传输机制,应用它可以实现页面的无刷新更新。下面对Ajax技术做一简单介绍。
Ajax(Asynchronous JavaScript and XML)其实是多种技术的综合,包括JavaScript、XHTML 、CSS、DOM、XML 、XSTL和XMLHttpRequest。其中:使用XHTML 和CSS 控制页面显示的格式与样式;使用DOM 实现动态显示和交互;使用XML和XSTL进行数据交换与处理;使用XMLHttpRequest 对象进行异步数据读取;使用JavaScript绑定和处理所有数据。
Ajax在用户与服务器之间引入一个中间媒介,从而消除了网络交互过程中的处理—等待—处理—等待缺点。用户的浏览器在执行任务时即装载了Ajax引擎。Ajax引擎用JavaScript 语言编写,通常藏在一个隐藏的框架中。它负责编译用户界面及与服务器之间的交互。Ajax引擎允许用户与应用软件之间的交互过程异步进行,独立于用户与网络服务器间的交流。现在,可以用JavaScript调用Ajax引擎来代替产生一个HTTP 的用户动作,内存中的数据编辑、页面导航、数据校验这些不需要重新载入整个页面的需求可以交给Ajax来执行。图2.2表示了应用Ajax表示的应用程序模型。

图2.2 应用Ajax实现Web应用程序模型
3. 工作流技术在OA系统中的具体应用
3.1工作流技术在实际应用中的意义
工作流技术的主要应用方向是办公自动化,包括协同办公、收文管理、发文管理等,在企业内部实现多个部门之间的合作。工作流技术的兴起和成熟为办公自动化的实现提供了广阔的平台。
办公自动化(OA-Office Automation)是将现代化办公和计算机网络功能结合起来的一种新型的办公方式,是当前新技术革命中一个非常活跃和具有很强生命力的技术应用领域,是信息化社会的产物。通过网络,组织机构内部的人员可跨越时间、地点协同工作。通过OA系统所实施的交换式网络应用,使信息的传递更加快捷和方便。从而极大地扩展了办公手段,实现了办公的高效率。
办公自动化在企业内部架起了一座信息畅通的桥梁,企业成为一个大办公室,它下面的财务、人事、行政、业务等部门都成为企业信息流中的一个环节,而不再是一个一个的信息孤岛。依靠这种模式,企业的组织结构能够得到简化,各个部门在信息共享的基础上进行协作,便于明确各个部门甚至每个员工的责任,而决策层可以迅速综合来自各个方面的信息,并以此为依据制定企业的战略决策。
3.2需求分析
工作流管理系统在实际系统中的应用一般分为三个阶段:即模型建立阶段、模型实例化阶段和模型执行阶段。在模型建立阶段,通过利用工作流建模工具,完成企业经营过程模型的建立,将企业的实际经营过程转化为计算机可处理的工作流模型。模型实例化阶段完成为每个过程设定运行所需的参数,并分配每个活动执行所需要的资源,模型执行阶段完成经营过程的执行,在这一过程中,重要的任务是完成人机交互和应用的执行。
工作流的建设是服务于其它协同工作的基础工作,首先对项目的整体需求做一个简单介绍。
OA系统的主要功能模块在下面的系统框架图中给出,其中与工作流相关的模块我们用阴影来表示。

图3.1 OA系统的主要功能模块
在项目整体需求分析完后,重点列出对工作流部分的要求。
1、流程分类
通过对西安高压开关股份有限公司的实际情况进行调查,发现现有的成熟的标准化流程在企业里应用比较困难,企业里很难确定某一件事情的某一步是由哪一个固定的人来处理,而且有会遇到离职、出差等情况,使得一个流程完全按照标准的步骤流下来所用时间甚至超过人员跑动联系的时间,无法体现出网络办公的优势。比如同样的一件事情,这次可能需要这个领导批,下次可能又需要另外一个领导批,有时候批完了需要向更高级的领导汇报,有时候则不需要,标准流程缺少机动灵活性,无法适应这么复杂的情况。还有的文件必须同时由多个领导审批,审批后要自动返回给发送者,经过查看后可以再发给各个领导。经过双方讨论,决定建设三种不同模式的工作流,以适应公司的具体情况。
a.标准流程
具有流程建模、表单创建、流程监控、追踪等信息的标准化流程,用于公司正式公文和具有特定步骤工作的流转。可提交、回复、查阅、批准、监控状态。
b.自由流程
适用于无固定手续、随意性比较大的流程,流程由某个人或部门启动后,每到达一个节点,都由该节点负责人动态地决定下一次流转方向。流程没有固定的模型。
c.星型流程
主要用于公司的收文管理,该流程是由一个中心集中向四周发散的流程,每一个发散方向又可以自动返回。
不同的工作流分类对应不同的模型,各个模型都要有相应的驱动程序才能流转。
2、流程驱动
流程驱动是工作流引擎部分,要满足流转控制和授权两个方面。
a.路由流转能力
① 支持并发流转--前一活动可并发流转到各个方向的活动。
② 支持判断决策--前一活动可通过判断在两路流转中选择活动的方向。
③ 支持多路决策--可通过判断在多路流转中选择活动的方向。
④ 会聚型判断--多路活动经过不同方向的流转达到同步。
b工作流授权
① 自动流转--工作流自动按预设人员向下流转;
② 人工选择--可在流转过程中人工选择人员向下流转;
③ 并联会签--使流程中各个人员负责的工作同步处理,以提高工作效率。
④ 动态改变执行者--由管理人员改变执行者而流程仍不受影响地运转。
⑤ 退回工作项--提供反向的流程传递方向。
3、流程统计和监控
a. 图形形式的流程监控--以颜色区分实例和转移实例位置,可进行催办及流程撤回处理,并详细记录过程信息。
b. 列表形式的流程监控--将每步骤的详细办理情况用列表的形式显示。
c. 灵活多变的流程统计--提供流程统计的定制接口,可根据用户实际需求进行统计定制,并提供多种图表表现方式。
4. 基于web的可视化工作流系统的设计实现
4.1 MVC设计模式
MVC (Model-View-Controller) 设计模式基于用户输入将域的建模、显示和操作分为三个类。
Model也叫模型,本质上封装了数据及行为,其中包含对数据控制及修改的规则,提供了一套查询、改变Model 状态的方法。模型用于管理应用程序域的行为和数据,并响应为获取其状态信息(通常来自视图)而发出的请求,还会响应更改状态的指令(通常来自控制器)。
View也叫视图,是Model 所表示出来的图形界面,它主要用于提交Model 的信息展示给用户。视图用于管理信息的显示。
Controller 也叫控制器,是Model 和View 之间的协调者,它的主要作用有以下几点:
(1) 定义用户界面对用户输入的响应方式。
(2) 解释用户的输入,并命令Model 进行相应的操作创造相应模型。
(3) 负责将模型信息传递给View,必要时还要负责创建新的View 和Controller。
图 4.1 描述了这三个对象之间的结构关系。
图 4.1 MVC 类结构
MVC设计模式是一个用于将用户界面逻辑与业务逻辑分离开来的基础设计模式。视图和控制器都依赖于模型。但是,模型既不依赖于视图,也不依赖于控制器。Mircosoft.net为Web应用程序的开发提供了一个模型、视图、控制器完全分离的平台,可以极大地提高程序的可维护性。
4.2流程模型设计
用例分析是采用UML统一建模语言对需求的初步分析,以用例图的方式对流程的基本功能进行说明,流程的用例见下图:
图4.2 工作流系统用例分析
对应于用例图的是用例说明,用例说明中对应每个用例从名称、关系用例、主事件流、替代流、前置条件、后置条件等几个方面描述用例的详细信息。
下面列举出几个重要的用例说明。
办理待办事宜(TransactAffires)用例说明
|
1、 简要说明 这个用例是供有权限的用户办理日常待办事宜工作使用。 2、 事件流 当某个流程流动到某个用户或角色,并且该用户选中某个待办事项,点击办理时用例启动。 1) 主事件流
2)替代流 E—3:用户未选择下一步经办人员,进行保存时系统提示选择下一步经办人员;若用户未填写应填的表单项,提交时系统提示填写表单。 3、 关系 3.1 触发用例者 有权限的用户。 3.2 关联的用例 无 4、 前置条件 某个流程节点流动到当前用户,并且用户有权限处理该节点事务。 5、 后置条件 工作流完成一个节点工作,流程向前推进一步。 6、 其他信息 无 |
委托办理(DelegateAffair)用例说明
|
1、 简要说明 在这个用例中用户可以把自己当前的某个待办事宜委托给他人进行办理。 2、事件流 用户选中某个待办事宜,单击委托时用例启动。 1) 主事件流
2)替代流 E—2:若用户未选择委托人,则系统提示用户选择委托人;若当前节点无人可委托,则用户不能委托他人处理业务。 3、 关系 3.1 触发用例者 有权限的用户。 3.2 关联的用例 无 4、 前置条件 某个流程出现在用户的待办事宜中。 5、 后置条件 流程未向前流动,但当前节点由原经办人变成了委托经办人。 6、 其他信息 无 |
更多的用例说明请见附录1。
在UML设计模式中,用例分析之后就应该进行实体关系图的设计了。
实体关系图(E-R图)将系统中的数据模型以一种更加清楚、具体的方式展现出来。图中方框代表实体,椭圆代表实体的属性,实体和实体之间的关系用菱形来表示。在工作流系统中用到的主要实体如下图所示,为清楚起见,图中没有标明各实体间的关系。


图4.3实体图
下面对图中各实体分别进行解释。
n 流程
这里的流程是对工作流实体进行的抽象,它包含了各种流程的通用属性,相当于类图设计的一个基类。每个流程都由若干节点组成,把流程单独提出作为一个实体,它与表单实体一一对应。
n 表单
表单是在工作流当中用户填写信息的载体。一个流程必须有一个表单存在。流程对应的表单其实是指表单的模板,而不是表单的具体实例。
n 控件、控件实例
控件是组成表单的基本元素,包括多种填写的(文本框、文本域)、选择(单选、多选)的控件。控件实例是在表单实例化后应用的控件。
n 标准流程、流程实例
标准流程作为流程实体的一种类型,继承了流程实体的属性。标准流程同样由若干节点实体按照一定的次序构成。流程实例是流程模板实例化后的应用,一个流程实例从属于一个流程模板。
n 节点、节点实例
节点实体即流程流转过程中的各个步骤,流程是由节点及其前后关系来组成的。节点实例是流程实例中应用到的节点。
n 处理步骤
处理步骤是节点实例处理的操作记录。它主要用于流程的跟踪与监控。
上述各个实体之间具有特定的联系,这些联系通过E-R图中的关系进行描述。一般来说,实体之间的关系包含以下三种:
1:1:一对一关系;
1:N:一对多关系(或多对一关系);
N:M 多对多关系。
下图所示了与工作流相关的各实体之间的关系。

图4.4实体关系图
实体关系图中,实体及其属性就是可以看作对象,对应数据库中一个数据表,而实体之间的关系就要靠类的方法来实现,我们首先来看由此得出的数据库设计。
通过对E-R图的分析,流程模型的实体对象基本上就出来了,下一步就是将这些实体对象转换为可以被计算机存储在数据库结构。
下面列出流程模型中核心的3个数据表的字段信息。
表4.1 数据字段表
流程模版表(oa_flow)
|
Flowid |
流程模版编号 |
|
Flow_name |
流程模版名称 |
|
Creat_user |
流程模版的创建者,-1代表管理员创建,为系统模版 |
|
Flow_description |
流程模版描述 |
|
Flow_watcher |
流程监控人员 |
|
Flow_status |
流程的状态 |
|
Form_id |
流程所调用的表单 |
|
Flow_type |
流程的类型1:标准流程,0:自由流程 |
|
Flow_version |
流程版本 |
流程节点表(oa_flow_point)
|
ID |
节点编号 |
|
Point_title |
节点名称 |
|
Point_user |
节点的可操作人员,供委托使用 |
|
Point_watchers |
节点监控人员 |
|
Point_dealer |
节点处理人员 |
|
Point_status |
节点状态 |
|
Point_prevrious |
节点的前驱 |
|
Point_behinds |
节点的后继 |
|
Deal_time |
处理时间 |
|
Deal_content |
处理意见 |
|
Flow_id |
节点所属的流程 |
表单模版表(oa_form_template)
|
ID |
表单模版编号 |
|
Form_name |
表单模版名称 |
|
Form_content |
表单模版内容 |
|
Form_creater |
表单模版创建者,具体的用户id为私人模版,0为公共模版 |
流程模型的实际信息存储在数据库中,实际的流程流转是需要靠修改流程表里的信息来驱动的,在程序设计中,需要编写不同的操作类来实现这些表的增删查改,并对外提供统一的接口,这些类就构成了流程最基本的模型,上层又该如何控制这些接口操作呢?不同的流程具有不同的控制方式。
4.3流转控制的设计与实现
标准流程是由流程模板实例化为流程实例而来的,所以首先要看一下流程模板、流程实例、节点以及节点实例之间的关系。

图4.5模板实例关系图
流程流转控制从宏观上看是流程实例的状态转换。一个流程实例存在四种状态:初始态、运行态、挂起态、完成态。
初始化一个新的流程实例有两种操作:保存待发或立即发送。保存待发的流程处于初始态,立即发送的流程将直接变为运行态。我们设定流程的每个节点办理人有暂时挂起流程的权限,当办理人需要咨询他人时,流程处于挂起状态,最后一个节点结束时,将流程置为完成态,这是整个流程就可以归档了。
流程各个状态的转换可以用下图表示:

图4.6流程实例状态转换图
由初始态到运行态,是流程的启动过程,这个过程主要靠修改流程实例的第一个节点实例,第一个节点实例由初始态转到运行态,同时将流程实例的初始态也改为运行态。
在运行态流程实例的状态转换应该有这样的一个算法。
一个节点实例的所有前驱节点实例都为完成态时,这个节点的状态才能由初始态转为运行态。我们用伪语言来描述这个算法。
|
IF 一个节点实例状态由运行态 变为 完成态 IF 该节点实例有后继节点实例 FOREACH 该节点实例的所有后继节点实例 对于每一个后继节点实例 FOREACH 该节点实例的所有前驱节点实例 IF 所有的前驱都已为完成态 修改该节点状态 由初始态到运行态 END IF END FOREACH END FOREACH ELSE FOREACH 该节点实例的所有前驱节点实例 对于每一个前驱节点实例 FOREACH 该节点实例的所有后继节点实例 IF 所有的后继都已为完成态 修改该流程实例状态 由运行态到完成态 END IF END FOREACH END FOREACH END IF ELSE IF 该节点发起咨询操作 将流程实例状态 由运行态 该为 挂起态
ELSE IF 该节点发起咨询回复操作 将流程实例状态 由挂起态 该为 运行态 END IF END IF
|
当流程实例的所有节点实例都为完成态时,流程实例的状态可以修改为完成态。流程实例的流转其实节点实例的状态转换。一个节点实例有初始、运行、完成三种状态。节点实例的状态转换图如下:

图4.7节点实例状态转换图
节点实例由初始态到运行态的转换在上文的算法中已包含,由运行态转为完成态,在操作完成后直接置这个状态就可以了。
自由流程的与标准流程的区别是,自由流程在创建时没有节点实例,仅有一个空的流程实例,所有的节点实例都是在流程实例流转时自动创建的,流转过程也是靠节点实例的状态转换来实现的。之不过多了创建节点实例这个步骤。

图4.8自由流程状态转换图
由于自由流程的节点实例在不断的动态创建,如果不认为去结束这个流程,则流程永远不会停下来。动态创建节点有一个好处,可以更加灵活的制定那一步工作由谁来做,更能适应企业内部多种复杂不定的情况。缺点是流程权限控制没有标准流程那么严格。
星型流程是比较特殊的流程实例,其流程实例节点也是动态创建的,但第一个节点实例是随流程实例同时创建的,其它节点实例都是该节点的后继,它又是其它所有节点的后继。
流程模型如下:

图4.9星型流程模型
流程流转时,起始节点一次创建若干个周边节点,并同时启动这些节点,每个节点到达完成态后又自动返回起始节点。流程流转依然是靠节点实例的状态转换来实现的,具体的转换控制与前面类似。流程结束与自由流程一样,必须由操作流程的人员来结束。这种流程主要用于公司的收文管理,公司的外来文件一般由专人集中管理,而这些文件又要发给各个部门领导进行批阅,领导的批阅后直接返回就可以了,星型模型正式为了解决这种实际情况而创建的。
4.4人机交互与流程监控的设计与实现
1、咨询与回复
咨询是流程实例流转过程中到某个节点实例时,该节点操作人需要征询其他人意见,此时他可以将流程暂时挂起,向其他人发起咨询。
咨询时系统调用在线消息模块的发送消息模块,被咨询人收到即时消息后,可以回复咨询人,该操作的实现与流程模型关系不大。
2、催办
对于迟迟流转不下去的节点,可以通过单击一个催办按钮,向该节点的办理人发送一个系统消息,以督促其尽快办理。
3、委托
流程流转到某个节点时,如果当前办理人暂时无法办理业务,可按委托按钮,选择另外一个人,将该节点的办理交给委托人进行办理。委托操作不影响流程实例的状态。
4、撤消、回退
流程实例的流转遇到异常情况时或中间某些节点处理不当时可以回退到上一级节点。
5、重新发起
流程的发起人有权重新发起一个流程。重新发起时将流程的状态,流程中各个节点的状态全部还原到初始态。
1、图形监控
对流程流转过程中,提供一种图形化监控方式,使流程办理人员能很清楚、方便地看到流程的执行状况。由于.net提供了很方便的绘图机制,使得在Web上实现图形化很容易。实现图形化监控还需要一个算法。
n .net绘图机制
.net 绘图用到的命名空间有
System.Drawing.Imaging;
System. Drawing;
System.Drawing.Design;
首先,创建一个位图画布
Bitmap myhuabu = new Bitmap(huabuwidth, huabuheight);//创建画布
然后声明画图对象并实例化
System.Drawing.Graphics mygraph;
mygraph = Graphics.FromImage(myhuabu);//创建画图对象
然后再利用Graphics类的绘图方法在画布上绘制你所要的图形,常用的方法如下图所示:
图4.10 Graphics类中的主要方法
应用这些方法可以绘制各种常见的图形,如矩形、圆形、椭圆、扇形等等。并可以设置不同的画笔,以形成不同的颜色、字体、画笔的粗细等等。
绘图完成后,可以调用Graphics类的Save方法以流的形式将图片输出,
//生成图片,发送到输出流
myhuabu.Save(Response.OutputStream, ImageFormat.Gif);
这里指定输出图片格式为GIF 格式。
我们可以在要显示图片的位置加一个Image控件,然后让它的ImageURL属性指向输出的页面,接收图片流就可以显示了。
下面是在实现工作流图形时定义的绘图资源。
|
public class drawResources { public drawResources() { //此处为构造函数逻辑 } /// 蓝色画笔,用来画矩形 public static Pen drawPenBlue = new Pen(Color.Blue); /// 红色画笔,用来画矩形 public static Pen drawPenRed = new Pen(Color.Red); /// 画线的笔 public static Pen drawLinePen = new Pen(Color.Black); /// 字号 public static int fontsize = 9; /// 宋体字体 public static Font drawfontst = new Font("宋体", fontsize); /// 画刷(字体颜色,前景色) public static SolidBrush drawfbrush = new SolidBrush(Color.Green); /// 箭头画刷(前景色) public static SolidBrush drawarraybrush = new SolidBrush(Color.Black); /// 填充矩形的颜色 public static SolidBrush fillrectbrush = new SolidBrush(Color.LightBlue); /// 画布背景色 public static Color hbbj = Color.White; /// 两个矩形间距离 public static int pixjl = 20; /// 矩形左上顶点距画布边的距离 public static int y_index = 10; /// 矩形的宽度 public static int rectWidth = 80; /// 矩形的高度 public static int rectHeight = 40; /// 第一个节点的起始位置 public static int rectbeginposition = 20; /// 线间距离 public static int linespace = 5; } |
n 图形化监控算法
要实现图形化监控一个流程实例,必须用一个算法将流程各个节点以及节点之间的关系画出来。我们采用矩形来表示节点实例,用箭头表示节点实例间的前驱后继关系,如果节点实例A是节点实例B的前驱,则有一条由A出发到B结束的箭头。这样就必须保证任意两条连接线都不重叠。
为了方便定位,所有的线都从一个矩形的底部出发,到另一个矩形的底部结束。有的节点实例有多个前驱后继,所以规定每个矩形的最右端为连接线的起始位置,然后依次往左,最左端为每个连接线的结束位置,然后依次往右。
每画一根线,就将线的高度向下加5个像素,这样保证所有的线永远不会重合。
|
节点A |
|
节点B |
图4.11 图形算法模型
为了显示出流程实例流转的进度,办理过的节点实例和未办理的节点实例必须用不同的颜色区分开来。在绘图之前还要先计算出画布的宽高,画布的宽高必须由流程实例的节点数量来动态的决定,以适应生成图片的大小,所以需要计算所有节点实例的总宽度和节点实例高度加连接线的高度。
为了取得这些定位信息,我们设计了一个节点实例类,并为每个节点实例实例化一个对象,在对象中记录了这个节点的所有定位信息,节点实例类的声明如下:
|
public class flowPointDraw { public flowPointDraw() { //此处为构造函数逻辑 } /// 节点名称 public string point_name; /// 节点id public int point_id; /// 节点后继节点 public string point_next; /// 节点前驱节点 public string point_prev; /// 节点顺序 public int point_order; /// 节点左上顶点左边距 public int left_index; /// 节点左上顶点上边距 public int top_index; /// 节点宽度 public int width; /// 节点高度 public int height; /// 节点中文字的左边距 public float text_x; /// 节点中文字的上边距 public float text_y; /// 节点的状态,根据状态选用不同的颜色画 public string pointStatus; /// 前驱节点 public ArrayList prepoints = new ArrayList(); /// 后继节点 public ArrayList postpoints = new ArrayList(); } |
由于在数据库中记录了各个节点实例的前驱节点实例和后继节点实例,在取出这些节点实例时根据顺序进行一定地计算就可以给节点实例对象各个属性赋值了。最后开始绘图时只要按照节点实例对象中规定的定位连线就可以了。
n 监控效果演示
应用该算法画出的流程监控如下图:
图4.12 图形流程监控
2、表单监控
表单监控是在流程实例流转时记录各个节点实例办理人员的办理时间、办理意见,然后以表单的形式和图形监控一起给出。
4.5通用表单的设计与实现
表单是由控件组成的,在ASP.NET中,我们采用服务器端控件来组成表单,以便于表单解释器的实现。为了实现表单的动态解释,必须对不同类型的控件区分存储,记录每个控件的名称、ID、类型、长度、位置、默认值等,主要为了实现按权限加载不同的控件项。这里将控件分为两大类,一类是输入类型控件,另一类是选择类型控件。
输入类控件:
主要有文本框、文本域,存储时要存控件的ID、名称、类型、长度、在表单中的位置。
选择类控件:
单选框、复选框、下拉菜单,这类控件除了存储上述几项外,还要记录被选项以及默认选中项。
服务器数据库中记录的控件要在页面上应用,需要有一个解释器把数据库中的信息解释为控件加载到页面上。由于.net 可以动态地创建服务器端控件,因此解释器可以直接读取数据库信息,根据这些信息生成服务器控件,并加载到页面上。
其工作原理可以用下图表示。
|
读取信息 |
|
判断控件类型 |
|
创建控件 |
|
加载控件 |
图4.13 表单解释器
从数据库读取控件的信息可以放在一个大的循环结构中,以便加载完一个控件后顺次读取下一个。控件实例化和一般类的实例化是一样的,实例化之后根据数据库记录设置类的属性,然后调用Controls. Add()方法加载到相应的位置。
5. 开发心得及前景展望
5.1 开发心得
在本次课题开发中,我通过积极地参与设计与编码工作,锻炼了自己的实践水平,也积累了一些团队合作和软件工程的经验。开发期间碰到了很多困难,我在这里将自己的一点点心得总结一下,更多的是失败的体验。
1、重视需求分析
需求分析是在软件开发起因和落脚点,任何一个软件都以最终达到客户满意为目标。没有透彻的需求分析,就不能理解客户的意图,这将给软件开发的后期带来灾难性的后果。另外,我主张需求与设计同步进行,这里的设计是指初期的概要设计,需求分析阶段是与用户讨论最密切的阶段,随时根据需求调整设计,一方面将更有利于需求分析的深入和可行性鉴定,另一方面也可以加快软件开发的进度,一举两得。
2、集中优势力量设计
设计工作对软件开发起着举足轻重的作用,好的架构设计可以大大提高软件开发的效率和降低修改和返工的可能。担任设计工作的人员一定要经验丰富,技术过硬,同时善于同客户交流,能抓住客户的心理。设计期间其他成员可安排解决已经预见到的难题。
3、合理分工
分工一定要根据不同成员的水平,长处,能者多劳,要让每个成员都能施展自己的80%以上的力量。分工还要考虑到软件的开发进度,以便在预定的时间内完成工作。如何做到具体的分工,就要根据具体的情况而定了。
4、重视文档编写
合作开发软件,一定要代码未动、文档先行。包括需求分析、概要设计、详细设计,以及与用户之间的讨论,开发人员内部的讨论,都要一一记录在案,做到每一步都有据可查。建议开发团队建立一个自己BBS,将所有的文档发布在上面。另外,这个BBS还可以用于积累之用,各开发成员在开发过程中遇到难题是怎么解决的,可以发布在BBS上供他人借鉴,同时有问题解决不了时也可以在上面发问,给开发人员提供一个交流平台。
5、重视内部讨论
参与开发的人员在动手之前一定要与和自己开发相关模块的人员充分讨论,统一模块之间的接口。
6、重视版本控制
开发人员超过3人时,就必须使用版本控制软件进行控制,否则相互覆盖的现象会让人很头疼。
7、重视测试
不但每个开发人员要对自己的模块进行详细的单元测试,不同开发人员之间要交换测试,最终要的客户的测试意见,出现问题及时修改,直到客户满意为止。当然,较大的改动双方要进行协商。
8、慎用新技术
过新的技术往往存在很多不成熟的地方,可能在有些方面方便了开发,但同时可能会给软件带来巨大的隐患,应用新技术、新工具时要三思而行。
5.2 前景展望
本文提到的工作流在适用在特殊场合基本可以,但通用性很差,这是主要的缺点。有待于将自由流程,星型流程进行改进,使之更加通用。文中提到的有些技术没有得到充分的应用,如Ajax、数据持久化技术,充分地利用新技术,可以大大提高软件的运行效率,改善客户体验。
参考文献
[1]http://developer.51cto.com/art/200601/16959.htm(统一建模语言UML简介)
[2] 纪勇.基于关系结构的工作流管理系统架构设计及工作流引擎的实现.东北大学
[3] 赵斌.可视化工作流管理系统的研究及其实现.东北大学
[4] Dave Crane等.
[5] 吴俊新.办公自动化系统在Web应用中的设计与实现.东北大学
[6]范玉顺.工作流管理技术基础 清华大学出版社,北京.2000
[7]萨师煊,王珊.数据库系统概论.高等教育出版社2000
[8]Joseph Bustos..NET WEB服务入门经典. 清华大学出版社2003
[9]张云勇等.中间件技术原理与应用.清华大学出版社2004
[10]李红臣,史美林.工作流模型及其形式化描述.计算机学报2003.26
[11] Inter-workflow Application Model: The Design of Cross-Organizational Workflow Processes and Distributed Operations Management[S] . WfMC.1997
[12](美)J·H·Green,赵国梅,郑德高译.办公自动化.北京:高等教育出版社
[13]王波.办公自动化系统设计.北京:人民邮电出版社,2003
[14](美)乔治.系统分析与设计简明教程(影印版).北京:高等教育出版社
[15]James W.Copper.The Design Patterns Java ComPanion,1998
[16]尹 帆, 康瑞华, 薛胜军. 基于工作流的办公自动化系统的研究与实现. 武汉理工大学学报(交通科学与工程版), 2004, 28 (1) : 114~ 117
[17]赵小顺, 杨宏宇, 李述武. 办公自动化信息处理技术. 武汉:武汉理工大学出版社,2005.
[18]Watad,M,M/DiSanZo,F.J.Case. study:synergism of telecommuting and office automation.Sloan Management Review.Winter 2000
致谢
本文的选题、课题研究及撰写工作是在指导老师祁飞的直接关怀和悉心指导下完成的。在项目实践及论文进行过程中,我的论文得以顺利完成还得到了西安建筑科技大学信息与控制工程学院的
感谢大学四年的学习生活中所有给我授课的各位老师,借此机会向他们致以真诚的感谢。
最后,感谢我的父母多年来对我坚持不懈的支持和帮助,在此向他们致以深深的敬意。
附录1详细用例描述
a.回退流程(RollBackFlow)
1、 简要说明
用户可以将流程退回到上一级节点。
2、 事件流
用户选中某个待办事宜,单击回退时用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
用户点击回退按钮 |
系统提示确认,用户选择(Y),流程将退回到上一节点,否则不变 |
2)替代流
无。
3、 关系
3.1 触发用例者
具有使用权限的用户。
3.2 关联的用例
无。
4、 前置条件
某个流程出现在用户的待办事宜中。
5、 后置条件
如果这个用例启动成功,流程返回到上个经办人处。
6、 其他信息
流程返回到上一节点后,经办人可以重新制定下一步经办人,也可以选择与原先相同的人。
b.监控流程(BrowseWatchFlow)
1、简要说明
用户可以使用这个用例监视其有权监视的所有流程的流转过程。
2、 事件流
用户选中某个有权监控的流程,单击查看流程,用例启动。
1)主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
用户进入监控页面 |
系统列出当前用户可监控的所有流程 |
|
2 |
用户选中某个流程,单击查看流程 |
系统列出该流程当前的状态信息及流过的所有节点和各个节点的处理日志(包括回退信息) |
2)替代流
无。
3、 关系
3.1 触发用例者
有权限的用户。
3.2 关联的用例
检索流程。
4、 前置条件
检索流程用例已启动。
5、 后置条件
无。
6、 其他信息
无
c.检索流程(SearchFlow)
1、 简要说明
用户可以按照某种条件查找流程。
2、 事件流
用户点击查找流程或系统列出流程列表时用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
用户打开页面 |
系统列出用户有权查看的所有流程 |
|
2 |
用户输入日期,点击搜索 |
系统列出某段日期用户有权查看的流程 |
|
3 |
用户选择未启动、启动中或终止,点击搜索 |
系统列出当前处于对应状态的有权查看的流程 |
|
4 |
用户选择标准或自由流程 |
系统按用户选择类型列出相应流程 |
2)替代流
E—2:用户输入日期不合法,系统提示用户重新输入。
3、 关系
3.1 触发用例者
有权限的用户。
3.2 关联的用例
流程监控、查看表单、查看意见。
4、 前置条件
无。
5、 后置条件
如果这个用例启动成功,则用户可以监控流程、查看流程表单及签署意见。
6、 其他信息
无
d.查看表单(SeeForms)
1、简要说明
用于查看流程在流转过程中或流转完后表单的签署情况。
2、 事件流
用户选择查看表单,用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
用户进入管理页面 |
系统列出有权查看的所有流程 |
|
2 |
用户选择某一流程,点击查看表单 |
系统列出该流程详细表单信息 |
2)替代流
无。
3、 关系
3.1 触发用例者
有权限的用户。
3.2 关联的用例
检索流程。
4、 前置条件
检索流程用例已启动。
5、 后置条件
无。
6、 其他信息
无
e.查看意见(SeeMinds)
1、简要说明
用户可以查看使用该流程的人员对流程签署的所有意见。
2、 事件流
用户选择查看意见,用例启动。
用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
用户进入管理页面 |
系统列出有权查看的所有流程 |
|
2 |
用户选择某一流程,单击查看意见 |
系统列出所有经办人员对该流程的意见 |
2)替代流
无。
3、 关系
3.1 触发用例者
有权限的用户。
3.2 关联的用例
检索流程。
4、 前置条件
检索流程用例已启动。
5、 后置条件
无。
6、 其他信息
无
f.创建流程模板(CreatStandardFlow)
1、简要说明
管理员或有权限的用户创建一个标准流程的模型。
2、 事件流
用户或管理员点击创建流程,用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
输入流程名称、选择使用表单,单击保存按钮 |
系统提示流程创建成功。 |
2)替代流
E—1:在主事件流中,如果输入的流程名称已存在或未输入流程名称,系统显示错误信息,提示重新输入。
3、 关系
3.1 触发用例者
用户、管理员。
3.2 关联的用例
编辑流程模板、删除流程模板
4、 前置条件
无。
5、 后置条件
如果这个用例启动成功,则用户或管理员可以对新建的流程进行编辑、删除操作。
6、 其他信息
流程第一次创建后,默认版本号为1.0
g.编辑流程模板(EditStdFlow)
1、简要说明
管理员或用户可以某一流程的属性、监控人员、节点步骤进行设置。
2、 事件流:用户或管理员选择某个流程模板、点击编辑,用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
用户点击基本属性设置 |
系统列出该流程的名称及表单信息,用户可以修改名称,更换表单。 |
|
2 |
用户点击设置监控人员 |
系统按部门、角色列出所有OA用户,用户选择部分人员,确定,则所选人员可以监控该流程。 |
|
3 |
用户点击编辑节点信息 |
系统列出流程的所有节点信息,用户可以增加、编辑或删除某些节点 |
2)替代流
E—1:若用户修改的流程名称已存在,系统提示重新输入。
E—2:若当前流程有实例处于运行状态,则不允许任何人更改节点信息。
3、 关系
3.1 触发用例者:用户、管理员。
3.2 关联的用例:检索流程模板
4、 前置条件
流程模板已创建且没有运行的实例。
5、 后置条件
如果这个用例启动成功,可以对流程的各种信息、权限设置进行更改。
6、 其他信息
在编辑流程流程节点时,若流程不存在任何节点,则首先要新建流程节点,流程节点中可指明该节点的名称,可操作表单的哪一部分,及该节点的前驱、后继。一个节点可以有多个前驱和多个后继,流程编辑后,自动保存新版本,老版本存留副本。
h.删除流程模板(DeleteStdFlow)
1、 简要说明
管理员可以用这个用例删除某个流程模板。
2、 事件流
管理员选择某个流程模板,点击删除,用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
管理员进入流程管理页面 |
系统列出所有流程模板 |
|
2 |
管理员选中某个流程模板,点击删除 |
系统提示确认(Y/N),用户选择Y,则删除流程,否则取消操作。 |
2)替代流
E—2:如果管理员要删除的模板当前有正在运行的实例,则系统提示管理员有流程正在运行,不能删除。
3、 关系
3.1 触发用例者
管理员。
3.2 关联的用例
检索流程模板。
4、 前置条件
检索流程模板用例已启动,要删除的流程模板已创建且没有正在运行的实例。
5、 后置条件
该流程模板被删除。
6、 其他信息
无
i.检索流程模板(SearchStdFlow)
1、 简要说明
管理员可以用这个用例查找流程模板。
2、 事件流
管理员点击搜索流程模板或系统列出流程列表时,用例启动。
1) 主事件流
|
编号 |
角色动作 |
系统响应 |
|
1 |
管理员打开流程管理页面 |
系统列出所有流程列表 |
|
2 |
管理员输入流程的全部或部分名称,点击搜索 |
系统列出所有与该名称相关的流程模板 |
2)替代流
E—2:若输入的搜索字符为空或与所有的流程模板名称都不匹配,则系统找不到相关流程。
3、 关系
3.1 触发用例者
管理员。
3.2 关联的用例
编辑流程模板、删除流程模板。
4、 前置条件
无。
5、 后置条件
无。
6、 其他信息
无
j.新建表单(NewForm)
1、 简要说明
管理员或有权限的用户可以用这个实例创建新的表单。
2、 事件流:用户或管理员点击创建表单时,用例启动。
1)主事件流
|
编号 |
角色动作 |
系统响应 |
|
|
1 |
用户或管理员点击新建表单,输入表单名称,并保存 |
系统创建新表单 |
|
|
2 |
用户或管理员选择新表单,点击设计表单 |
系统打开表单设计器 |
|
|
3 |
用户单击添加文本域(区),输入名称、默认值,确认 |
当前表单增加该文本域(区) |
|
|
4 |
用户单击添加下拉菜单,输入名称,选项值,确认 |
系统向当前表单添加下拉菜单 |
|
|
5 |
用户选择某项控件,点击删除 |
系统从当前表单删除该项 |
|
|
6 |
用户点击保存 |
系统保存当前设计表单 |
|
2)替代流
E—1:若输入的表单名称已存在,系统显示错误信息,提示重新输入。
3、关系
3.1 触发用例者:用户、管理员。
3.2 关联的用例:创建流程模板。
4、前置条件:无。
5、后置条件
如果这个用例启动成功,则一个新的表单被创建并保存在系统中。
6、其他信息:无

浙公网安备 33010602011771号