activiti学习(八)

93 阅读1分钟

image.png 持续创作,加速成长!这是我参与「掘金日新计划 · 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会解析配置信息,并做相应的初始化逻辑,最终返回给我们的就是可以使用的流程引擎。