工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。
工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
工作流总是以任务(Task)的形式驱动人处理业务或驱动业务系统自动完成作业。
适用行业
消费品行业,制造业,电信服务业,银证险等金融服务业,物流服务业,物业服务业,物业管理,大中型进出口贸易公司,政府事业机构,研究院所及教育服务业等,特别是大的跨国企业和集团公司。
具体应用
关键业务流程:订单、报价处理、采购处理、合同审核、客户电话处理、供应链管理等
行政管理类:出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报周报等凡是原来手工流转处理的行政表单。
人事管理类:员工培训安排、绩效考评、职位变动处理、员工档案信息管理等。
财务相关类:付款请求、应收款处理、日常报销处理、出差报销、预算和计划申请等。
客户服务类:客户信息管理、客户投诉、请求处理、售后服务管理等。
特殊服务类:ISO系列对应流程、质量管理对应流程、产品数据信息管理、贸易公司报关处理、物流公司货物跟踪处理等各种通过表单逐步手工流转完成的任务均可应用工作流软件自动规范地实施。
工作流的主要功能
工作流管理系统(Workflow Management System,WFMS)是定义、创建、执行工作流的系统。在最高层上,WFMS应能提供以下三个方面的功能支持:
建造功能:对工作流过程及其组成活动定义和建模;
运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度;
运行交互功能:指在工作流运行中,WFMS与用户(业务工作的参与者或控制者)及外部应用程序工具交互的功能。
工作模式
(1)基本模式
顺序模式 – 按照顺序执行各项活动(解释:工作流流程中的一个活动只有当另一个活动完成后才能进行。例子:当订单登记活动完成后,客户通知才可以进行)
并行分支模式 – 同时运行两个活动(解释:在流程中的一点一个控制线程分成可以并行执行的两个控制线程,允许两个活动可以同时运行。例子:同步模式 – 同步两个并行的执行线程;单选模式 – 从多条路径中选择一个执行;简单合并模式 – 合并两个二选一路径)
(2)高级分支与同步模式
多选模式 – 从多条执行路径中选出几条
同步合并模式 – 合并多条路径,如果有多条路径被选择,则进行同步;如果只有一条路径被选择,则进行简单合并
多合并模式 – 合并多条路径
鉴别器模式 – 合并多条路径而不进行同步,只执行一次后续活动
M中的N模式 – 合并多条路径,进行部分同步,只执行一次后续活动
(3)结构模式
任意循环模式 – 没有任何限制的执行工作流
隐含终断模式 – 如果没有事情可做,就结束
多实例模式
(4)基于状态的模式
推迟选择模式 – 执行两个可选线程中的一个,那个线程将被执行是隐含的
交替并行模式 – 两个活动可以以任何顺序执行,但不能并行进行
里程碑模式 – 当一个里程碑到达时,激发一个活动
取消模式(取消活动 – 取消当前活动;取消过程 – 取消该过程)
BPM-Business Process Management(业务流程管理),是一套达成企业各种业务环节整合的全面管理模式。
BPM包含:管理规范、软件工程
定义、发布、执行、监控、优化(迭代循环)
BPMN-Business Process Modeling Notation,业务流程建模与标注,包括这些图元如何组合成一个业务流程图(Business Process Diagram);讨论BPMN的各种用途,包括以何种精度来影响一个流程图中的模型。
BPMN定义了5种基础的元素分类
流对象(Flow Objects):事件(Events)、活动(Activitis)、关口(GateWays)
数据(Data):数据对象(Data Objects)、数据输入(Data Inputs)、数据输出(Data Outputs)、数据存储(Data Stores)
连接对象(Connecting Objects):顺序流(Sequence Flows)、消息流(Message Flows)、关联(Associations)、数据关联(Data Associations)
泳道(Swimlanes):池(Pools)、道(Lanes)
制品(Artifacts):组(Group)、注释(Text Annotation)
Activiti的特点
数据持久化(使用MyBatis,最优SQL语句)、引擎Service接口(7个)、流程设计器、原生支持Spring、分离运行时与历史数据
Activiti的应用
与系统集成方面应用(Mule、JBoss Drools)
在其他产品中应用
Activiti架构与组件
Activiti Engine:最核心的模块,提供对BPMN2.0规范的解析、执行、创建、管理(任务、流程实例)、查询历史记录并根据结果生成报表
Activiti Modeler:模型设计器,非Activiti公司设计,把需求转换成规范流程定义
Activiti Designer:功能和Activiti Modeler类似
Activiti Explorer:用来管理仓库、用户、组、启动流程、任务办理
Activiti REST:提供Restful风格的服务
将activiti-explorer.war拷贝到D:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\webapps
启动Tomcat,访问网址:http://localhost:8080/activiti-explorer
登录用户
简单请假流程
Activiti与jBPM5比较
Activiti5使用Spring进行引擎配置以及各个Bean的管理,综合使用IoC和AOP技术,使用CXF作为Web Services实现的基础,使用MyBatis进行底层数据库ORM的管理,预先提供Bundle化包能较容易的与OSGi进行集成,通过与Mule ESB的集成和对外部服务(Web Service、RESTful等)的接口可以构建全面的SOA(面向服务架构(Service-Oriented Architecture))应用。
jBPM5使用jBoss.org社区的大多数组件,以Drools Flow为核心组件作为流程引擎的核心构成,以Hibernate作为数据持久化ORM实现,采用基于JPA/JTA的可插拔的持久化和事务控制规范,使用Guvnor作为流程管理仓库,能够与Seam、Spring、OSGi等集成。
需要指出的是Activiti5是在jBPM3、jBPM4的基础上发展而来的,是原jBPM的延续,而jBPM5则与之前的jBPM3、jBPM4没有太大关联,且舍弃了备受推崇的PVM(流程虚拟机)思想,转而选择jBoss自身产品Drools Flow作为流程引擎的核心实现,工作流最为重要的“人机交互”任务(类似于审批活动)则由单独的一块“Human Task Service”附加到Drools Flow上实现,任务的查询、处理等行为通过Apache Mina异步通信机制完成。
环境配置检查
检查并安装JDK(Activiti5.11版本以后要求最低JDK为1.6)
检查安装Ant(版本为1.8或更高)
简单的流程图表Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。
Ant是纯Java语言编写的,所以具有很好的跨平台性。操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件是XML格式的文件,所以很容易维护和书写,而且结构很清晰。Ant可以集成到开发环境中。
http://www.cnblogs.com/huozhicheng/archive/2010/04/08/2533199.html
http://jingyan.baidu.com/article/e2284b2b45d193e2e6118dc6.html
http://www.cnblogs.com/yuzhongwusan/archive/2013/03/26/2982411.html
http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html
这个图表的本质,其实就是一个xml文件,Activiti bpmn图表对应的XML文件
创建流程图--->上传流程图---->部署流程---->启动流程----->处理流程业务
Activiti开发流程
相关操作类
Activiti数据库设计
Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头。并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。
可能会看到
ACT_EVT_*: EVT表示EVENT,目前只有一张表ACT_EVT_LOG,存储事件处理日志,方便管理员跟踪处理。
http://blog.csdn.net/hj7jay/article/details/51302829(Activiti数据库表结构(表详细版))