Activiti系列四: 管理流程定义

一设计流程定义文档

1.1 流程图

 

1.2 bpmn文件

BPMN 2.0根节点是definitions节点。 这个元素中,可以定义多个流程定义(不过我们建议每个文件只包含一个流程定义, 可以简化开发过程中的维护难度)。 一个空的流程定义看起来像下面这样。注意,definitions元素 最少也要包含xmlns 和 targetNamespace的声明。 targetNamespace可以是任意值,它用来对流程实例进行分类。

说明:流程定义文档有两部分组成:

(1)bpmn文件

流程规则文件。在部署后,每次系统启动时都会被解析,把内容封装成流程定义放入项目缓存中。Activiti框架结合这个xml文件自动管理流程,流程的执行就是按照bpmn文件定义的规则执行的,bpmn文件是给计算机执行用的

(2)展示流程图的图片

在系统里需要展示流程的进展图片,图片是给用户看的

二 部署流程定义

2.1 部署流程定义方法一(classpath路径加载文件)

说明:

(1)先获取流程引擎对象:在创建时会自动加载classpath下的activiti.cfg.xml

(2)首先获得默认的流程引擎,通过流程引擎获取了一个RepositoryService对象(仓库对象)

(3)由仓库的服务对象产生一个部署对象配置对象,用来封装部署操作的相关配置。

(4)这是一个链式编程,在部署配置对象中设置显示名,上传流程定义规则文件

(5)向数据库表中存放流程定义的规则信息。

(6)这一步在数据库中将操作三张表:

1. act_re_deployment(部署对象表)

存放流程定义的显示名和部署时间,每部署一次增加一条记录

2. act_re_procdef(流程定义表)

存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。

注意:当流程定义的key相同的情况下,使用的是版本升级

3. act_ge_bytearray(资源文件表)

存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。两个文件不是很大,都是以二进制形式存储在数据库中。

2.2 部署流程定义方法二 部署流程定义(zip格式文件)

压缩成zip格式的文件,使用zip的输入流用作部署流程定义

三 查看流程定义

查询流程定义的信息

结果:

再部署一次运行结果为:

可以看到流程定义的key值相同的情况下,版本是从1开始逐次升级的

流程定义的Id是【key:版本:生成ID】

       说明:

  1. 流程定义和部署对象相关的Service都是RepositoryService。
  2. 创建流程定义查询对象,可以在ProcessDefinitionQuery上设置查询的相关参数
  3. 调用ProcessDefinitionQuery对象的list方法,执行查询,获得符合条件的流程定义列表
  4. 由运行结果可以看出:

Key和Name的值为:bpmn文件process节点的id和name的属性值

    5. key属性被用来区别不同的流程定义。

    6. 带有特定key的流程定义第一次部署时,version为1。之后每次部署都会在当前最高版本号上加1

    7. Id的值的生成规则为:{processDefinitionKey}:{processDefinitionVersion}:{generated-id}, 这里的generated-id是一个自动生成的唯一的数字

    8. 重复部署一次,deploymentId的值以一定的形式变化规则act_ge_property表生成

四  查询最新版本的流程定义

五 总结 

Deployment   部署对象

1、一次部署的多个文件的信息。对于不需要的流程可以删除和修改。

2、对应的表:

  act_re_deployment:部署对象表

  act_re_procdef:流程定义表

  act_ge_bytearray:资源文件表

  act_ge_property:主键生成策略表

 

ProcessDefinition 流程定义

1、解析.bpmn后得到的流程定义规则的信息,工作流系统就是按照流程定义的规则执行的。

 

 

猜你喜欢

转载自blog.csdn.net/wx5040257/article/details/114066221