Activit第一个流程示例

发表时间:2018-04-10 17:57:27 浏览量( 39 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

一、单独使用 activiti 的模式

  activiti可以单独使用,也可以与spring集成,所以配置文件有所区别。 新建一个普通的maven项目导入activit的引擎包,因为没有和spring整合所以不需要spring的相关包了。

   <dependencies>
    <dependency>
      <groupId>org.activiti</groupId>
      <artifactId>activiti-engine</artifactId>
      <version>${activiti-version}</version>
    </dependency>

    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.4.3</version>
    </dependency>
     <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
  </dependencies>

2、在src/main/resources下面建立activiti引擎的基本配置:activiti.cfg.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<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:mysql://localhost:3306/activiti_db?useUnicode=true&amp;characterEncoding=utf8" />
        <property name="jdbcDriver" value="org.gjt.mm.mysql.Driver" />
        <property name="jdbcUsername" value="root" />
        <property name="jdbcPassword" value="123456" />

        <property name="databaseSchemaUpdate" value="false" />
        <property name="jobExecutorActivate" value="false" />
    </bean>

</beans>

3、设计流程图

(1)先新建流程图,在src/main/resources新建一个目录diagrams,右键点击新建,选择Activiti Diagram。

attcontent/79849c67-f5ed-487d-865f-2944bc53b9f2.png

(2)整个设计界面就分为流程图区,元素区和属性配置区,可视化的操作而已,大家可以自己多尝试一下就可以了。设计一下的流程图。就是要给StartEvent,Script Task、EndEvent,设计一下的流程图

attcontent/0c1fac9f-4c50-4d99-8f11-f755f73a471a.png

(3)选中Script Task,修改属性如下:

attcontent/65b6cd61-1eca-4dc2-b466-4021ec28258a.png

(4)Activit对测试驱动的设计非常好,可以直接生产对应的测试用例。右键选中改流程图 Activit >> Generate unit test,就可以生产流程测试代码了。然后就可以运行改测试类。得到结果如下:


二、整合spring

1、导入相关的包,除了基本的spring包之外,添加activit-spring的支持包。修改pom.xml

		<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${activiti-version}</version>
</dependency>


2、Spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx   
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop   
        http://www.springframework.org/schema/aop/spring-aop.xsd">


<bean id="dataSource"
class=" org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="org.gjt.mm.mysql.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/activiti_db?useUnicode=true&amp;characterEncoding=utf8">
</property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>

<!-- 配置spring的PlatformTransactionManager,名字为默认值 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 开启事务控制的注解支持 -->
<tx:annotation-driven
transaction-manager="transactionManager" />

<!-- 工作流引擎配置bean -->
<bean id="processEngineConfiguration"
class="org.activiti.spring.SpringProcessEngineConfiguration">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 使用spring事务管理器 -->
<property name="transactionManager" ref="transactionManager" />
<!-- 数据库策略 -->
<property name="databaseSchemaUpdate" value="true" />
<!-- activiti的定时任务开关 -->
<property name="jobExecutorActivate" value="true" />
<!-- 是否生成流程定义图片 -->
        <property name="createDiagramOnDeploy" value="false" /> 
<property name="activityFontName" value="宋体"></property>
<property name="labelFontName" value="宋体"></property>
</bean>


<!-- 流程引擎 -->
<bean id="processEngine"
class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration"
ref="processEngineConfiguration" />
</bean>

<!-- 资源服务service -->
<bean id="repositoryService" factory-bean="processEngine"
factory-method="getRepositoryService" />
<!-- 流程运行service -->
<bean id="runtimeService" factory-bean="processEngine"
factory-method="getRuntimeService" />
<!-- 任务管理service -->
<bean id="taskService" factory-bean="processEngine"
factory-method="getTaskService" />
<!-- 历史管理service -->
<bean id="historyService" factory-bean="processEngine"
factory-method="getHistoryService" />
<!-- 用户管理service -->
<bean id="identityService" factory-bean="processEngine"
factory-method="getIdentityService" />
<!-- 引擎管理service -->
<bean id="managementService" factory-bean="processEngine"
factory-method="getManagementService" />
<!-- 引擎管理service -->
<bean id="formService" factory-bean="processEngine"
factory-method="getFormService" />


</beans>

3、新建流程图,和上面的一样,就是改改名字而已,这里就不列出来了。


4、修改测试类,加入spring的测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "/springContext_activiti.xml" })
public class ProcessTestMySeondSpring2 {

private String filename = "D:\\study\\project\\JavaDayUpSource\\中级阶段\\补充知识点\\stuactivitspring\\src\\main\\resources\\diagrams\\MySeond.bpmn";


@Autowired
RepositoryService repositoryService;

@Autowired
RuntimeService runtimeService;

@Test
@Deployment(resources = { "/diagrams/MySeond.bpmn" })
public void testStart() throws Exception {
repositoryService.createDeployment().addInputStream("mySeondSpring.bpmn20.xml",new FileInputStream(filename)).deploy();
Map<String, Object> variableMap = new HashMap<String, Object>();
variableMap.put("name", "Activiti");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("mySeondSpring", variableMap);
assertNotNull(processInstance.getId());
System.out.println("id " + processInstance.getId() + " "
+ processInstance.getProcessDefinitionId());

}

运行代码,输出和上面的事例一样。