一个工作流系统开发文档(含调研、需求分析、设计)
(完整word版)工作流分析及设计

工作流系统需求分析及设计业务过程描述:工作流是一种反映业务流程的计算机化的、实现经营过程集成与经营过程自动化而建立的可由工作流管理系统执行的业务模型。
工作流起源于生产组织和办公自动化领域,其目的是将现有工作分解,按照一定的规则和过程来执行并监控,提高效率,降低成本。
下图是用户使用工作流系统的业务过程:准备需求过程设计并形成模型I模型发布并开始使用I对业务运转过程进行管理、监控和统计业务模型描述:流程定制工具、流程监控与管理和工作流运行服务四个部分组成,下图是系统构件图:<<可执行>>流程定制工具<<可执行>>客户端系统功能划分:工作流管理系统是指运行在一个或多个工作流引擎的软件上用于定义、实现和管理工作流运行的一套软件,从用户建模的过程来看在建立阶段功能主要是工作流过程和相关活动的定义和建模,在运行阶段包括运行流程的监控、管理以及执行过程中的人机交互等。
工作流管理系统由流程定制工具、流程监控与管理、工作流运行服务和客户端交互四个部分组成,整个系统的使用者可以分为四种:系统管理员、流程设计人员、流程管理人员、普通用户。
下图是整个工作流管理系统的顶层用例:系统组成:工作流管理系统由客户端、工作流服务接口1第一部分流程定制工具本部分主要完成企业信息流中业务过程的图形化建模,定制工具提供丰富的图形化元素、简单易懂的建模方法以及完善的模型管理方式。
流程定制用例图:打开流程模型参与者:流程设计者。
前置条件:流程定制工具已经打开。
后置条件:被选择的流程模型中的内容被展开。
步骤序列:1.打开流程模型列表或新建流程模型文件。
2.选择流程模型文件名称。
3.展开流程模型中的设计内容。
保存流程模型参与者:流程设计者。
前置条件:某个流程模型已经被打开,并且被修改。
后置条件:修改过的流程模型存到了物理文件中。
步骤序列:1•保存流程模型到物理文件中。
删除流程模型参与者:流程设计者。
一个工作流系统开发文档(含调研、需求分析、设计)

目录开场白 (2)工作流技术调研: (2)工作流的概念 (2)工作流相关术语 (2)工作流系统功能概述 (3)工作流运行的模式列举 (5)业内工作流产品调研 (6)Mocha BPM产品 (6)中软工作流产品调研 (7)天翔myApps工作流产品调研 (8)我们的需求分析 (10)系统模块划分 (11)工单系统的功能性需求列表 (11)需求变更总结 (14)设计方案 (16)数据库设计 (16)关于hibernate实现持久层和session的管理 (18)自定义表单的设计 (19)自定义流程的设计 (20)消息模块的设计 (22)后记 (23)开场白我告诉自己要有专业精神,可是。
我真的好业余。
以前我不知道,我到底适不适合学计算机,如今我有了答案,以前我不知道我能在这个行业取得多大的成就,如今我仍然没有答案,只是当我有一天我发觉枪毙一个毫无常理可言的可以称为意识流的bug 的时候,我觉得这种感觉仿佛是自己成为了侦探小说里的主角一般,故事的结局是聪明才智让迷离的云雾消散,那一刹那的欢喜就像是一个你坚持了很久的英雄梦想霎那间以一种最满意的方式开出花来。
也许很少有人能理解这宗近乎疯狂的感觉,而对于一个每天对着计算机将近9个小时的IT者来说,我的确需要这样的近乎自恋的情感变化或者说异样的愉悦体验。
情也抒了,于是该变身回一个真正的IT者,紧以此贴记录在过去的半年里我所从事的高尚职业,如果你要问我我从事的什么高尚职业,它为何高尚,那我会告诉你原因就是我装逼,自恋,而又认为有体会到了一些与众不同的感觉。
首先自量底牌,我只是一个普通的大四学生,通过自己的努力保研成功,大四之后经常浪迹在javaEye中,此贴可称为处女贴。
本贴的意义在于自我终结,顺便带着抛砖引入的使命,再顺便让我打破万事开头难的俗套,一边督促自己常常自我总结,自我提高。
关键词:工作流jbpm 动态流程可定制表单。
本文就以我在过去三个月开发的一个完整流程系统为背景,总结在我知识所及范围里的工作流系统开发经验,贻笑大方想来是不可避免的,还望各位牛人指正,俺只是一个放低了姿态的学生。
工作流需求分析范文

