安装Activiti -eclipse designer
打开 Help -->Install New Software。在如下面板中,点击Add按钮,然后填入下列字段:lName:Activiti BPMN 2.0 designer
l Location:http://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,在空白处点一下,下边属性栏中设置id和name,id就是这个流程的key,后边启动流程的时候使用到。

注意:Activiti 5.8升级到5.9以后,xxx.bpmn20.xml和xxx.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;
-
-
-
-
-
-
- public class DemoProcessTest {
-
- 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 {
-
- ProcessEngine processEngine = ProcessEngineConfiguration
- .createProcessEngineConfigurationFromResource("activiti.cfg.xml")
- .buildProcessEngine();
-
-
- RepositoryService repositoryService = processEngine.getRepositoryService();
- RuntimeService runtimeService = processEngine.getRuntimeService();
-
-
- repositoryService
- .createDeployment()
- .addInputStream("DemoProcess.bpmn",new FileInputStream(realPath + "\\DemoProcess.bpmn"))
- .addInputStream("DemoProcess.png", new FileInputStream(realPath + <a href="file://\\DemoProcess.png">\\DemoProcess.png</a>))
- .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");
- }
-
-
- 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());
- }
- }
教程一完毕。