activiti学习--安装插件、activiti配置、执行流程、流程操作

一,安装插件
1,下载activiti-eclipse-plugin插件,解压到eclipse的dropins下

https://www.activiti.org/

2,在线安装

eclipse > help > install new software...  > add..

name: activiti    url: https://www.activiti.org/designer/update/

在这里插入图片描述
3,创建流程图
new—》other
在这里插入图片描述
二,activiti配置
activiti-context.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 name="jdbcUrl" value="" />
		<property name="jdbcUsername" value="" />
		<property name="jdbcPassword" value="" />
		<property name="databaseSchemaUpdate" value="true" />
	</bean>
	<!-- 配置一个流程引擎工厂bean,用于创建流程引擎对象 -->
	<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
		<!-- 通过set方法注入流程引擎配置对象 -->
		<property name="processEngineConfiguration" ref="processEngineConfiguration" />
	</bean>
</beans>

2,获取流程引擎

@Test
public void testActiviti() {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
}

3,部署
log4j.properties

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.rootLogger=info, stdout

创建流程图
在这里插入图片描述
测试方法

@Test
public void testDeploy() {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	//获取部署构建器对象
	DeploymentBuilder deployment = processEngine.getRepositoryService()
								.createDeployment();
	//加载流程定义文件
	deployment.addClasspathResource("test.bpmn");
	deployment.addClasspathResource("test.png");
	//部署
	Deployment deploy = deployment.deploy();
	System.out.println(deploy.getId());
}

4,查询流程定义列表

@Test
public void testQuery() {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	ProcessDefinitionQuery query = processEngine.getRepositoryService()
						.createProcessDefinitionQuery();
	//添加过滤条件
	query.processDefinitionKey("ceshi");
	//添加排序
	query.orderByProcessDefinitionVersion().desc();
	//分页
	query.listPage(0, 5);
	List<ProcessDefinition> list = query.list();
	for (ProcessDefinition process : list) {
		System.out.println(process.getId());
	}
}

三,执行流程
在这里插入图片描述

@Test
public void testProcessInstance() {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	String id = "ceshi:4:304";
	//根据流程定义id启动一个流程实例
	ProcessInstance processInstance = processEngine.getRuntimeService()
						.startProcessInstanceById(id);
	System.out.println(processInstance.getId());
}

2,查询任务列表

@Test
public void testQueryTask() {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	TaskQuery query = processEngine.getTaskService().createTaskQuery();
	String assignee = "李四";
	query.taskAssignee(assignee);
	List<Task> list = query.list();
	for (Task task : list) {
		System.out.println(task.getId()+"-->"+task.getName());
	}
}

3,办理任务

@Test
public void testHandleTask() {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	String taskId="702";
	processEngine.getTaskService().complete(taskId);
}

四、流程操作
1,部署zip

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
@Test
public void testDeploy() {
	DeploymentBuilder deployment = processEngine.getRepositoryService().createDeployment();
	ZipInputStream zip = new ZipInputStream(this.getClass()
					.getClassLoader().getResourceAsStream("test.zip"));
	deployment.addZipInputStream(zip);
	Deployment deploy = deployment.deploy();
	System.out.println(deploy.getId());
}

2,查询部署列表

@Test
public void testQueryDeploy() {
	DeploymentQuery query = processEngine.getRepositoryService().createDeploymentQuery();
	List<Deployment> list = query.list();
	for (Deployment deployment : list) {
		System.out.println(deployment.getId());
	}
}

3,删除部署信息

@Test
public void testDeleteDeploy() {
	String id="1";
	processEngine.getRepositoryService().deleteDeployment(id, true);
}

4,获取流程定义文件名和输入流

@Test
public void test() {
	String deployId = "1001";
	List<String> names = processEngine.getRepositoryService()
					.getDeploymentResourceNames(deployId);
	for (String name : names) {
		System.out.println(name);
		InputStream inputStream = processEngine.getRepositoryService()
								.getResourceAsStream(deployId, name);
	}
}

5,根据流程定义id获取图片

@Test
public void test() throws Exception {
	String processDefinitionId="ceshi:5:1004";
	InputStream pngInputStream = processEngine.getRepositoryService()
							.getProcessDiagram(processDefinitionId);
	FileUtils.copyInputStreamToFile(pngInputStream, new File("d:\\my.png"));
}

6,根据流程定义key启动实例

@Test
public void test() throws Exception {
	String key = "ceshi";
	ProcessInstance processInstance = processEngine.getRuntimeService()
									.startProcessInstanceByKey(key);
	System.out.println(processInstance.getId());
}

7,查询实例列表

@Test
public void test() throws Exception {
	ProcessInstanceQuery query = processEngine.getRuntimeService()
								.createProcessInstanceQuery();
	List<ProcessInstance> list = query.list();
	for (ProcessInstance processInstance : list) {
		System.out.println(processInstance.getId()+"  "+processInstance.getActivityId());
	}
}

8,结束流程实例

@Test
public void test() throws Exception {
	String id="1101";
	processEngine.getRuntimeService().deleteProcessInstance(id, "test");
}

9,直接将流程向下执行一步

@Test
public void test() throws Exception {
	String excutionId = "1201";
	processEngine.getRuntimeService().signal(excutionId);
}

10,查询最新版本的流程定义列表

@Test
public void testQueryNewestDef() {
	ProcessDefinitionQuery query = processEngine.getRepositoryService()
										.createProcessDefinitionQuery();
	query.orderByProcessDefinitionVersion().asc();
	List<ProcessDefinition> list = query.list();
	Map<String, ProcessDefinition> map = new HashMap<String, ProcessDefinition>();
	for (ProcessDefinition pd : list) {
		map.put(pd.getKey(), pd);
	}
	List<ProcessDefinition> newList = new ArrayList<>(map.values());
	for (ProcessDefinition processDefinition : newList) {
		System.out.println(processDefinition.getName()+"  "+processDefinition.getVersion());
	}
}

11,activiti提供的 对象

RepositoryService:操作流程定义,bpmn,png等静态资源
RuntimeService:操作流程实例(启动、查询、结束流程实例)
TaskService:操作任务(查询任务、办理任务)
HistoryService:操作历史数据

Deployment:act_re_deployment
ProcessDefinition:act_re_procdef
ProcessInstance:act_ru_execution
Task:act_ru_task

12,网页版流程设计
在tomcat下启动:activiti-explorer.war(文件夹名不能中文)
用户名/密码:kermit/kermit
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yzx15855401351/article/details/100179695