现在的位置: 首页 > 综合 > 正文

Activiti 简易教程一 version5.10

2013年11月28日 ⁄ 综合 ⁄ 共 6163字 ⁄ 字号 评论关闭

一搭建环境

1.1   JDK 6+

activiti 运行在版本 6以上的 JDK上。转到 Oracle Java SE下载页面,点击按钮“下载
JDK
”。网页中也有安装说明。要核实安装是否成功,在命令行上运行 javaversion。将打印出安装的 JDK的版本。

1.2   Ant 1.8.1+

Ant[http://ant.apache.org/bindownload.cgi]下载页面下载最新稳定版的 Ant。解压文件,确保其 bin文件夹在操作系统的
path
下。在命令行上运行 antversion 
来检查 Ant是否安装成功。成功将打印安装的 Ant
版本。

1.3   Eclipse 3.7+

Eclipse的下载页面下载 Eclipse Classic(Eclipse JEE)版的 eclipse。解压下载的文件,然后就可以运行
eclipse
路径下的 eclipse 文件了。

下载地址:http://www.eclipse.org/downloads/packages/release/indigo/sr2

1.4   Activiti -eclipse designer插件安装

         在安装Activiti -eclipse designer插件前先安装maven插件,m2e(eclipse)插件在Install
New SoftWare
安装时会出现些问题,按以下步骤安装即可。

1.4.1 先安装GEF插件

maven插件安装的时候会依赖这个插件,在Eclipse -> help -> Install New SoftWare中安装,update site:http://download.eclipse.org/tools/gef/updates/interim/

1.4.2 安装SVN插件

Eclipse -> help -> Install New SoftWare中安装,update site:http://subclipse.tigris.org/update_1.6.x

1.4.3安装Maven插件

方式一:在线安装

         Eclipse -> help -> Install New SoftWare中安装,update site:http://nexus.tesla.io:8081/nexus/content/sites/m2e.extras/m2e/1.5.0/N/LATEST/

顺便eclipse m2e支持sitehttp://www.eclipse.org/m2e/download/

         如在线安装不成功,报[the selected did not contain any resources that can run on server maven project]错误,建议采用方式二安装。

方式二:本地安装

         下载maven eclipse-maven3-plugin插件(eclipse-maven3-plugin为本人CSDN上传)

Maven site: http://ant.apache.org/bindownload.cgi

eclipse-maven3-plugin site:
http://download.csdn.net/detail/yangyi22/5663245

         eclipse目录下建立myplugins目录,将eclipse-maven3-plugin解压后文件复制进去,建立links目录,新建maven.link文件(名字随意取)添加文本:

path=…/eclipse/myplugins/maven,即让eclipse启动时去寻找myplugins中的插件,如本人安装的路径:path=D:/Java~coding~site
/eclipse[indigo-jee]/eclipse/myplugins/maven

1.4.4 最后安装Activiti -eclipse designer

打开 HelpàInstall New Software。在如下面板中,点击Add按钮,然后填入下列字段:lNameActiviti
BPMN 2.0 designer

l Locationhttp://activiti.org/designer/update/

 

安装成功后,新建activiti项目,视图如下:

 

安装m2eclipse插件后,重启Eclipse,如提示

Eclipse is running in a JRE, but a JDK is required

  Some Maven plugins may not work when importing projects or updating source folders.

需要修改eclipse.ini文件,新增一项配置

-vm配置项必须在–vmargs配置项前,是因为执行到-vmargs配置项已经选择了一个默认的JVM了。

所以在–vmargs前面加上这一句

-vm  

C:/Program Files/Java/jdk1.6.0_20/bin/javaw.exe 

二开始activiti 5.10的第一个demo

2.1   建立activiti-demo工程,选择Activiti Project

 

创建成功后的项目:

 

activiti-demo项目添加activiti依赖包,项目右键Build Path->Configure Build Path->libraries -> Add External Jars选中…\activiti-5.10\setup\files\dependencies\libs下所有包添加即可。

2.2 activiti-demo工程的数据库整合为MySQL

         …\activiti-5.10\setup\build\activiti-cfg目录下的activiti.cfg.xml配置文件复制到项目src\main\resources目录下,修改数据库配置如下:

<!-- Database configurations -->

    <propertyname="jdbcUrl"

value="jdbc:mysql://localhost:3306/test?autoReconnect=true"/>

    <propertyname="jdbcDriver"

       value="com.mysql.jdbc.Driver"/>

    <propertyname="jdbcUsername"value="root"/>

    <propertyname="jdbcPassword"value="root"/>

    <!-- Database configurations -->

    <propertyname="databaseSchemaUpdate"value="true"/>

    <!-- job executor configurations -->

    <propertyname="jobExecutorActivate"value="false"/>

2.3 设计activiti-demo工程的流程

在该项目的src/main/resource/diagrams下右键创建Activiti diagram,文件名为:DemoProcess.bpmn

 -->

 

此时进入Activiti Diagram Editor,在空白处点一下,下边属性栏中设置idnameid就是这个流程的key,后边启动流程的时候使用到。

 

注意:Activiti 5.8升级到5.9以后,xxx.bpmn20.xmlxxx.png已不默认生成,仅仅是生成xxx.bpmn文件,
xxx.bpmn
中的定义内容就如xxx.bpmn20.xml一样。

        另外,快捷菜单:“Create deployment artifacts”和“Import
BPMN20 file
”,在5.9以后去掉了。

如需设计完成流程后自动生成一个png图片按如下处理

l  保存无法生存png图片按以下处理

Window –> Preferences -> Activiti ->Save勾选即可

或者手动操作Activiti Designer打开xxx.bpmn文件,然后右键选择Export
Diagram...
,在弹出的对话框中设置图片的参数即可,一般使用默认就可以了。

在设计编辑器中保存DemoProcess.bpmn后的项目视图如下:

 

测试类代码 
DemoProcessTest.java

package main.java;

import java.io.FileInputStream;
import java.util.List;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

/**
 * Activiti 5.10 demo
 * @author BruceQin
 * 
 */
public class DemoProcessTest {
	// diagrams实际路径
	private static String realPath = 
			"D:\\Java~coding~site\\J2EE-IDE\\Workspace\\workspace[indigo-jee]" +
			"\\activiti-demo\\src\\main\\resources\\diagrams";
	public static void main(String[] args) throws Exception {
		// 创建 Activiti流程引擎
		ProcessEngine processEngine = ProcessEngineConfiguration
				.createProcessEngineConfigurationFromResource("activiti.cfg.xml")
				.buildProcessEngine();
		
		// 取得 Activiti 服务
		RepositoryService repositoryService = processEngine.getRepositoryService();
		RuntimeService runtimeService = processEngine.getRuntimeService();

		// 部署流程定义
		repositoryService
				.createDeployment()
				.addInputStream("DemoProcess.bpmn",new FileInputStream(realPath + "\\DemoProcess.bpmn"))
				.addInputStream("DemoProcess.png", new FileInputStream(realPath + \\DemoProcess.png))
				.deploy();
		
		// 启动流程实例
		ProcessInstance instance = processEngine
				 .getRuntimeService().startProcessInstanceByKey("DemoProcess");
		String procId = instance.getId();
		System.out.println("procId:"+ procId);
		
		// 获得第一个任务
		TaskService taskService = processEngine.getTaskService();
		List<Task> tasks = taskService.createTaskQuery().taskDefinitionKey("firstTask").list();
		for (Task task : tasks) {
			System.out.println("Following task is: taskID -" +task.getId()+" taskName -"+ task.getName());
			// 认领任务
			taskService.claim(task.getId(), "testUser");
		}
		 
		// 查看testUser 现在是否能够获取到该任务
		tasks = taskService.createTaskQuery().taskAssignee("testUser").list();
		for (Task task : tasks) {
			System.out.println("Task for testUser: " + task.getName());
			// 完成任务
			taskService.complete(task.getId());
		}
		System.out.println("Number of tasks for testUser: "
				+ taskService.createTaskQuery().taskAssignee("testUser").count());
		

		// 获取并认领第二个任务
		tasks = taskService.createTaskQuery().taskDefinitionKey("secondTask").list();
		for (Task task : tasks) {
			System.out.println("Following task is : taskID -" +task.getId()+" taskName -"+ task.getName());
			taskService.claim(task.getId(), "testUser");
		}
		
		//完成第二个任务结束结束流程
		for (Task task : tasks) {
			taskService.complete(task.getId());
		}
		
		// 核实流程是否结束
		HistoryService historyService = processEngine.getHistoryService();
		HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();
		System.out.println("Process instance end time: " + historicProcessInstance.getEndTime());
	}
}

教程一完毕。

Create By :http://blog.csdn.net/yangyi22/article/details/9225849 

 

 

抱歉!评论已关闭.