工作流需求分析范文工作流是指按照一定的规则和顺序,将工作任务自动化地分配和处理的一种管理方式。
在现代企业中,工作流已经成为提高工作效率、降低成本和提高管理水平的重要工具。
因此,需求分析工作流是非常重要的,下面是对工作流需求分析的一些思考。
首先,需求分析需要考虑工作流的应用场景。
工作流可以应用于各个行业和部门,包括采购、销售、生产等。
因此,在需求分析时需要明确工作流的具体应用场景,以确定所需的功能和流程。
其次,需求分析需要考虑工作流的基本功能。
工作流的基本功能包括任务分配、任务处理、流程控制等。
任务分配功能可以根据一定的规则和条件将任务自动分配给相应的人员;任务处理功能可以将任务通过电子邮件、即时通讯等方式通知给相应的人员,并监控任务的处理进度;流程控制功能可以根据工作流的规则和条件,自动调整任务的处理顺序和分配方式。
此外,需求分析还需要考虑工作流的扩展性和灵活性。
工作流的扩展性是指能够根据不同的需求和业务变化,灵活地调整工作流的规则和流程。
例如,可以根据不同的部门和岗位设置不同的任务分配规则;可以根据不同的任务类型设置不同的任务处理流程。
灵活性是指工作流能够适应不同的工作方式和工作环境,提供方便快捷的任务处理方式。
例如,可以通过移动设备随时随地处理任务;可以通过云计算、大数据等技术支持工作流的扩展和升级。
最后,需求分析还需要考虑工作流的安全性和稳定性。
工作流涉及到企业的重要数据和业务流程,因此安全性是非常关键的。
在需求分析时需要考虑工作流的权限控制、数据加密、数据备份等功能,确保工作流系统的安全性。
同时,工作流的稳定性也是需求分析的关键点,需要考虑系统的性能、可靠性和容错性,以确保系统能够持续运行和提供良好的用户体验。
综上所述,工作流需求分析是一个复杂而关键的过程。
需要考虑工作流的应用场景、基本功能、扩展性和灵活性、安全性和稳定性等方面的需求,以确保工作流系统能够满足企业的实际需求,并提高工作效率、降低成本、提高管理水平。
工作流程管理系统的设计与开发研究

工作流程管理系统的设计与开发研究随着现代企业的不断发展,各种各样的业务流程和流程管理问题日益突出,而传统的手工处理方式已经无法满足企业的需要。
因此,开发一种有效的工作流程管理系统已经成为现代企业高效管理的必要手段。
本文将探讨工作流程管理系统的设计与开发研究。
一、工作流程管理系统的定义工作流程管理系统(Workflow Management System,WMS),是指一种能自动化地协调和执行业务流程的软件系统,它通过将各个处理节点相连成一个整体,使得企业能够更高效和便捷地管理其业务流程。
二、工作流程管理系统的特点1、高度自动化:WMS能够自动化地执行、协调和监控所有步骤,包括流程、任务和消息等。
从而可以大大提高企业的效率和质量。
2、集成管理:WMS能够集成企业各种不同管理系统,可以根据实际业务需求进行扩展、升级和优化。
3、灵活性和可伸缩性:WMS可以根据企业业务流程的变化和需求进行灵活配置,同时具有可扩展性能够自由地扩展和部署节点。
4、可视化:WMS通过可视化图示,使业务流程更加清晰直观,便于企业管理层进行全面咨询。
三、WMS开发流程WMS的开发流程主要包括需求分析、功能规划、架构设计、开发实现和上线维护等多个步骤。
1、需求分析:在该阶段,主要分析和采集用户的业务需求,对流程进行深入细致的分析和调研,力求设计最优的工作流程方案。
2、功能规划:在需求分析的基础上,分析和整理出各项功能信息,明确功能的优先级顺序和关联性,明确各项功能需求的实现方式。
3、架构设计:在功能规划的基础上,设计WMS的总体架构和流程。
可以根据业务流程和需求实现设计,并加以优化和扩展。
4、开发实现:在架构设计的基础上,利用合适的技术进行代码实现,同时进行测试、集成和部署等步骤。
5、上线维护:在成功部署WMS后,需要进行稳定运维和维护,同时不断进行升级和优化,以保证WMS的高效运行和质量保证。
四、WMS开发技术WMS的开发技术主要包括以下三个方面:1、流程建模技术:流程建模技术是WMS设计的原型,常用的建模技术主要有BPMN、EPC等。
工作流详细设计范文

