首页>代码>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 LV33
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 LV6
2020年10月9日
离沫Winner LV1
2020年7月28日
最近浏览更多
WBelong LV8
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日
3516569014 LV5
2023年5月8日