持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
Activiti的使用
在上一篇文章中我们将Activit的web界面搭起来了,通过web端,我们可以用拖拽的形式生成流程定义,并在界面上观察流程的走向。但是开发过程中,大多时候都是通过Activiti的Java API使用流程引擎的,接下来看看API形式的调用是怎么样的。
创建流程引擎
Activiti流程引擎是通过一个名为activity.cfg.xml的XML文件配置的。注意,如果使用Spring方式构建流程引擎,这种形式就不是特别优雅。获得ProcessEngine最简单的方法是使用org.activity.engine.ProcessEngines类,如下:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine()
这种方式将会在类路径中查找activity.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="asyncExecutorActivate" value="false" />
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
需要注意的是,文件中的XML实际上是Spring风格的配置。但是这不意味着Activit只能基于Spring使用!Activiti只是使用Spring的注入和解析功能来构建引擎。我们还可以用编程的方式,通过ProcessEngineConfiguration来构建流程引擎。如下的代码所示:
ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource);
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource, String beanName);
ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(InputStream inputStream);
ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName);
API提供了一系列的方法帮助我们构建流程引擎,可以用Spring的Bean定义,或者是文件输入流,亦或者是默认的从类路径下查找默认的配置文件。Activit会解析配置信息,并做相应的初始化逻辑,最终返回给我们的就是可以使用的流程引擎。