前言:
我为什么要学jbpm这些新技术?入行快一年,发现自己只会在框架内做个增删改查,很是厌倦了。所以我利用业余时间来学点新知识,
读过书的人都知道:学习要做笔记。在百度,google里面你是搜索不到
很通俗的话语来解释jbpm这个概念的,为什么百家讲坛,明朝的那些事情那么吸引人?
什么是工作流?有什么作用?用在什么地方?
我们一个项目里面增删改查,不是工作流,因为这是一个人做的,不需要跟
别人合作。
一个人做的事情就不是工作流,所谓工作流就是工作在
流动,意味着需要很多人合作才能完成这个工作。
比如下订单处理,先下订单->订单确认->财务收款->库管配货->运送。
这里面涉及的人先是客户,系统管理员,财务,仓库管理员,司机。
在oa,电子政务应用的非常广泛。
举一个没用工作流的时候经常碰到的问题的情况:
发布一条新闻需要审核,假如新闻存储在news表里面。
假如a发布了这么一条新闻,那么news表多了一条记录,但是状态是0(未审核)。
假如b审核通过了,前台可以显示了。
假如a修改了这条新闻,那这条记录是不是就应该存储在news表里面呢?
可以还是不可以?行还是不行?成还是不成?对还是不对?
这条记录的状态是1(审核通过的),而审核通过了的可以显示。
但是修改的这条记录必须要审核,这不矛盾吗?
这里我先伏下一笔。
工作流系统的主要概念
流程定义:预先定义的业务流转逻辑
流程实例:业务的一次实际流转过程
参与者:任务的执行者
活动:组成流程定义的节点
活动实例:组成流程实例的元素
流转:从一个节点到另外一个节点这一行为
工作列表:当前需要办理的任务集合
工作流引擎:工作流的核心组件,对流程实例,任务实例以及其状态进行管理
ProcessDefine:定义了流程的业务逻辑,包含业务节点和流转。是有向图结构。
ProcessInstance:ProcessDefine执行期间的体现,包含了流程定义被解释后的一些信息,诸如开始时间,介绍时间和其他相关联的信息
Task:是ProcessDefine的组成部分,定义了活动的具体内容
TaskInstance:Task被解释执行时的信息,开始时间,结束时间,
参与者id,还有create(跟流程实例的创建时间一样),start(开始
时间,就是参与者开始执行任务),end。
Actor:活动的参与者,jbpm目前只需要actor的id,对actor的具体解释是
有业务应用层负责,任务创建时可以指定任务的参与者,也可以不指定
,在一般的系统中,不建议采用jbpm的identity组件
Token:是一个指针(运行期的概念),代表着一条执行路径,指向当前流程中正在
执行的节点,在实例的运行期间,tokens可能是一树形结构
,同一时刻,可能存在多个token,但是只有一个root token
学习工作流的切入点就是从以下这几个方面:
如何编写流程定义
如何部署流程
如何加载流程
如何启动流程
如何执行任务
如何完成任务
开源的工作流有:jbpm,shark,openflow
商业版本:bea公司的wli ibm公司的wps 国内最著名的是西安协同数码,普元
未完,待续(每天挤公交几个小时,此时已经快11点了,此时不睡更待何时?明天继续)