1 应用场景html
1.1 业务流程java
采购系统完成了企业的平常采购管理,包括采购单管理、采购单审核、入库、结算等模块。sql
用户角色包括:员工、部门经理、总经理、财务。数据库
基本业务流程以下:api
什么是业务?架构
用户的需求就是业务。数据库设计
什么是业务功能?编辑器
经过计算机技术实现用户需求,经过计算机研发软件功能,所开发的软件功能就是业务功能。工具
什么是业务系统?优化
实现用户需求,所开发的软件系统,叫业务系统。
什么是业务系统核心(灵魂)?
技术不是业务系统核心,业务流程是业务系统的核心。
什么是业务流程?
不少的功能组成一个流程,完成用户需求为目标,叫业务流程。
采购单表:pur_bus_order
采购单审核表:pur_bus_order_audit
用户表:pur_sys_user
角色表:pur_sys_role
用户角色关系表:pur_sys_user_role
1.4.1 流程简化为:
员工登陆系统
进入建立采购单
填写采购单信息,点击保存
进入采购单待提交页面
选择须要提交的采购单点击提交
l 保存采购单
提交后向pur_bus_order表写一条记录:
Status:写入1(未提交)
l 查询待提交采购单
查询pur_bus_order表的记录,只查询status值等于1(未提交)的记录
l 提交采购单
根据主键更新pur_bus_order表中的status字段,更新为2(部门经理审核中)
进入采购单审核页面查询待审核信息
点击审核,进入审核页面
输入审核信息
点击提交
查询pur_bus_order表的记录,只查询status值等于2 (部门经理审核中)的记录
l 提交审核信息
向pur_bus_order_audit表插入一条记录(审核信息)
根据主键更新pur_bus_order表的记录
当采购单审核不经过时:status值更新为3(部门经理审核不经过)
当采购单审核经过时,status值更新为4(总经理审核中)
总经理登陆系统
进入采购单审核页面查询待审核信息
点击审核,进入审核页面
输入审核信息
点击提交
l 采购单待审核信息
查询pur_bus_order表的记录,只查询status值等于4 (总经理审核中)的记录
l 提交审核信息
向pur_bus_order_audit表插入一条记录(审核信息)
根据主键更新pur_bus_order表的记录
当采购单审核不经过时:status值更新为5(总经理审核不经过)
当采购单审核经过时,status值更新为6(财务审核中)
参考部门经理审核实现
针对上边的流程变动以下:
须要修改部门经理审核采购单功能,判断采购金额:
若是大于1万元则更新pur_bus_order表中的status字段为4总经理审核中
若是小于等于1万元则更新pur_bus_order表中的status字段为6财务审核中
将上边的流程中总经理审核和财务审核位置颠倒,变为:
针对上边的流程变动须要将财务审核采购单和总经理审核采购单功能所有修改。
好比财务审核采购单修改:
审核经过更新pur_bus_order表中的status状态为4(总经理审核中)
业务系统是经过在采购单表中添加状态字段对业务流程进行管理,在采购单建立提交、部门经理审核、总经理审核、财务审核等操做时在程序代码中对状态值进行硬编码,若是业务流程变动须要修改代码,不利于系统维护。
若是咱们采用工做流能够解决上边的问题。
建议:
对于简单的业务流程,流程节点少,流程变化不大,建议业务系统本身管理流程,由于采用工做流将增长工做量和开发成本。
对于复杂的业务流程,流程节点多,流程变化较大,建议使用工做流,虽然增长了工做量和开发成本,可是将有利于系统扩展维护,下降系统维护成本,由于系统上线后主要的工做量是维护。
工做流(Workflow),就是经过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预约义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。
一个软件系统中具备工做流的功能,咱们把它称为工做流系统,一个系统中工做流的功能是什么?就是对系统的业务流程进行自动化管理,因此工做流是创建在业务流程的基础上,因此一个软件的系统核心根本上仍是系统的业务流程,工做流只是协助进行业务流程管理。即便没有工做流业务系统也能够开发运行,只不过有了工做流能够更好的管理业务流程,提升系统的可扩展性。
消费品行业,制造业,电信服务业,银证险等金融服务业,物流服务业,物业服务业,物业管理,大中型进出口贸易公司,政府事业机构,研究院所及教育服务业等,特别是大的跨国企业和集团公司。
1. 关键业务流程:订单、报价处理、采购处理、合同审核、客户电话处理、供应链管理等
2. 行政管理类:出差申请、加班申请、请假申请、用车申请、各类办公用品申请、购买申请、日报周报等凡是原来手工流转处理的行政表单。
3. 人事管理类:员工培训安排、绩效考评、职位变更处理、员工档案信息管理等。
4. 财务相关类:付款请求、应收款处理、平常报销处理、出差报销、预算和计划申请等。
5. 客户服务类:客户信息管理、客户投诉、请求处理、售后服务管理等。
6. 特殊服务类:ISO系列对应流程、质量管理对应流程、产品数据信息管理、贸易公司报关处理、物流公司货物跟踪处理等各类经过表单逐步手工流转完成的任务都可应用工做流软件自动规范地实施。
Alfresco软件在2010年5月17日宣布Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理BPM的专家 Tom Baeyens担任,Tom Baeyens就是原来jbpm的架构师,而jbpm是一个很是有名的工做流引擎,固然activiti也是一个工做流引擎。
Activiti是一个工做流引擎, activiti能够将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务流程由activiti进行管理,减小业务系统因为流程变动进行系统升级改造的工做量,从而提升系统的健壮性,同时也减小了系统开发维护成本。
BPM(Business Process Management),即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提升组织业务绩效为目的系统化方法,常见商业管理教育如EMBA、MBA等均将BPM包含在内。
企业流程管理主要是对企业内部改革,改变企业职能管理机构重叠、中间层次多、流程不闭环等,作到机构不重叠、业务不重复,达到缩短流程周期、节约运做资本、提升企业效益的做用。
好比下边的两个采购流程哪一个效率更高?
上边两个流程的区别在于第二个流程在执行时,若是采购金额在一万元之内再也不由总经理审批将比第一个流程缩短流程周期,从而提交效率。
再好比下边的例子,哪一个效率更高?
上边两个流程的区别在于第二个流程将交费和取药放在一块儿进行,这样致使的结果是此窗口的工做人员必须具有财务、药学专业知识,岗位强度加大,人员培训难度加大从而致使人员不易扩展,工做效率低下。
Bpm软件就是根据企业中业务环境的变化,推动人与人之间、人与系统之间以及系统与系统之间的整合及调整的经营方法与解决方案的IT工具。 一般以Internet方式实现信息传递、数据同步、业务监控和企业业务流程的持续升级优化,从而实现跨应用、跨部门、跨合做伙伴与客户的企业运做。经过BPM软件对企业内部及外部的业务流程的整个生命周期进行建模、自动化、管理监控和优化,使企业成本下降,利润得以大幅提高。
Bpm软件在企业中应用领域普遍,凡有业务流程的地方均可以bpm软件进行管理,好比企业人事办公管理、采购流程管理、公文审批流程管理、财务管理等。
BPMN(Business Process Model And Notation)- 业务流程模型和符号 是由BPMI(Business Process Management Initiative)开发的一套标准的业务流程建模符号,使用BPMN提供的符号能够建立业务流程。 2004年5月发布了BPMN1.0规范.BPMI于2005年9月并入OMG(The Object Management Group对象管理组织)组织。OMG于2011年1月发布BPMN2.0的最终版本。
具体发展历史以下:
BPMN 是目前被各 BPM 厂商普遍接受的 BPM 标准。Activiti 就是使用 BPMN 2.0 进行流程建模、流程执行管理,它包括不少的建模符号,好比:
Event 用一个圆圈表示,它是流程中运行过程当中发生的事情。
活动用圆角矩形表示,一个流程由一个活动或多个活动组成
一个bpmn图形的例子:
Bpmn图形实际上是经过xml表示业务流程,上边的.bpmn文件使用文本编辑器打开:
1) 部署activiti
Activiti是一个工做流引擎(其实就是一堆jar包API),业务系统使用activiti来对系统的业务流程进行自动化管理,为了方便业务系统访问(操做)activiti的接口或功能,一般将activiti环境与业务系统的环境集成在一块儿。
使用activiti流程建模工具(activity-designer)定义业务流程(.bpmn文件) 。
.bpmn文件就是业务流程定义文件,经过xml定义业务流程。
若是使用其它公司开发的工做做引擎通常都提供了可视化的建模工具(Process Designer)用于生成流程定义文件,建模工具操做直观,通常都支持图形化拖拽方式、多窗口的用户界面、丰富的过程图形元素、过程元素拷贝、粘贴、删除等功能。
向activiti部署业务流程定义(.bpmn文件)。
使用activiti提供的api向activiti中部署.bpmn文件(通常状况还须要一起部署业务流程的图片.png)
4) 启动一个流程实例(ProcessInstance)
启动一个流程实例表示开始一次业务流程的运行,好比员工请假流程部署完成,若是张三要请假就能够启动一个流程实例,若是李四要请假也启动一个流程实例,两个流程的执行互相不影响,就比如定义一个java类,实例化两个对象同样,部署的流程就比如java类,启动一个流程实例就比如new一个java对象。
5) 用户查询待办任务(Task)
由于如今系统的业务流程已经交给activiti管理,经过activiti就能够查询当前流程执行到哪了,当前用户须要办理什么任务了,这些activiti帮咱们管理了,而不像上边须要咱们在sql语句中的where条件中指定当前查询的状态值是多少。
用户查询待办任务后,就能够办理某个任务,若是这个任务办理完成还须要其它用户办理,好比采购单建立后由部门经理审核,这个过程也是由activiti帮咱们完成了,不须要咱们在代码中硬编码指定下一个任务办理人了。
7) 流程结束
当任务办理完成没有下一个任务/结点了,这个流程实例就完成了。
原文地址:https://blog.csdn.net/jiangeeq/article/details/80662456