Activiti工作流学习总结(二)

来源:互联网 发布:域名国外申请做跳转 编辑:程序博客网 时间:2024/04/30 10:12

  • Activiti流程引擎配置

ProcessEngineConfiguration对象代表一个Activiti流程引擎的全部配置,该类提供一系列创建ProcessEngineConfiguration的静态方法

创建ProcessEngineConfiguration的静态方法

createProcessEngineConfigurationFromResourceDefault

createProcessEngineConfigurationFromResource

createProcessEngineConfigurationFromInputStream

createStandaloneProcessEngineConfiguration


ProcessEngineConfiguration及其子类

Activiti的命令拦截器

Activiti涉及命令模式、责任链模式

配置文件

Maven的pom.xml文件,Activiti的默认配置文件activiti.cfg.xml


History属性有点像log4j的日志输出级别,有四个值

none :不保存任何历史数据,流程执行过程中最高效

activity:保存流程实例与流程行为,其他数据不保存

audit:出activity级别会保存的数据外,还会保存全部的流程任务极其属性,audit为history的默认值

full:保存历史数据的最高级别,还会保存其他全部流程相关的细节数据(包括一些流程参数)


<!--数据库配置方式一:直接使用jdbc的各种属性来配置,全部交给了activiti-->

<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activi1" />

<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />

<property name="jdbcUsername" value="root" />

<property name="jdbcPassword" value="root" />


<!-- 数据库配置方式二:将数据库的各种配置交给DBCP,然后activiti只配置DBCP数据库 -->

<propertyname="dataSource"ref="dataSource"></property>

<!-- DBCP数据库 -->

<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource">

<propertyname="driverClassName"value="com.mysql.jdbc.Driver"></property>

<propertyname="url"value="jdbc:mysql://localhost:3306/activi1"></property>

<propertyname="username"value="root"></property>

<propertyname="password"value="root"></property>

</bean>

DBCP数据源配置

ProcessEngineConfiguration提供了一个DataSource属性

C3P0数据源配置

DBCP与C3P0的属性名称不一样



Activiti默认支持H2数据库,H2是使用Java语言编写的,使用H2数据库不需要安装服务器或者客户端,只需提供一个jar包即可使用

H2数据库更适合单元测试

H2数据库的下载安装

http://jingyan.baidu.com/album/afd8f4de4683af34e386e97f.html?picindex=2


没有配置databaseType属性,Activiti会使用Connection的getDatabaseMetaData方法获取数据库元数据,一旦配置了databaseType属性,将会以该值为准。



注意这三个值的区别

pom.xml文件中添加依赖(自动加载依赖的jar包)


  • 流程引擎的创建

ProcessEngine的创建

ProcessEngineConfiguration的buildProcessEngine方法

ProcessEngines的init方法

在Activiti中,一个ProcessEngine实例代表一个流程引擎,ProcessEngine保存着各个服务组件的实例

RepositoryService:提供一系列管理流程定义和流程部署的API

RuntimeService:在流程运行时对流程实例进行管理与控制

TaskService:对流程任务进行管理。例如任务提醒、任务完成和分配任务等

IdentityService:提供对流程角色数据进行管理的API,这些角色数据保罗用户组、用户以及他们之间的关系

ManagementService:提供对流程引擎进行管理和维护的服务

HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据


具体开发流程(代码实现)



开发中遇到的问题



流程图的后缀为

类关联关系


HelloWorld工作流开发

http://www.cnblogs.com/widow/p/4956013.html

http://www.cnblogs.com/longshiyVip/p/5107715.html

流程图

流程配置

http://topmanopensource.iteye.com/blog/1315341


  • 用户组与用户

IdentityService主要用于管理Activiti的身份数据模块,API包括用户组数据管理、用户数据管理、用户信息管理和关系数据管理

Group对象(接口)--GroupEntity(实体)

User对象(接口)--UserEntity(实体)


Activiti数据查询

Activiti提供API供开发者使用,每个服务组件的createXXXQuery方法可以获取 这些查询对象,返回一个Query实例

Query是全部查询对象的父接口,定义了若干个基础方法,包括设置排序方、数据量统计(count)、列表。分页和唯一记录查询

Activiti的查询API分为:

1 标准查询  以Java对象的方式,创建一个指定类型的Query对象,然后链式编程查询。  缺点:不支持复杂的查询。2 Nativit查询  采用标准SQL的方式查询,因此支持复杂的查询。  缺点:仅支持部分对象的查询。


asc:设置查询结果的排序方式为升序

count:计算查询结果的数据量

desc:设置查询结果的排序方式为降序

list:封装查询结果,返回相应类型的集合

listPage:分页返回查询结果

singleResult:查询单条符合条件的数据,如果查询不到,则返回null,如果查到到多条记录,则抛出异常

  • 流程存储

RepositoryService主要用于对Activiti中的流程存储的相关数据进行操作,包括对流程存储数据的管理、流程部署以及对流程的基本操作

Deployment对象(接口)--DeploymentEntity(实体)

DeploymentBuilder对象

流程定义管理

ProcessDefinition对象(接口),一个ProcessDefinition实例表示一条流程定义数据--ProcessDefinitionEntity(实体)

DeploymentQuery对象、ProcessDefinitionQuery对象

  • 流程任务管理

TaskService操作流程任务的API,包括任务的查询、创建与删除、权限设置和参数设置

Task(接口)--TaskEntity(实体)

一个Task实例表示流程中一个任务

Attachment(接口、任务附件)--AttachmentEntity(实体)

Comment(任务评论)、Event(接口)--CommentEntity(实体)

任务声明与完成:claim方法进行任务受理人指定(类似于setAssignee方法)、complete方法进行任务完成

  • 流程控制

RuntimeService主要用于管理流程在运行时产生的数据以及提供对流程进行操作的API

流程运行时产生的数据包括流程参数、事件、流程实例以及执行流,流程的操作包括开始流程、让流程前进等

Activiti中,启动一个流程后,会创建一个流程实例(ProcessInstance),每个流程实例至少会有一个执行流(Execution)

ProcessInstance是执行流(Execution)的子接口

  • 历史数据管理和流程引擎管理

HistoryService、ManagementService、HistoricProcessInstanceQuery

工作管理,JobQuery对象

  • 流程事件

事件的分类

按事件位置:开始事件、结束事件、中间事件、边界事件

按特性:Catching事件、Throwing事件

  • 流程任务

任务有:UserTask、ServiceTask、SendTask、ScripTask、ReceiveTask、ManualTask、BusinessTask

流程文件中全部XML元素均直接或者间接继承于BaseElement

FlowElement:FlowNode、SequenceFlow(流程节点和顺序流)

FlowNode:Activiti(行为)、Event(事件)、GateWay(关口)

Activiti的流程中表示行为的元素有三类:SubProcess(嵌入子流程)、CallActiviti(调用子流程)、Task(任务)

原创粉丝点击