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.RuntimeService; 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.repository.ProcessDefinitionQuery; 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 test1() { 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 test2() { ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti.cfg.xml"); ProcessEngine engine = configuration.buildProcessEngine(); System.out.println(engine); } /** * 部署流程定义(act_re_deployment,act_re_procdef,act_ge_bytearray) */ @Test public void test3() { // 获取流程引擎 // 获取与数据库相关的Service RepositoryService service = engine.getRepositoryService(); // 创建并获取部署对象 Deployment deploy = service.createDeployment().name("请假流程") .addClasspathResource("ProcessFile/leaveProcess.bpmn") .addClasspathResource("ProcessFile/leaveProcess.png").deploy(); System.out.println("部署成功 deploy: " + deploy); } /** * 部署流程定义(zip方式) * (act_re_deployment,act_re_procdef,act_ge_bytearray) */ @Test public void test4() { 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); } /** * 查询流程定义 (act_re_procdef) */ @Test public void test5() { // 可以定义 条件查询 RepositoryService repositoryService = engine.getRepositoryService(); ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery(); List<ProcessDefinition> list = query.processDefinitionKey("leave_process").list(); for (ProcessDefinition pd : list) { System.out.println(pd.getName()); } } /** * 查询最新版本流程 */ @Test public void test6() { 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 test7() { // 删除时可以级联删除 (开发时采用级联删除) 不级联的时候 若有启动的流程 删除时报错 engine.getRepositoryService().deleteDeployment("12501", true); System.out.println("删除成功"); } /** * 查看流程图 */ @Test public void test8() { 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 test9() { 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("根据名称删除流程"); } /** * 启动流程实例 * act_ru_execution * act_ru_identitylink(身份信息相关) * act_ru_task */ @Test public void test10() { RuntimeService runtimeService = engine.getRuntimeService(); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave_process"); System.out.println(processInstance); } /** * 查询当前人的任务 */ @Test public void test11() { // 获取任务的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 test12() { TaskService taskService = engine.getTaskService(); taskService.complete("12502"); System.out.println("办理完成"); } /** * 判断流程是否结束 */ @Test public void test13() { ProcessInstance result = engine.getRuntimeService().createProcessInstanceQuery().processInstanceId("12502") .singleResult(); if (result == null) { System.out.println("流程结束了"); } else { System.out.println("流程还在执行"); } } /** * 查询历史任务 */ @Test public void test14() { List<HistoricTaskInstance> list = engine.getHistoryService().createHistoricTaskInstanceQuery() .taskAssignee("李四").list(); if (list != null && list.size() > 0) { for (HistoricTaskInstance his : list) { System.out.println(his); } } } }

2578193624 LV2
2024年6月17日
Huangjy2157 LV2
2023年12月26日
微信网友_6602457430806528 LV6
2023年9月21日
19137715150 LV1
2023年6月18日
sjl821120 LV6
2023年6月10日
yunYUN123 LV1
2023年5月18日
qq2901732871 LV9
2023年4月7日
duoer12 LV5
2022年12月30日
tbwy2014 LV5
2022年10月24日
二十一画 LV10
2022年4月30日

黄志琴 LV1
前天
xianyu091012 LV5
2024年12月26日
wjh007 LV5
2024年9月12日
李朝磊 LV18
2024年6月28日
2578193624 LV2
2024年6月16日
ma406805131 LV19
2024年6月15日
qwe6002 LV10
2024年5月24日
李俊雄 LV3
2024年5月8日
WBelong LV8
2024年4月2日
微信网友_6885494992752640
2024年2月28日
暂无贡献等级