一、创建一个ProcessEngine
Activiti的流程引擎是通过activiti.cfg.xml这个文件进行配置的。这种方式区别于你用spring的方式去创建一个流程引擎。那么,关于用spring的方式去创建流程引擎,我们后面再讲。
获得一个ProcessEngine最简单的方式,是用org.activiti.engine.ProcessEngine这个类。
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
|
它会自己在classpath中寻找activiti.cfg.xml这个文件,并且根据文件中的配置去构造一个引擎。下面的代码片段显示了一个配置的例子。也给你展示了一个详细的配置属性。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" /> <property name="jdbcDriver" value="org.h2.Driver" /> <property name="jdbcUsername" value="sa" /> <property name="jdbcPassword" value="" /> <property name="databaseSchemaUpdate" value="true" /> <property name="jobExecutorActivate" value="false" /> <property name="mailServerHost" value="mail.my-corp.com" /> <property name="mailServerPort" value="5025" /> </bean> </beans>
实际上,这个XML的配置信息,是一个Spring的配置信息。但是这不意味着Activiti只能应用在Spring的环境中。通过spring的依赖注入,我们能够很简单的生成一个引擎。
ProcessEngineConfiguration这个对象,也能用配置文件去编程创建。也能用一个不同的bean的Id去创建。
ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault(); ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource); ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource, String beanName); ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(InputStream inputStream); ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName);
不用配置文件,默认的也能获得一个ProcessEngineConfiguration这个对象。
ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
所有的这些ProcessEngineConfiguration.getXXX()方法都返回一个ProcessEngineConfiguration对象。在调用buildProcessEngine()操作之后,一个ProcessEngine对象被创建。
ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration() .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE) .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000") .setJobExecutorActivate(true) .buildProcessEngine();
二、ProcessEngineConfiguration实体
activiti.cfg.xml这个文件必须包含一个id是processEngineConfiguration的实体。
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
这个bean实体会被用于构造ProcessEngine对象。有不止一个类能够定义这processEngineConfiguration。这些类代表着不同的使用环境和一些默认的设置。选择一个尽可能匹配你的环境的类,通过减少属性的数量去配置一个引擎是最好的一种练习。下面的这些类是能直接获取得到的。
- org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration:这个流程引擎被用于标准的方式。Activiti会留意到事物。
- org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration:这是一个为单元测试来说很方便的一个类。Activiti会留意到事物。默认使用一个H2 类型的内存的数据库。当引擎被初始化或者关闭的时候,这个数据库也会被创建或者消除。当用这个类的时候,通常来说不用额外的配置。
- org.activiti.spring.SpringProcessEngineConfiguration:用于在spring环境中的创建流程引擎。
- org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration:当引擎运行在单机模式和Jta事物下会被用到。
三、数据库配置
Activiti引擎会识别两种方式去配置数据库。第一种是定义数据库用到的JDBC 属性:
- jdbcUrl:数据库的JDBC连接地址。
- jdbcDriver:数据库依赖的驱动。
- jdbcUserName:连接数据库的用户名。
- jdbcPassword:连接数据库的密码。
- jdbcMaxActiveConnections:连接池在任何时候能包含的最大活动数量,默认值是10。
- jdbcMaxIdleConnections:连接池中能够存在的最大空闲连接数。
- jdbcMaxCheckoutTime:
- jdbcMaxWaitTime:这是一个级别很低的设置。它能让连接池打印日志,并且能够在比平时连接时间长的时候,再试图获取一个连接。
数据库配置的例子:
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" /> <property name="jdbcDriver" value="org.h2.Driver" /> <property name="jdbcUsername" value="sa" /> <property name="jdbcPassword" value="" />
另外,javax.sql.DataSource的实现类也能用于创建数据库.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/activiti" /> <property name="username" value="activiti" /> <property name="password" value="activiti" /> <property name="defaultAutoCommit" value="false" /> </bean> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> ...
注意:Activiti没有这样一个类库会去创建一个这样的数据源,因此,你必须在你的类路径下有这样的一个类库。
四、支持的数据库
列表里面展示的都是activiti支持的数据库
h2 | 1.3.168 | jdbc:h2:tcp://localhost/activiti | Default configured database |
mysql | 5.1.21 | jdbc:mysql://localhost:3306/activiti?autoReconnect=true | Tested using mysql-connector-java database driver |
oracle | 11.2.0.1.0 | jdbc:oracle:thin:@localhost:1521:xe | |
postgres | 8.1 | jdbc:postgresql://localhost:5432/activiti | |
db2 | DB2 10.1 using db2jcc4 | jdbc:db2://localhost:50000/activiti | |
mssql | 2008 using sqljdbc4 | jdbc:sqlserver://localhost:1433/activiti |
五、创建数据库的表
最简单的创建你数据库的表的方法就是:
- 在你的类路径下添加一个activiti-engine的诸多jar包。
- 添加一个合适的数据库驱动。
- 在你的类路径下添加一个activiti.cfg.xml配置文件,指向你的数据库。
- 执行DbSchemaCreate的main方法。
activiti.{db}.{create|drop}.{type}.sql
db是任何一种activiti支持的数据库,type是
- engine:引擎执行必备的表。
- identity:这些表包含着用户、组和用户组的成员。当引擎需要默认的身份管理时,会选择性的用到这些表。
- history:这一部分表包含着历史和审计信息。
Activiti中数据库表的名字都是以ACT_开头。第二部分是两个字母用来区分不同的表。这样用也是匹配API。
- ACT_RE_*:'RE'代表repository。有这样前缀的表包含'static'的信息,比如流程定义和流程资源(图片、规则)..。
- ACT_RU_*:'RU'代表runtime.这些表是运行中的表,包含了流程实例中实时的数据,用户任务,变量,工作等。当流程实例执行的时候,Activiti之存储实时的数据,当一个流程实例结束的时候,会删除掉记录。这样保证了这些表小且快。
- ACT_ID_*:'ID'代表identity。这些表包含了身份信息,比如用户、组等。
- ACT_HI_*:'HI'代表history。这些包含了历史数据,比如过去的流程实例、变量、任务等。
- ACT_GE_*:general 数据。这些数据用在各种各样的案例中。
在数据库升级之前,一定要确保已经备份完成。
通常来说,每当一个流程引擎创建,都会检查一下版本。特别是在你的应用或者Activiti应用包启动的时候经常会出现升级。如果Activiti提示你,你的库版本和数据库表的版本有区别,这时候,其实是抛了异常。
要升级数据库,你不得不在你的activiti.cfg.xml文件中把下面的属性配置在文件的开头部分。
<beans ... > <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- ... --> <property name="databaseSchemaUpdate" value="true" /> <!-- ... --> </bean> </beans>
因此,在你的classpath中你要选择一个合适的数据库驱动为你的数据库。在你的应用程序中升级数据库,或者启动一个新的Activiti的版本,并且要指向一个包含老版本的数据库。databaseSchemaUpdate设置为true,是指当提示类库和DB不同步时,Activiti首先会自动升级DB到你的新版本中。
不过你也可以通过运行升级DDL作为替代。你可以在activiti下载页面,找到数据库升级脚本,运行这个升级脚本。
八、计划执行器
JobExecutor是一个管理一系列线程的组件,它会执行异步消息和定时器。对于单元测试的情况来说,它和多个线程在一起很不方便。因此,API允许通过API去查询并且执行计划,以致于计划的执行能被一个单元测试去控制。为了避免被计划执行器(JobExecutor)干扰,也能关闭它。
默认的, 当流程引擎启动的时候,JobExecutor会被激活。详细说明如下,
<property name="jobExecutorActivate" value="false" /> |
设置为false,就是指当流程引擎启动的时候,你不想JobExecutor激活。
九、邮件服务配置
配置一个邮件服务不是必须的,这个根据你自己的需要设置。Activiti支持在业务流程中发送邮件。要想实际的发送一封邮件,必须配置一个正确的SMPT邮件服务。
下面列出的属性能够在activiti.cfg.xml文件中配置:
mailServerHost | no | The hostname of your mail server (e.g. mail.mycorp.com). Default is localhost
|
mailServerPort | yes, if not on the default port | The port for SMTP traffic on the mail server. The default is 25 |
mailServerDefaultFrom | no | The default e-mail address of the sender of e-mails, when none is provided by the user. By default this isactiviti@activiti.org |
mailServerUsername | if applicable for your server | Some mail servers require credentials for sending e-mail. By default not set. |
mailServerPassword | if applicable for your server | Some mail servers require credentials for sending e-mail. By default not set. |
mailServerUseSSL | if applicable for your server | Some mail servers require ssl communication. By default set to false. |
这个要结合任务进行说明,后续再详细进行讲解。
十、历史配置
历史存储的配置是按照特定需求自选配置的。这需要你微调一下配置去影响对引擎的历史数据处理能力。
<property name="history" value="audit" /> |
十一、在表达式和脚本中暴露配置的实体类
默认的,你在activiti.cfg.xml中配置信息指定的所有实体类,或者在你Spring自己的配置文件中所有实体类,都能用在表达式和脚本中。如果你想在你的配置文件中限制实体类的可见性,你可以在你的流程引擎中去配置一个名为bean的属性。在ProcessEngineConfiguration中,这些实体类的属性都是一个map。当你指定这个属性的时候,只有被指定的类才会对表达式或者脚本可见。这些类会以你在map中指定的名字暴漏出来。
十二、部署缓存配置
所有的流程定义都是高速缓存存储器(在他们被解析之后),为了去避免和数据库冲突。因为流程定义的数据不会变化,所以每次一个流程定义的时候,都会需要到数据库。默认的,在缓存中流程定义的数量没有限制。下面的例子是告诉我们如果去限制缓存中流程定义的数量。
<property name="processDefinitionCacheLimit" value="10" /> |
十三、日志
Activiti 5.12中,SLF4J被作为日志框架,代替了之前的java.util.logging。所有的日志(activiti/spring/mybatis...)都会经过SLF4J过滤,并且允许在你的选择的logging-implementation中进行选择。
默认的,在activiti-engine的依赖中现在没有SFL4J-binding的jar包。为了应用这个日志框架,你需要手动添加到你的项目中。
相关推荐
- **配置**:安装完成后,需要在Eclipse的"Preferences"中配置Activiti的相关设置,例如指向Activiti的jar库和数据库连接信息。 ### 4. 使用流程 1. **创建新项目**:在Eclipse中新建一个Activiti工程,包含流程...
activiti6.0 用户指南中文版activiti6.0 用户指南中文版activiti6.0 用户指南中文版
本指南聚焦于 Activiti 5.4 版本,该版本在之前的版本基础上进行了优化和增强,以提供更好的性能和用户体验。 在Activiti 5.4中,用户可以体验到以下关键知识点: 1. **流程定义**:Activiti 使用 BPMN 2.0...
本用户指南针对 Activiti 5.4 版本,旨在帮助开发者和新手深入理解其核心功能和用法。 在Activiti 5.4中,首先介绍的是它的安装与配置。这一部分会涵盖如何下载 Activiti 的发行版,如何在 Java 开发环境中集成,...
在开始使用 Activiti 之前,阅读这份文档至关重要,因为里面可能包含了关于如何配置环境变量、添加依赖到项目、启动服务等关键信息。 在实际应用中,Activiti 可以与 Spring 框架、Hibernate ORM 等技术结合,构建...
《Activiti API 用户指南》是针对企业流程自动化框架Activiti的重要参考资料,主要涵盖了Activiti的API使用、功能特性和实践案例。本指南旨在帮助开发者更好地理解和应用Activiti,提升工作效率,实现高效的企业流程...
Activiti6是一款强大的工作流引擎,...以上内容是Activiti6用户指南的概述,涵盖了从安装、配置到实际开发和部署的所有关键步骤。对于Java开发人员来说,掌握这些知识将有助于有效利用Activiti6构建高效的工作流系统。
通过本用户指南,读者将学习到如何配置和使用 Activiti 5.4,创建和执行业务流程,以及如何利用 Activiti 实现企业的业务自动化。同时,了解 Activiti 的最佳实践和注意事项,能够有效地规避潜在的问题,提升流程...
2. **安装与配置**:详细讲解如何在Java环境中安装Activiti7,包括依赖库的引入、数据库的配置以及环境的搭建。 3. **模型设计**:阐述BPMN 2.0规范,如何使用Activiti7提供的建模工具或代码方式创建流程模型,如...
总结,Activiti 6.x 用户指南是开发者和流程管理人员的重要参考资料,涵盖了从安装配置到实际应用的全方位指导,对于理解和使用 Activiti 进行业务流程自动化具有极大价值。通过深入学习和实践,可以充分利用 ...
Activiti 5.4 用户指南
### Activiti6 用户指南知识点详解 #### 一、概述与许可 - **许可协议**:Activiti6基于Apache V2许可证发布,这意味着它遵循开放源代码许可证条款,允许用户自由使用、修改和分发该软件及其衍生作品。 - **下载...
以上提到的内容概述了Activiti 5.13用户指南的主要知识点和操作指南,涵盖了从环境配置、基础入门、API和服务使用、Spring集成、BPMN模型构建、表单处理、历史数据查询、工具使用到REST API集成的全方位知识体系。...
### Activiti 5.8 用户指南关键知识点解析 #### 一、概述 **Activiti** 是一个开源的工作流引擎,用于构建业务流程自动化应用。它提供了简单易用的方式来定义业务流程,并通过流程引擎来执行这些定义。从 **...
在Activiti6.0用户手册中,我们主要关注以下几个核心概念和知识点: 1. **流程定义 (Process Definitions)**:流程定义是流程模型的蓝图,包含了流程的静态信息,如各个步骤、任务、决策点等。它们是通过BPMN 2.0...
### Activiti用户指南知识点总结 #### 1. Activiti简介 Activiti是一个轻量级、可扩展的流程引擎,它允许您创建企业级流程和工作流应用。Activiti遵循Apache V2许可证发布,源代码托管在GitHub上,允许用户查看、...
以上只是Activiti6用户指南中的部分要点,完整的指南涵盖了更广泛的配置选项、高级特性、事件处理、监听器和BPMN元素的详细使用。通过深入学习和实践,你可以利用Activiti6构建高效、灵活的业务流程管理系统。
Activiti是一个开源的工作流和业务流程管理系统(BPMN),它基于...以上就是根据提供的文件内容总结的Activiti5.8用户指南相关知识点,这些知识点覆盖了Activiti的基本概念、配置方法、API使用以及BPMN的设计与应用。
这份"Activiti 5.4 用户指南(中文版)"是针对中国开发者和使用者的详细指导资料,旨在帮助他们更好地理解和应用 Activiti。 1. **BPMN 2.0**:Business Process Model and Notation 2.0 是一种图形化的表示方法,...