哈尔滨工业大学国家示范性软件学院本科毕业设计(论文)开题报告题目:基于B/S架构的通用简单流程管理系统专业软件工程学生姓名联系方式年级实习基地中兴软件技术(南昌)有限公司基地指导教师联系方式校内指导教师联系方式开题日期2005-11-20哈尔滨工业大学软件学院目录1.项目来源及开发目的和意义 (1)1.1项目背景及来源 (1)1.2项目的目的和意义 (2)1.3国内外相关产品的发展现状 (3)2.开发内容和系统的总体设计 (4)2.1通用简单的流程管理的可实现性 (4)2.2系统的基本功能 (4)2.3数据库的设计 (5)2.4总体设计及所用技术 (6)3.进度安排,目标及其他 (6)3.1为完成项目已具备的条件和所需经费 (6)3.2项目参与人员以及分工 (6)3.3项目的目标 (6)3.4项目的进度计划 (7)3.5可能遇到的困难 (7)4.参考文献 (8)附图1:数据库设计概念模型 (9)附录1:哈尔滨工业大学毕业设计(论文)任务书 (10)附录2:本科毕业设计(论文)开题审查意见表 (12)1.项目来源及开发目的和意义1.1项目背景及来源流程(process)的定义是:一个或一系列有规律的行动,这些行动以确定的方式发生或执行,导致特定结果的出现——单个或一系列连续的操作。
简单地说,流程就是将输入转化为输出的一系列活动。
流程具有三个基本要素:输入、活动和输出。
输入情况会影响输出情况,输出的是令客户满意的方式,输出的时间要尽可能的越短越好[1]。
综上,最常见的“流程”存在于企业中。
一个企业所作的几乎所有的事情都可以算作是一个流程,流程是单个的或者一组的活动,获取输入,再向内部或外部用户提供输出。
无论公司大小,它每天都在用流程向外提供产品和服务。
本项目主要探讨简单流程管理的实现。
简单的流程管理的对象是简单的流程。
一个简单的流程有确定的开始提供输入,确定的结束提供输出,一组角色操作这个流程来从输入转化为输出,由一系列互相联系的活动构成。
简单的流程关注一个确定的处理对象。
如“Bug”,“请假单”,“票据”等,活动可以看作是这个确定的处理对象的某一个状态。
对象的状态根据活动之间的关联在各个状态之间转化。
如上说述业务流程的计算机化或自动化也可称作是工作流管理。
完整的工作流管理系统要比本项目所实现的流程管理要复杂一些。
本项目局限了流程活动间状态转换的方式,简化了一些功能,因此称之为简单的流程管理。
一些简单流程管理的例子:2005年11月21图1-1某公司请假审批流程Bug管理2005年11月22日图1.2一种Bug管理流程本项目即来源于中兴软件技术内部项目《Bug管理系统》。
原项目被设计为可以由用户自定义Bug管理的流程,以适应不同项目组的规模及需求。
因此原项目的设计要求充分灵活以实现流程的可定制。
但我认为原项目的设计仍然没有充分放开,仍然拘泥于“Bug管理”这一特殊的流程管理而没有抽象到更高的程度。
因此我重新设计了这一套可以通用的简单流程管理系统。
经过用户定制,这套系统可以完成原Bug管理系统的功能,并且可以作为其他场合的简单流程管理系统使用。
1.2项目的目的和意义流程管理常见而重要。
首先,在企业方面,公司的产品和服务都要靠流程来体现,因此流程管理和流程控制是公司整体功能中最重要的部分。
流程是连接企业生产和客户需求的纽带。
流程的好坏和产品,服务的质量有直接的关系。
流程控制的好坏是衡量公司管理水平的标准之一。
流程管理也可以加强公司各部门之间的协作。
公司在具体事务的运作上,不可避免的要涉及到员工与员工之间、部门与部门之间的协同配合。
在企业中很常见的问题就是各部门之间职责重叠,职责不清,互相推诿。
有效的流程管理可以解决这些问题。
虽然流程管理最常见于企业之中,流程的思想在其他方面都有应用。
如在软件质量管理中常见的Bug管理就是一种典型的流程管理。
在其他场合,一些有着确定步骤的处理过程也可以表达为流程管理。
综上所述,随处可见的简单的流程管理,无论应用在何处,都有很大的共同点。
经过计算机科学的抽象,完全可以制作出一个花费小,功能精炼的通用简单流程系统。
制作这一套系统是可行的且有必要的。
本项目的意义在于:1)它采用B/S结构开发,对客户端要求少,容易在企业中部署。
2)它的功能精炼,易用,灵活。
适合于中小企业的流程管理,也方便企业优化流程。
3)它的设计开放,易扩展。
通过简单的二次开发可以方便的与企业的现有系统融合。
4)它采用业界流行的开源框架设计开发,成本低,费用小。
5)本项目和国内正在逐步兴起的大型工作流管理系统的基本功能很接近,企业可以利用它引进工作流的思想,逐步改造业务流程。
虽然本项目并不是真正的工作流管理系统。
但基本的工作流管理系统应有的工作流设计,工作流控制,工作流交互功能在系统中都有体现,也可以说是一套简化了的工作流管理系统。
1.3国内外相关产品的发展现状目前,企业流程管理在国内方兴未艾,有很多咨询公司和IT厂商开始涉足这一领域。
西方新兴的“企业流程再造”的思想也在慢慢渗透进国内的各大企业。
利用计算机软件产品进行企业的流程管理是一个必然的趋势,国内很多公司都在为企业定制流程管理软件。
虽然这些流程管理软件在之前经过了仔细的调研,但这样费用过大,开发周期长,且成品不够灵活,一旦企业流程有了变化,软件不能及时的适应。
而对于一些中小企业,需要的往往是简单,灵活的流程管理。
国内许多ERP系统自带有定制的流程管理。
但通常这些流程被写死在系统当中,不灵活,不可定制。
ERP系统的开发费用昂贵,部署困难,成功率低。
并不适合中小企业使用。
企业的流程管理系统通常表现为工作流管理系统。
国内许多厂商如上海东兰科技等都在开发,部署自己的工作流管理系统。
这些系统多半是C/S架构和B/S 架构混合设计,开发成本较大。
国外相关产品如IBM的Lotus Notes是一套成功的办公自动化平台,在许多软件企业都有应用,但仍然有笨重,昂贵的缺点。
2.开发内容和系统的总体设计2.1通用简单的流程管理的可实现性综上所述,简单的流程管理在很多场合都有应用。
尤其对于中小企业,大型,重型的流程管理系统并不适合,这些企业真正需要的是轻型,费用小,且可以灵活定制的流程管理系统。
因此,这里我们要尝试制作一个符合如上要求的流程管理系统。
从之前的例子可以看出,流程管理有其在形式上的一致性。
即都有确定的开始和结束状态,状态之间有确定的转化。
因此,流程可以抽象为数据结构中的有向图来考虑。
对于一个有向连通图,定义一个确定的节点为起始节点,一个不同的确定的节点为终止节点。
除起始节点外,其它节点的入度都大于1;除终止节点外,其它节点的出度都大于1。
从起始节点到终止节点的若干条路必定最终会走过图的所有节点。
符合这些条件的图,就是一个流程的抽象表示。
图的节点即为流程的状态(活动),图的有向边即为状态之间的转化关系。
有若干个可以应用于图上的事物,事物可以处于图的节点所表示的有限个状态之一。
称这些事物为流程对象。
有若干个角色关注这个图。
每个角色关注图上不同的一些有向边。
每个角色可以看到处于自己关注的有向边所连接的两个节点所表示的状态的流程对象,且可以将这些流程对象的状态沿着有向边改变为另一个状态。
若在所有角色的共同合作下,可以将一个处于起始状态的流程对象的状态,改变为终止状态,则这个流程对象就走完了整个流程,整个过程就是一次流程管理。
综上,我们可以完全从抽象的角度查看简单的流程管理。
这样,流程的存储,操作均可以由计算机编程来自动化实现,这套系统是可行的。
2.2系统的基本功能整个系统分为流程的定义维护和流程的管理实现两大块功能。
其功能细节如下:流程定义部分:1)流程基本信息的修改和创建2)流程对象属性的修改、创建、删除3)流程状态的修改、创建、删除4)流程线的修改、创建、删除5)流程的删除6)角色信息的创建和修改7)角色权限信息的编辑8)角色信息的删除9)用户信息的创建和修改10)用户信息的删除流程运行部分:1)登陆2)修改基本信息3)流程对象的创建4)流程对象列表的查看5)流程对象的删除6)流程对象状态的改变7)流程对象详细信息的查看与修改2.3数据库的设计由于本系统是一套通用的流程系统。
数据库的设计不会拘泥于任何已经有的流程管理模式。
也就是说。
我们需要设计一套完全灵活,可以适应于大多数场合的数据库。
在2.1中已经分析过系统的可行性。
可以将系统存储为一个有向图,设计数据库来完成流程运转的算法,尽量少考虑业务上的逻辑,这样设计出的系统是最通用的。
数据库设计的概念模型参见附图1。
表flow存放一个流程的最基础信息,主要包括流程名称,流程对象的名称。
表flow_state存放流程的一个活动,也即流程对象的一个状态。
抽象的说,flow_states存放有向图的一个节点。
这个表包括流程状态的名称。
表flow_line存放一个流程线,即流程活动之间的转换关系。
抽象的说,flow_line存放有向图的一个边。
flow、flow_state、flow_line构成了流程,也即一个有向图的基本信息。
object_property定义了流程对象所可能有的属性。
flow、flow_state、flow_line、object_property的数据是在流程的定义阶段生成的。
这些数据将在之后的流程控制和交互阶段影响整个系统的运作。
表flow_object存放了每一个在流程中的流程对象的当前状态。
主要包括对象名称和对象当前状态。
系统按照之前已有的定义,按照规则和用户的操作,逐步改变对象的状态,完成流程管理的职责。
表object_value存放了流程对象所具有的属性值。
每一个属性在object_propety表中都有过定义。
表role、user构成了权限系统,存储了操作流程的角色信息和它们的权限。
以上这些构成了一个通用流程的所有必要元素,有这些数据表的支持,这个系统就可以工作了。
另外,表history存放了对象的状态转化历史。
主要有状态转化的执行人,被转化的对象,目的状态。
2.4总体设计及所用技术系统采用B/S架构,所有的功能在浏览器中呈现。
采用Java技术。
项目将运行在Tomcat服务器下。
前台表现层使用JSP实现,配合Spring的Web MVC框架。
业务层采用轻量级的Spring IoC容器。
采用Hibernate作为持久层。
采用MySQL 作为数据库。
这一套方案是完全开源,免费的。
Spring是一个轻量级的,强大的应用程序框架,提供了许多开始一个应用程序所必要的元素。
Hibernate是一个成熟的持久层框架,使用它可以很好的分离业务逻辑和底层数据库的操作逻辑,提高开发效率。
而MySQL同样是一套优秀的,已经应用于很多场合的数据库系统。
利用以上这些技术,我们的系统就可以是低成本的,灵活的。