1. 项目结构
2. activiti.cfg.xml
<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/activiti?userUnicode=true&characterEncoding=utf8"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="root"></property>
<property name="databaseSchemaUpdate" value="true"></property>
</bean>
</beans>
3. 程序代码
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;
public class HelloWorld {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void deploymentProcessDefinition(){
//与流程定义和部署相关的service
RepositoryService repositoryService = processEngine.getRepositoryService();
//创建一个部署对象
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
//添加部署的名称
deploymentBuilder.name("helloworld入门程序");
//从classpath资源中加载,一次只能加载一个
deploymentBuilder.addClasspathResource("diagrams/helloworld.bpmn");
deploymentBuilder.addClasspathResource("diagrams/helloworld.png");
//完成部署
Deployment deployment = deploymentBuilder.deploy();
System.out.println("部署id:"+deployment.getId());//1
System.out.println("部署名称:"+deployment.getName());//helloworld入门程序
}
/**
* 启动流程实例
*/
@Test
public void startProcessInstance(){
//流程定义的key
String processDefinitionKey = "helloworld";
//与正在执行的流程实例和执行对象相关的service
RuntimeService runtimeService = processEngine.getRuntimeService();
//使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中的id属性
//使用key值启动,默认是按照最新版本的流程定义启动
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);
System.out.println("流程实例id:"+processInstance.getId());//流程实例id 101
System.out.println("流程定义id:"+processInstance.getProcessDefinitionId());//流程定义id helloworld:1:4
}
/**
* 查询当前人的个人任务
*/
@Test
public void findMypersonalTask(){
String assignee = "王五";
//与正在执行的任务相关的service
TaskService taskService = processEngine.getTaskService();
//创建查询对象
TaskQuery taskQuery = taskService.createTaskQuery();
List<Task> list = taskQuery.taskAssignee(assignee).list();
if(list!=null && list.size()>0){
for(Task task : list){
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("任务的办理人:"+task.getAssignee());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
System.out.println("执行对象ID:"+task.getExecutionId());
System.out.println("流程定义ID:"+task.getProcessDefinitionId());
System.out.println("*******************************************");
}
}
}
/**
* 完成我的任务
*/
@Test
public void completeMypersonalTask(){
String taskId = "302";
//与正在执行的任务相关的service
TaskService taskService = processEngine.getTaskService();
taskService.complete(taskId);
System.out.println("任务完成,任务ID是:" + taskId);
}
}