Activiti工作流学习笔记

工作流的基本操作

  • 创建数据库表

  • 部署流程定义

  • 流程定义查询

  • 流程定义删除

  • 流程资源文件的查询

    package com.hyq;

    import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.repository.ProcessDefinitionQuery; import org.junit.Test;

    import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.List; import java.util.zip.ZipInputStream;

    /**

    • Created byq on 2017/7/1. */ public class Main {

      /获取流程引擎/ private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /*

      • 创建数据库表 */ @Test public void createDb(){ String source = "activiti.cfg.xml"; ProcessEngineConfiguration configuration = ProcessEngineConfiguration. createProcessEngineConfigurationFromResource(source); ProcessEngine processEngine = configuration.buildProcessEngine(); System.out.print(processEngine); }

      /**

      • 部署流程定义-方式一 */ @Test public void deployProcess(){ System.out.print(processEngine); RepositoryService repositoryService = processEngine.getRepositoryService(); String bpmn = "/diagram/purchasingflow01.bpmn"; String png = "/diagram/purchasingflow01.png";

        InputStream bpmn_inputStream = this.getClass().getResourceAsStream(bpmn); InputStream png_inputStream = this.getClass().getResourceAsStream(png);

        Deployment deployment = repositoryService.createDeployment() .addInputStream(bpmn, bpmn_inputStream) .addInputStream(png, png_inputStream) .name("我的流程部署") .deploy();

        String id = deployment.getId(); String name = deployment.getName(); System.out.print("部署id:"+id); System.out.print("部署name:"+name); }

      /**

      • 通过zip压缩包的方式部署 */ @Test public void deployByZip(){ RepositoryService repositoryService = processEngine.getRepositoryService(); InputStream inputStream = this.getClass().getResourceAsStream("/diagram/diagram.zip"); ZipInputStream zipInputStream = new ZipInputStream(inputStream); Deployment deploy = repositoryService.createDeployment() .addZipInputStream(zipInputStream).deploy(); System.out.print(deploy.getId()); }

      /**

      • 流程定义的查询 */ @Test public void queryProcessDefinetion(){ RepositoryService repositoryService = processEngine.getRepositoryService(); ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); //设置查询条件:流程定义的id组成:流程定义key+版本号+流水号 // processDefinitionQuery.processDefinitionId("purchasingflow:2:104"); processDefinitionQuery.processDefinitionKey("purchasingflow"); List<ProcessDefinition> processDefinitions = processDefinitionQuery.list(); for(ProcessDefinition pd : processDefinitions){ System.out.println("============================================"); System.out.println("流程定义id:"+pd.getId()); System.out.println("流程部署id:"+pd.getDeploymentId()); System.out.println("流程定义的key:"+pd.getKey()); System.out.println("资源名:"+pd.getDiagramResourceName()); System.out.println("流程定义名称:"+pd.getName()); System.out.println("流程定义的版本:"+pd.getVersion()); } }

      @Test /**

      • 流程文件的删除 */ public void deleteProcess(){ RepositoryService repositoryService = processEngine.getRepositoryService(); String processDefinitionId = "purchasingflow:2:104"; ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult(); repositoryService.deleteDeployment(processDefinition.getDeploymentId()); // repositoryService.deleteDeployment(processDefinition.getDeploymentId(),true); }

      @Test /**

      • 流程资源文件的查询 */ public void queryFlowResource() throws Exception { String depolymentId = "1"; RepositoryService repositoryService = processEngine.getRepositoryService(); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(depolymentId).singleResult(); String resourceName_bpmn =processDefinition.getResourceName(); String resourceName_png =processDefinition.getDiagramResourceName(); InputStream diagramStream = repositoryService.getResourceAsStream(depolymentId,resourceName_bpmn); InputStream resourcStream = repositoryService.getResourceAsStream(depolymentId,resourceName_png);

        byte[] buf = new byte[1024]; int line = -1; File file_bpmn = new File("d:"+resourceName_bpmn); File file_png = new File("d:"+resourceName_png); FileOutputStream fileOutputStream_bpmn = new FileOutputStream(file_bpmn); FileOutputStream fileOutputStream_png = new FileOutputStream(file_png);

    // while((line=resourcStream.read(buf))>0){

    // fileOutputStream_bpmn.write(buf,0,line); // } while((line=diagramStream.read(buf,0,1024))!=-1){ fileOutputStream_png.write(buf,0,line); } fileOutputStream_png.flush(); diagramStream.close(); fileOutputStream_png.close(); } }

本文分享 CSDN - 独行侠梦。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )