写这篇文章的目的主要是项目组开发第一次使用总结的一点小经验, 不足之处打架多多探讨.
1. 什么是工作流?
以请假为例, 现在大多公司的后台流程是这样的
a. 邮件提出申请 b. 上级回邮件同意或其他方式 c. 上级请假记录
d. 月底将请假上缴公司 e. 人事录电脑
采用工作流几乎是的公司请假流程是这样的
** 员工使用登录系统 -- 点击请假 -- 上级登录系统点击允许, 就这样, 一个请假流程就结束了!**
有人会问, 那上级不用向公司提交请假记录? 公司不用将记录录入电脑? 答案是, 用的但是这一切的工作都会在上级点击允许后自动运行!
这就是工作流技术
Georgakopoulos 给出的工作流定义是: 工作流是将一组任务组织起来以完成某个经营过程: 定义了任务的触发顺序和触发条件, 每个任务可以由一个或多个软件系统完成, 也可以由一个或一组人完成, 还可以由一个或多个人与软件系统协作完成!
二 工作流技术的优点
从上面的例子, 很容易看出
工作流系统, 实现了工作流程的自动化, 提高了企业运营效率改善企业资源利用提高企业运作的灵活性和适应性提高量化考核业务处理的效率减少浪费 (时间就是金钱)
而手工处理工作流程, 一方面无法对整个流程状况进行有效跟踪了解, 另一方面难免会出现人为的失误和时间上的延时导致效率低下, 特别是无法进行量化统计, 不利于查询报表及绩效评估
三 Java 开发者会为什么要学 Activity 工作流
在 Java 领域, JBPM 和 Activity 是两个主流的工作流系统, 而 Activity 的出现无疑将会取代 JBPM(Activity 的开发者就是从 Jbpm 开发者出来的)
四 Activity 工作流学习要点
1 个插件
在 Eclipse 中安装 Activity 插件, 让你可以在 Eclipse 中绘制 Activity 工作流图
1 个引擎
ProcessEngine 对象, Activity 工作流引擎这是 Activiti 工作的核心负责生成流程运行时的各种实例及数据监控和管理流程的运行
所有的操作都是从获取引擎开始的, 所以一般会把引擎作为全局变量
ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
1 个配置文件
activiti.cfg.xmlActiviti 核心配置文件, 配置流程引擎创建工具的基本参数和数据库连接池参数
5 种数据库表
Activiti 的后台是有数据库的支持, 所有的表都以 ACT_开头 第二部分是表示表的用途的两个字母标识用途也和服务的 API 对应
ACTRE*: 'RE'表示 repository 这个前缀的表包含了流程定义和流程静态资源 (图片, 规则, 等等)
ACTRU*: 'RU'表示 runtime 这些运行时的表, 包含流程实例, 任务, 变量, 异步任务, 等运行中的数据 Activiti 只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录 这样运行时表可以一直很小速度很快
ACTID*: 'ID'表示 identity 这些表包含身份信息, 比如用户, 组等等
ACTHI*: 'HI'表示 history 这些表包含历史数据, 比如历史流程实例, 变量, 任务等等
ACTGE*: 通用数据, 用于不同场景下, 如存放资源文件
23 张表
不同的表存放不同方面的数据, 有流程定义表任务结点表流程变量表任务历史表等等
5 项 Service
不同的 Service 类对应不同的功能
比如 TaskService, 是 activiti 的任务服务类可以从这个类中获取任务的信息
而 HistoryService, 则是 activiti 的查询历史信息的类在一个流程执行完成后, 这个对象为我们提供查询历史信息
7 项基本操作
设计流程图 (各种组件, 如连线用户任务网关)
流程定义增删改查
流程变量增删改查
启动流程定义
任务增删改查
完成任务
历史信息查询
总结: 只要是这些基本操作能够熟练一下, 跟项目框架整合的时候其实很好整合, 不会那么吃力!
来源: http://blog.51cto.com/itengxun/2088939