工作流详细设计范文工作流是指将一系列相互关联的任务组织起来并按照一定的逻辑顺序进行处理的一种管理方法。
它可以帮助组织将复杂的业务流程合理化、规范化,并提高工作效率和质量。
下面,将对工作流的详细设计进行阐述。
1.工作流模型设计:在进行工作流详细设计之前,需要根据具体的业务需求对工作流模型进行设计。
工作流模型主要包括:业务流程图、流程节点、流程路径和任务职责等。
业务流程图是对工作流程的可视化展示,通过它可以清晰地描述整个流程的执行过程。
流程节点是指流程中的每一个环节,它包括开始节点、中间节点和结束节点。
流程路径是指流程节点之间的逻辑关系,它描述了任务的流向和先后顺序。
任务职责是指每个节点对应的具体工作内容和执行者。
2.工作流引擎选择:工作流引擎是实现工作流的核心技术,它负责流程的调度和执行。
根据具体的业务需求和技术要求,可以选择合适的工作流引擎,如Activiti、JBPM等。
在选择引擎时,需要考虑其对标准工作流规范的支持程度、性能、扩展性和稳定性等因素。
3.工作流活动设计:根据业务需求和流程模型,对每个流程节点进行详细的设计。
具体包括:任务类型、任务输入和输出、工作表单、任务流转条件等。
任务类型可以分为人工任务和系统任务,人工任务需要人员参与,系统任务由系统自动执行。
任务输入和输出是描述任务的输入参数和输出结果。
工作表单是任务执行过程中需要填写的表单,可以采用HTML、XML或其它格式。
任务流转条件是指任务流向下一个节点的触发条件,可以根据业务规则设置。
4.工作流路由设计:工作流的路由决定了任务的流向和流转顺序。
可以采用条件路由、并行路由、顺序路由等方式进行设计。
条件路由是根据条件判断来选择下一个节点,例如根据一些字段的值来判断流向的下一个节点。
并行路由是指任务在多个节点间同时进行,例如多个审批人同时进行审批。
顺序路由是指任务按照一定的顺序进行,例如按照先后顺序依次执行。
5.工作流异常处理设计:工作流执行过程中可能会出现各种异常情况,需要进行异常处理。
工作流需求功能调研文档

找文件是否会比较频繁?找文件是否比较麻烦?
问题:
能否及时找到文件的最新版文件?能否及时找到文件的某个时期的老版文件?
问题:
是否考虑文件保密性,希望文档能有效控制,不至于文件外流?
问题:
文件的生效是否需要审批,文件的审批流程是否规范?
问题:
出现品质异常的频率是否频繁?(废品、退货)
问题:
主要引起品质异常的原因?
问题:
是否有较多应收帐款收款不及时?应收帐款的跟进力度?
问题:
目前的车辆有多少?平均一个月的车辆的杂费大概有多少?车辆使用的申请是否规范?车辆发生的费用是否方便统计?
问题:
员工的周报、日报如何管理?执行效率怎样?
问题:
是否有较多外点办公人员?单据的审批是否比较麻烦?
人事类:
问题:
目前公司有那些人事流程是控管的?(请假、加班、招聘申请、转正、离职申请)
问题:
目前公司是否有使用人事薪资系统?
问题:
目前公司统计薪资是如何统计的?薪资的统计时如何统计请假和加班的信息?
问题:
公司内部人员流动是否频繁?月流动量大概在多少?
问题:
对员工的资料、档案管理是否正规?
品管、工程类:
问题:
目前公司需要通过系统控管的文件有多少个?
问题:
文件管理的方式是通过纸面的方式还是通过电子版本共享目录的方式?
工作流需求功能调研
客户名称:
说明:
该文档于调研顾问到客户现场调研时的参考文件。
客户代表签字:
DCMS代表签字
确认日期
行政类:
问题:
目前公司主要的业务表单流程有哪些?(采购、订单、联络单、客户投诉、品质异常、样品申请、应收帐款跟催、车辆处理)
工作流设计方案

