示例

发表时间:2018-04-10 17:57:27 浏览量( 4 ) 留言数( 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、修改测试类

@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());

	}