Activiti入门教程一(初步认识Activiti)

最近把Activiti给研究了一下,因此想写一下有关工作流方面的知识,把自己的学习心得也给分享一下,省的在学习的道路上,走很多弯路。


什么是Activiti?

如果要看专业的解释的话,就百度一下就OK了,在这里只说一下小编的认识。


在生活中,我们都见过一些类似的流程式的操作,比如学校的请假流程、公司的业务流程……,由于这些流程,都是可变的,根据设计模式的思想,我们把这些可变的业务流程式的操作,也单独抽离出来,做一个系统来维护,提高了系统的灵活性和可维护性。


一般来说,如果没有Activiti的话,自己动手来做的话,也可以实现这些流式的操作的,只不过现在有成型的封装好的API,我们直接加以利用即可。


我们试想一下,如果让我们来维护一套请假流程的话,是不是需要设计各种的数据库表,然后再各种的数据库表之间的维护。而关于Activiti的学习,主要是学习这23张数据库表,每张数据库表都有不同的含义。这就引出了工作引擎的概念。在Activiti中,ProcessEngine对象是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。


对于各种复杂的流程,如何来办呢?Activit中可以通过图形化的形式来画出我们需要的流程操作,业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)。如果理解的深刻的话,也可以通过代码的形式来描述。 基本上要说的就这么多了,下面来搭建我们的准备环境吧


准备环境

activiti5 软件环境

1)  JDK1.6或者更高版本

2)  支持的数据库有:h2, mysql, oracle, postgres, mssql, db2等。

3)  支持activiti5运行的jar包

4)  开发环境为Eclipse3.7或者以上版本,myeclipse为8.6版本

4.2:相关资源下载

1)            JDK可以到sun的官网下载

http://www.oracle.com/technetwork/java/javase/downloads/index.html

2)            数据库,例如:mysql可以在官网上下载。

http://www.mysql.com

3)            activiti也可以到Activiti官方网站下载得到。

http://activiti.org/download.html

4)   Eclipse3.7或者MyEclipse8.6也可以到相应的网站上获得下载。



另外还需要安装流程设计器(eclipse插件),直接在elicpse中搜索图中插件即可





添加Activiti5的jar包

在activiti-5.13->wars目录下是一些示例项目,解压activiti-rest项目,导入activiti-rest目录中WEB-INF\lib下所有包。添加到classpath中。

由于我们使用的是Mysql数据库,Mysql数据库的链接驱动Activiti官方包中并没有提供,需要我们自己导入。手动导入mysql-connector-java.jar,添加到classpath下。



初始化数据库操作

下面就来初始化数据库,等会就可以看到经常用的23张数据库表了。

第一种方式

<span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">@Test
	public void createTable_23(){
		ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
		//定义连接mysql数据库
		configuration.setJdbcDriver("com.mysql.jdbc.Driver");
		configuration.setJdbcUrl("jdbc:mysql://localhost:3306/test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8");
		configuration.setJdbcUsername("root");
		configuration.setJdbcPassword("");
		/**
		 * 	  public static final String DB_SCHEMA_UPDATE_FALSE = "false";操作activiti23张表的时候,如果表不存在,就抛出异常,不能自动创建23张表
  
			  public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";每次操作,都会先删除表,再创建表
			
			  public static final String DB_SCHEMA_UPDATE_TRUE = "true";如果表不存在,就创建表,如果表存在,就直接操作
		 */
		configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
		//activiti核心对象(流程引擎)
		ProcessEngine processEngine = configuration.buildProcessEngine();
		System.out.println("processEngine:"+processEngine);
	}
	</span></span>



第二种方式

在第一种方式中,我们看到有很多关于数据库连接操作的信息,为了方便Activiti为我们提供了activiti.cfg.xml的配置方式,直接把此文件放置到Classpath下即可,配置文件的信息如下

<span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"><beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

	<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8"></property>
		<property name="jdbcUsername" value="root"></property>
		<property name="jdbcPassword" value=""></property>
		<!-- true没有表就创建表,有表就直接操作 -->
		<property name="databaseSchemaUpdate" value="true"></property>
	</bean>

</beans></span></span>

然后我们的创建方式就变为了如下

<span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">@Test
	public void createTable_23FromXml(){
//		ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
//		ProcessEngine processEngine = configuration.buildProcessEngine();
		ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml")
									.buildProcessEngine();
	
		System.out.println("processEngine:"+processEngine);
	}</span></span>

上述只是经常用的两种方式来创建ProcessEngineConfiguration,还有其他的一些创建,如下

public static ProcessEngineConfiguration createProcessEngineConfigurationFromResourceDefault() {
    return createProcessEngineConfigurationFromResource("activiti.cfg.xml", "processEngineConfiguration");
  }


  public static ProcessEngineConfiguration createProcessEngineConfigurationFromResource(String resource) {
    return createProcessEngineConfigurationFromResource(resource, "processEngineConfiguration");
  }


  public static ProcessEngineConfiguration createProcessEngineConfigurationFromResource(String resource, String beanName) {
    return BeansConfigurationHelper.parseProcessEngineConfigurationFromResource(resource, beanName);
  }
  
  public static ProcessEngineConfiguration createProcessEngineConfigurationFromInputStream(InputStream inputStream) {
    return createProcessEngineConfigurationFromInputStream(inputStream, "processEngineConfiguration");
  }


  public static ProcessEngineConfiguration createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName) {
    return BeansConfigurationHelper.parseProcessEngineConfigurationFromInputStream(inputStream, beanName);
  }


  public static ProcessEngineConfiguration createStandaloneProcessEngineConfiguration() {
    return new StandaloneProcessEngineConfiguration();
  }


  public static ProcessEngineConfiguration createStandaloneInMemProcessEngineConfiguration() {
    return new StandaloneInMemProcessEngineConfiguration();
  }


关于这些,我们会在后面的博客中提到。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值