工作流设计方案随着企业的发展,业务量的增加和复杂度的提高,日常工作流程也变得越来越繁琐和复杂。
为了提高工作效率和质量,工作流设计方案应运而生。
本文将从以下四个方面来探讨如何设计一个有效的工作流方案。
一、需求分析与流程规划首先,我们需要对业务场景进行深入分析,了解存在的问题和痛点,明确需求。
在此基础上,进行流程规划,确定流程的起始点和终止点,明确每个环节的职责和输入输出,设计合理的流程路径,避免流程环节的重复或漏洞。
例如,为了提高采购流程的效率和减少误差,我们可以通过对流程的规划和优化来达到目标。
比如,我们可以将采购分为预采购、采购、验收、入库等环节,规范化采购流程,明确每个环节的职责和要求。
同时,为了方便工作人员的操作,并提高信息的可追溯性,我们可以采用电子采购系统,将每个环节的信息都记录在数据库里,避免重复录入和信息丢失。
二、流程自动化与信息化流程自动化和信息化是工作流设计方案中不可或缺的一部分。
通过技术手段的应用,尽可能将流程自动化,规范化,并实现信息化管理。
例如,在人事管理方面,我们可以通过电子化和自动化的方式,让人事部门在招聘、录用、考核等方面提高效率和精度。
可以通过电子简历筛选系统,自动智能匹配招聘需求,提高招聘效率;可以利用HR人事信息系统,自动更新员工档案和考核记录,提高管理效率和信息的准确性。
三、规范化与评估优化规范化是一个好的工作流设计方案中必不可少的一个环节。
工作流的设计需要满足规范化的要求,保证每个环节的可重复性和可衡量性。
评估和优化是一个工作流方案的持续推进过程。
通过不断地对流程的评估和优化,可以不断地提高工作效率和质量,实现最优流程的建立和不断优化。
四、沟通与培训一个好的工作流设计方案需要有充分的沟通和培训。
沟通和培训是不可或缺的,需要针对不同的流程和岗位进行针对性的培训,确保每个操作人员都能够熟练掌握流程,避免操作错误和漏洞。
例如,在企业内部培训方面,我们可以通过内部互动教育平台或者内部信息发布系统的方式,定期推送工作流程的更新和维护事项,以及对操作人员的培训和考试,为流程的有效推进提供了必要的保障。
工作流设计方案

