首页>代码>ssm+maven+apache shiro+oracle搭建后台用户增删改查实例>/ycxm/src/main/java/com/xiaowei/activiti/ActivitiTest.java
package com.xiaowei.activiti;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
import org.springframework.util.FileCopyUtils;
public class ActivitiTest {
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
/**
* 代码创建表和流程引擎文件
*/
@Test
public void creatTable() {
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration();
configuration.setJdbcDriver("com.mysql.jdbc.Driver");
configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8");
configuration.setJdbcUsername("root");
configuration.setJdbcPassword("123456");
// 创建表 类似hibernate的几种方式
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
// 创建流程引擎
ProcessEngine engine = configuration.buildProcessEngine();
System.out.println(engine);
}
/**
* 配置文件创建表和流程引擎文件
*/
@Test
public void getProcessEngine() {
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
ProcessEngine engine = configuration.buildProcessEngine();
System.out.println(engine);
}
/**
* 部署流程定义
*/
@Test
public void deploymentProcessDefinition() {
// 获取流程引擎
// 获取与数据库相关的Service
RepositoryService service = engine.getRepositoryService();
// 创建并获取部署对象
Deployment deploy = service.createDeployment().name("请假流程")
.addClasspathResource("ProcessFile/leaveProcess.bpmn")
.addClasspathResource("ProcessFile/leaveProcess.png").deploy();
System.out.println("部署成功 deploy: " + deploy);
}
/**
* 部署流程定义
*/
@Test
public void deploymentProcessDefinitionZip() {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("ProcessFile/hello.zip");
ZipInputStream zipInputStream = new ZipInputStream(in);
Deployment deploy = engine.getRepositoryService().createDeployment().name("请假流程")
.addZipInputStream(zipInputStream).deploy();
System.out.println(deploy);
}
/**
* 查询流程
*/
@Test
public void findProcessDefinition() {
// 可以定义 条件查询
List<ProcessDefinition> list = engine.getRepositoryService().createProcessDefinitionQuery()
.orderByDeploymentId().asc().list();
if (list != null && list.size() > 0) {
for (ProcessDefinition pf : list) {
System.out.println(pf);
}
}
}
/**
* 查询最新版本流程
*/
@Test
public void findLastVersionProcess() {
List<ProcessDefinition> list = engine.getRepositoryService().createProcessDefinitionQuery()
.orderByProcessDefinitionVersion().asc().list();
Map<String, ProcessDefinition> map = new LinkedHashMap<>();
if (list != null && list.size() > 0) {
for (ProcessDefinition pf : list) {
map.put(pf.getKey(), pf);
}
}
List<ProcessDefinition> list2 = new ArrayList<>(map.values());
if (list2 != null && list2.size() > 0) {
for (ProcessDefinition pd : list2) {
System.out.println(pd);
}
}
}
/**
* 删除流程定义
*/
@Test
public void deleteProcessDefinition() {
// 删除时可以级联删除 (开发时采用级联删除) 不级联的时候 若有启动的流程 删除时报错
engine.getRepositoryService().deleteDeployment("12501", true);
System.out.println("删除成功");
}
/**
* 查看流程图
*/
@Test
public void findView() {
List<String> list = engine.getRepositoryService().getDeploymentResourceNames("20001");
String resource = "";
if (list != null && list.size() > 0) {
for (String name : list) {
if (name.indexOf(".png") >= 0) {
resource = name;
}
}
}
InputStream inputStream = engine.getRepositoryService().getResourceAsStream("20001", resource);
File file = new File("F:\\workspace\\ycxm01\\src\\test\\resources" + resource);
OutputStream out;
try {
out = new FileOutputStream(file);
FileCopyUtils.copy(inputStream, out);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据流程的key删除流程
*/
@Test
public void deleteProcessWithKey() {
List<ProcessDefinition> list = engine.getRepositoryService().createProcessDefinitionQuery()
.processDefinitionKey("helloworld").list();
if (list != null && list.size() > 0) {
for (ProcessDefinition pd : list) {
String id = pd.getDeploymentId();
engine.getRepositoryService().deleteDeployment(id, true);
}
}
System.out.println("根据名称删除流程");
}
/**
* 启动流程实例
*/
@Test
public void startProcessInstance() {
ProcessInstance instance = engine.getRuntimeService().startProcessInstanceByKey("helloworld");
System.out.println(instance);
}
/**
* 查询当前人的任务
*/
@Test
public void findMyProcessTask() {
// 获取任务的service
TaskService taskService = engine.getTaskService();
// 获取 代理人任务集合
List<Task> list = taskService.createTaskQuery().taskAssignee("张三").list();
if (list != null && list.size() > 0) {
for (Task task : list) {
System.out.println(task);
}
}
}
/**
* 办理当前任务
*/
@Test
public void comleteMyProcessTask() {
engine.getTaskService().complete("40004");
System.out.println("办理完成");
}
/**
* 判断流程是否结束
*/
@Test
public void isEndProcess() {
ProcessInstance result = engine.getRuntimeService().createProcessInstanceQuery().processInstanceId("25001")
.singleResult();
if (result == null) {
System.out.println("流程结束了");
} else {
System.out.println("流程还在执行");
}
}
/**
* 查询历史任务
*/
@Test
public void findHistoryTask() {
List<HistoricTaskInstance> list = engine.getHistoryService().createHistoricTaskInstanceQuery().taskAssignee("李四").list();
if(list!=null&&list.size()>0) {
for (HistoricTaskInstance his : list) {
System.out.println(his);
}
}
}
}
最近下载更多
2398164158 LV3
2023年9月24日
李亮 LV19
2023年3月6日
543666826 LV34
2021年11月19日
erw234 LV2
2021年11月8日
level LV5
2021年6月10日
小红猪仔 LV4
2021年4月30日
jiugeshidatui LV2
2020年12月19日
qazzaq123 LV20
2020年11月23日
liang_sen LV7
2020年10月9日
离沫Winner LV1
2020年7月28日
最近浏览更多
vincemokea LV9
4月30日
WBelong LV8
2024年4月2日
2398164158 LV3
2023年9月24日
siximu912 LV10
2023年7月14日
gecongkai LV8
2023年6月22日
6389181 LV7
2023年6月14日
微信网友_6260196253601792 LV7
2023年6月8日
25702204 LV1
2023年5月24日
shu1234
2023年5月22日
暂无贡献等级
yeyuuu LV6
2023年5月18日