工作流设计方案一、背景介绍在现代化工作环境中,高效的工作流程可以帮助企业提高生产力和竞争力。
本文将针对某企业的工作流程进行设计方案的制定,确保工作流的顺畅与高效。
二、需求分析通过与企业管理人员的沟通了解,我们确定了以下几个需求:1. 提高工作效率:减少重复劳动和繁琐的手动操作,提高工作效率。
2. 优化流程:简化流程,减少不必要的环节和手续,提高工作效率和准确性。
3. 实现自动化:通过引入自动化流程和工具,减少人为干预的错误和延迟。
三、设计方案基于上述需求分析,我们设计了如下工作流设计方案:1. 流程梳理首先,我们对企业现有的工作流程进行了全面梳理,确定了各个环节和相关人员的职责和协作关系。
在流程梳理中,我们强调了以下几个原则:- 简化:尽量减少审批环节和手续,简化流程。
- 并行:推动并行处理,减少等待时间。
- 路由:合理规划流程路由,确保信息准确传递。
- 监控:引入流程监控机制,及时发现问题并加以解决。
2. 技术支持为了实现自动化及高效工作流程,我们将引入以下技术支持:- 工作流引擎:选用先进的工作流引擎,支持可视化设计工具和流程画布,方便流程定制和管理。
- 自动化工具:根据具体业务需求,引入自动化工具,实现部分流程的自动化处理,如自动化审批流程、自动化数据处理等。
- 数据库集成:将工作流引擎与企业现有的数据库系统进行集成,确保数据的准确性和一致性。
3. 流程测试和调优在设计工作流程后,我们将组织相关人员进行流程测试,并通过引入模拟数据,模拟真实工作场景,检验工作流的准确性和可行性。
同时,我们会密切关注员工对新工作流的反馈,及时收集并改进可能存在的问题,进行持续的流程优化。
四、预期效果通过上述的工作流设计方案,我们预期能够达到以下效果:1. 提高工作效率:简化流程、减少重复工作和手动操作,提升工作效率。
2. 优化流程:减少环节、简化手续,提高流程的准确性和可靠性。
3. 实现自动化:引入自动化工具和流程,提高处理的自动化程度,减少人为干预。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录开场白 (2)工作流技术调研: (2)工作流的概念 (2)工作流相关术语 (2)工作流系统功能概述 (3)工作流运行的模式列举 (5)业内工作流产品调研 (6)Mocha BPM产品 (6)中软工作流产品调研 (7)天翔myApps工作流产品调研 (8)我们的需求分析 (10)系统模块划分 (11)工单系统的功能性需求列表 (11)需求变更总结 (14)设计方案 (16)数据库设计 (16)关于hibernate实现持久层和session的管理 (18)自定义表单的设计 (19)自定义流程的设计 (20)消息模块的设计 (22)后记 (23)开场白我告诉自己要有专业精神,可是。
我真的好业余。
以前我不知道,我到底适不适合学计算机,如今我有了答案,以前我不知道我能在这个行业取得多大的成就,如今我仍然没有答案,只是当我有一天我发觉枪毙一个毫无常理可言的可以称为意识流的bug 的时候,我觉得这种感觉仿佛是自己成为了侦探小说里的主角一般,故事的结局是聪明才智让迷离的云雾消散,那一刹那的欢喜就像是一个你坚持了很久的英雄梦想霎那间以一种最满意的方式开出花来。
也许很少有人能理解这宗近乎疯狂的感觉,而对于一个每天对着计算机将近9个小时的IT者来说,我的确需要这样的近乎自恋的情感变化或者说异样的愉悦体验。
情也抒了,于是该变身回一个真正的IT者,紧以此贴记录在过去的半年里我所从事的高尚职业,如果你要问我我从事的什么高尚职业,它为何高尚,那我会告诉你原因就是我装逼,自恋,而又认为有体会到了一些与众不同的感觉。
首先自量底牌,我只是一个普通的大四学生,通过自己的努力保研成功,大四之后经常浪迹在javaEye中,此贴可称为处女贴。
本贴的意义在于自我终结,顺便带着抛砖引入的使命,再顺便让我打破万事开头难的俗套,一边督促自己常常自我总结,自我提高。
关键词:工作流jbpm 动态流程可定制表单。
本文就以我在过去三个月开发的一个完整流程系统为背景,总结在我知识所及范围里的工作流系统开发经验,贻笑大方想来是不可避免的,还望各位牛人指正,俺只是一个放低了姿态的学生。
工作流技术调研:工作流的概念●工作流是一类能够完全或部分自动执行的经营过程,它根据一列过程规则,文档、信息或任务能够在不同的执行者之间进行传递与执行(WfMC)●工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行(WfMC)●工作流起源于办公自动化领域,我们可以把工作流系统比作生产流水线,不同的部门和加色根据权限的划分执行相应的任务。
工作流相关术语●Activity定义:在一个进程中,形成一个逻辑步骤的一次工作。
包括manual activity和automatedactivity用法:一个进程可以由多个对整个商业进程的可行性有帮助的有逻辑顺序关系的activity组成;每个activity一般都是流程引擎的最小工作单元●Process Instance定义:一个单独制订的进程的表现用法:由工作流管理系统管理或创建每个进程实例表现了一个单独制定的实例,使用它自己的进程实例数据,并可独立控制或检查完成或终止●Participant定义:它是一个资源,执行由一个工作流活动实例表达的工作.这个工作一般都是指定到工作流参与者的一个或多个工作条目用法:通常是指人力资源,但不能简单概念的包括智能代理(intelligent agent)之类的机器资源,一个工作流参与者可以在商业进程中直接定义,或者由组织或角色实体定义●Task定义:在一个进程实例中的一次活动的一次工作用法:一个活动代表性的都产生一个或多个工作条目,这些工作条目组成了用户着手的任务工作流系统功能概述●流程定制工具提供了一个流程建模的可视化开发环境,让用户能够使用图形化拖拽的方式,方便、直观、有效地设计、修改和维护企业业务流程,并且所见即所得,极大地提高了易用性(如下图)●管理监控工具提供可视化的平台查看流程历史,对流程任务进行查询等工作。
(如下图)●工作流客户端与应用我们工作流提供了一个客户端的应用,提供了用户任务列表、签收任务、完成任务等等,但是在具体的项目中,可以根据用户的需求需要重新做一个应用,核心接口已经提供了,只需做一个用户需要的展现形式●工作流引擎引擎支持多种流程运行模式,运行时对流程和活动进行有效管理,根据流程向参与者分配任务,并对管理和监控功能提供有效支持。
引擎通过接口与工作流工具、外部应用和第三方工作流引擎进行交互,向系统提供工作流执行服务。
(如开源的jbpm流程引擎)工作流运行的模式列举●顺序(Sequence )-- 顺序执行任务;;●并行分叉(Parallel Split)-- 并行执行任务;●同步(Synchronization)-- 同步两个并行执行的线程;●排它选择(Exclusive Choice)-- 从多个路径种选择一个执行;●简单合并(Simple Merge)-- 合并两个可选执行路径●任意循环(Arbitrary Cycles)-- 执行工作流图时无任何环路限制;●绝对终止(Implicit Termination)-- 若无事可做时则终止。
给出一个简单的流程建模图:业内工作流产品调研Mocha BPM产品(注:以下信息基于mocha bpm产品白皮书整理)➢Mocha bpm产品特点介绍:●提供了业务流程设计、运行、维护和优化的工具,同时将提供应用引擎的方式来支撑企业核心业务应用系统,灵活地与业务系统的应用集成,实现业务流程管理系统的自动化。
●全面整合业务流程,摩卡BPM 以其强大的工作流引擎为依托,依靠完备的数据交换平台,完全按照业务流程本身的流转规则,并以全程的自动化方式,实现跨机构、跨业务、跨部门、跨应用的流程整合。
●完整的生命周期管理建模:由业务人员完全以业务视角,使用流程图来描述一个业务流程,即配即用的动态定制自动化:定义好的流程,在BPM 系统中自动执行,完全废弃传统的纸张,流程的传递无需人工干预。
搜索:BPM 中的流程和数据呈指数增加,系统能对流程状态、运行情况等数据信息进行索引和监控,实现快速查找。
管理:能够可视化地监控流程的执行情况,对流程执行中出现的意外进行处理。
开发:简化工作中的流程步骤,满足随时变化的业务需求,降低了二次开发的难度,提高开发的效率。
整合:BPM 不仅仅是由人来参与,通过整合Mocha BPM Integration,部分活动也可以由IT 系统来参与,达到自动化的目的。
Mocha BPM 通过对组织内外的流程管理,提高了组织的客户满意度,提升了组织的竞争能力,加强了组织的适应变化能力,使组织在竞争之中始终具有领先的优势。
Mocha BPM 帮助企业,让流程成为一个企业的竞争优势。
它是经过多年的项目经验积累不断完善的成熟的BPM产品。
中软工作流产品调研功能列表:●监控管理监控流程状态管理流程运行查看流转历史提供考核依据●流程定制图形化定制符合行业规范独立运行修改便捷●组织结构图形化定制符合行业规范独立运行修改便捷●任务管理查询任务办理任务委托任务分派任务发起会签天翔myApps工作流产品调研主要关注点:(流程自定义,表单自定义,任务自定义)流程定义:拖拽方式的流程定义节点上任务自定义:表单自定义:通过三部自定义过程,该工作流软件可以实现业务无关的流程建模方式。
作为一个初出茅庐的学生,第一次来到公司面前做技术调研报告,胸里貌似没有了成竹,只是老师的一番话顿时让我淡定了不少,都把他们当作傻子吧,此时此刻以我的智商以定能唬得主那帮最可爱的人。
当时的情形我已经记不住了,所有的只言片语在脑海里聚拢成一句话:我们的需求三句话:流程可定制,表单可定制,流程可监控,小孙作为绝对主力,千万不要在需求上再出问题,你看我刚才叫什么外卖来着,明明是鸡腿,到手的却成了鸡翅,并且三个月后给出第一个版本。
于是我在此记住了这个人,他叫张总,在公司里一直强调着业务。
如今回过头来想想,这也是我第一次做技术调研,对于一个全新的领域这一环节显得如此的重要,再次打个比如,就像你去一个陌生的城市读书,这一步就像你的一个亲戚或朋友一样,虽然你之后总是要一个人去面对这个陌生的城市,但你朋友或亲戚的存在让你感到了一种叫做方向的东西。
我们以后的设计方案,貌似就是对上述几个产品加上joffice 加上shareidea 的整合,或者说是博取众长,虽然并不确定采众长之后我们取得了站在巨人肩膀上一般的成功。
我们的需求分析系统模块划分工单系统的功能性需求列表功能类别功能名称、标识符描述需求变更总结设计方案数据库设计流程ER说明:由于考虑到支持流程可定制,我们开始想过给jbpm的一些表中加入一些字段以达到支持灵活的需求,但这牵涉到对jbpm开源框架进行重构,并且我们对jbpm也没重源码上进行解读,所以我们放弃这一种办法。
我们采用的设计思想如上述E—R 模型,我们通过对jbpm 数据库结构的一些研究并进行了一些包装,我们抽象出流程定义,流程实例活动节点,并分别用外键关联jbpm 中相应的实体,本质上就是对jbpm 进行了一下包装,把业务数据都放在这些自定义的实体上,jbpm 的数据表负责流程逻辑相关的数据。
用户ER说明:用户模块对权限粒度要求比较细:总体来说就是用户与用户组多对多关联,用户组相当于角色控制了基本的权限,资源与资源组多对多关联,并且资源组与用户组关联,这样就间接实现了资源的权限控制,这在小型的系统中是比较常用的用户管理数据模型了。
关于hibernate实现持久层和session的管理在我们的数据库建模中,存在很多一对多的关系,一开始我们使用hibernate全部实现了所以的关联关系,在实际的调试中由于我们对延迟加载的不精通我们在很多部分都使用了非延迟加载,其中我们遇到了几次内存溢出的问题,这主要是由于非延迟加载把所有的相关数据都一次加载出来了,比如查找流程类型的时候几乎把数据库查询了一遍。
无奈之下我们把延迟加载用上,结果出现这样或那样的问题(主要是学艺不精),最后我们干脆放弃使用hibernate来管理1对多的关系,我们把model 对象里面集合属性全部去掉使用一个外键字段,有关联关系的我们就多写一个service 方法,这样我们发现虽然增加了访问数据的次数但每次获得的数据都是最小最实用的。
在此我的经验就是如果你对hibernate 不是那么精通建议放弃hibernate 1对多关系维护。
在一开始的session管理中,我们使用的是threadlocal方式,为每个连接保持一个session,在实际的操作中,经常出现一个session中有duplicated model 情况,并且一些问题时而出现时而不出现,还是由于我们对hibernate session 具体原理不是很清楚,在调试过程中吃尽了苦头,最后我们采用的方法是,我们在service 层自己管理session,每个sevice 方法对应一个session。