【Activiti学习之二】Activiti API

环境
  JDK 1.8
  MySQL 5.6
  Tomcat 7
  Eclipse-Luna
  activiti 6.0

一、Activiti数据查询
准备数据:

package com.wjy.act;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;

public class SaveGroup {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        IdentityService is = engine.getIdentityService();
        for(int i = 0; i < 10; i++) {
            Group group = is.newGroup(String.valueOf(i));
            group.setName("Group_" + i);
            group.setType("TYPE_" + i);
            is.saveGroup(group);//保存到表act_id_group
        }
        engine.close();
        System.exit(0);

    }

}

list 查询多条和count 数量统计:

package com.wjy.act;

import java.util.List;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;

public class TestList {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        IdentityService is = engine.getIdentityService();

        //测试list查询
        List<Group> groups = is.createGroupQuery().list();
        for(Group g : groups) {
            System.out.println(g.getId() + "---" + g.getName() + "---" + g.getType());
        }
        //测试 count
        long size = is.createGroupQuery().count();
        System.out.println(size);
    }

}

listPage 分页查询:

package com.wjy.act;

import java.util.List;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;

public class TestListPage {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        IdentityService is = engine.getIdentityService();

        //分页查询 listPage
        List<Group> groups = is.createGroupQuery().listPage(1, 5);
        for(Group g : groups) {
            System.out.println(g.getId() + "---" + g.getName() + "---" + g.getType());
        }
    }

}

singleResult 查询单条

package com.wjy.act;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;

public class TestSingle {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        IdentityService is = engine.getIdentityService();
        //测试singleResult
        Group g = is.createGroupQuery().groupName("Group_0").singleResult();
        System.out.println(g.getId());
    }

}

asc 升序和desc 降序:

package com.wjy.act;

import java.util.List;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;

public class TestSort {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        IdentityService is = engine.getIdentityService();
        //测试降序 升序  需要根据字段orderby
        //多字段排序 orderby之后都要跟上asc() 或desc()
        //is.createGroupQuery().orderByGroupId().asc().orderByGroupName().asc().list();
        List<Group> groups = is.createGroupQuery().orderByGroupId().desc().orderByGroupName().asc().list();
        for(Group g : groups) {
            System.out.println(g.getId());
        }
    }

}

按照字段条件查询:

package com.wjy.act;

import java.util.List;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;

public class FieldQuery {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        IdentityService is = engine.getIdentityService();
        //按照字段条件查询
        List<Group> groups = is.createGroupQuery().groupName("Group_1").groupType("TYPE_1").list();
        for(Group g : groups) {
            System.out.println(g.getId());
        }
    }

}

支持原生sql查询:

package com.wjy.act;

import java.util.List;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.Group;

public class NativeQuery {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        IdentityService is = engine.getIdentityService();

        //支持原生sql语句查询
        List<Group> groups = is.createNativeGroupQuery()
                .sql("SELECT * FROM ACT_ID_GROUP where NAME_ = #{name}")
                .parameter("name", "Group_2").list();
        for (Group g : groups) {
            System.out.println(g.getId());
        }
    }

}

二、流程文件部署
DeploymentBuilder对象
方法addClasspathResource:

package com.wjy.deploy;

import java.io.InputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;

public class TextQuery {

    public static void main(String[] args) throws Exception {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 存储服务
        RepositoryService rs = engine.getRepositoryService();

        DeploymentBuilder builder = rs.createDeployment();
        builder.addClasspathResource("my_text.txt");
        Deployment dep = builder.deploy();
        // 数据查询
        InputStream is = rs.getResourceAsStream(dep.getId(), "my_text.txt");
        int count = is.available();
        byte[] contents = new byte[count];
        is.read(contents);
        String result = new String(contents);
        //输入结果
        System.out.println(result);

    }

}

方法addInputStream:

package com.wjy.deploy;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

import javax.imageio.ImageIO;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;

public class ImageQuery {

    public static void main(String[] args) throws Exception {
        // 创建流程引擎
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 得到流程存储服务对象
        RepositoryService repositoryService = engine.getRepositoryService();
        // 部署一份流程文件与相应的流程图文件
        Deployment dep = repositoryService.createDeployment().addClasspathResource("gen.bpmn").deploy();
        // 查询流程定义
        ProcessDefinition def = repositoryService.createProcessDefinitionQuery().deploymentId(dep.getId()).singleResult();
        // 查询资源文件
        InputStream is = repositoryService.getProcessDiagram(def.getId());
        // 将输入流转换为图片对象
        BufferedImage image = ImageIO.read(is);
        // 保存为图片文件
        File file = new File("resource/result.png");
        if (!file.exists()) file.createNewFile();
        FileOutputStream fos = new FileOutputStream(file);
        ImageIO.write(image, "png", fos);
        fos.close();
        is.close();
    }

}

方法addZipInputStream:

package com.wjy.deploy;

import java.io.File;
import java.io.FileInputStream;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.DeploymentBuilder;

public class ZipTest {

    public static void main(String[] args) throws Exception {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 存储服务
        RepositoryService rs = engine.getRepositoryService();

        DeploymentBuilder builder = rs.createDeployment();

        FileInputStream fis = new FileInputStream(new File("resource/datas.zip"));
        ZipInputStream zis = new ZipInputStream(fis);

        builder.addZipInputStream(zis);

        builder.deploy();
    }

}

方法addBpmnModel:

package com.wjy.deploy;

import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.EndEvent;
import org.activiti.bpmn.model.SequenceFlow;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.DeploymentBuilder;

public class BpmnTest {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 存储服务
        RepositoryService rs = engine.getRepositoryService();

        DeploymentBuilder builder = rs.createDeployment();
        builder.addBpmnModel("My Process", createProcessModel());

        builder.deploy();
    }

    private static BpmnModel createProcessModel() {
        // 创建BPMN模型对象
        BpmnModel model = new BpmnModel();
        // 创建一个流程定义
        org.activiti.bpmn.model.Process process = new org.activiti.bpmn.model.Process();
        model.addProcess(process);
        process.setId("myProcess");
        process.setName("My Process");
        // 开始事件
        StartEvent startEvent = new StartEvent();
        startEvent.setId("startEvent");
        process.addFlowElement(startEvent);
        // 用户任务
        UserTask userTask = new UserTask();
        userTask.setName("User Task");
        userTask.setId("userTask");
        process.addFlowElement(userTask);
        // 结束事件
        EndEvent endEvent = new EndEvent();
        endEvent.setId("endEvent");
        process.addFlowElement(endEvent);
        // 添加流程顺序
        process.addFlowElement(new SequenceFlow("startEvent", "userTask"));
        process.addFlowElement(new SequenceFlow("userTask", "endEvent"));
        return model;
    }

}

方法addString和addBytes:略

上面的方法是加载流程方法,另外方法deploy是将加载的流程实现部署,返回对象Deployment,部署记录记录到表表:act_re_deployment,流程则记录到表:act_ge_bytearray。

原文地址:https://www.cnblogs.com/cac2020/p/11498547.html

时间: 2024-08-30 11:19:11

【Activiti学习之二】Activiti API的相关文章

Activiti学习笔记二 — HelloWorld

一. Maven的POM配置文件 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

Activiti学习笔记五 — 常用API解析

常用API解析: 一.ProcessEngineConfiguration 流程引擎配置对象(配置数据库连接4个大配置和建表策略) 二.ProcessEngine          流程引擎核心对象(服务大管家) 三.RepositoryService     仓库服务.管理规则相关的信息. 四.RuntimeService     运行时服务. 负责流程的启动,查看,执行等操作. 五.TaskService          任务服务.管理任务的查看,接手,办理等操作. 六.规则管理相关: 1

【Activiti学习之一】Activiti入门

环境 JDK1.7 MySQL5.6 Tomcat7 Eclipse-Luna activiti 6.0 一.概念1.工作流(Workflow):是一系列相互衔接.自动进行的业务活动或任务.采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改.跟踪.管理.查询.统计.打印等,大大提高了效率.2.BPMN即业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本

Activiti学习笔记目录

1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 — 流程实例化: 5.Activiti学习笔记5 — 常用API解析: 6.Activiti学习笔记6 — 变量与历史记录: 7.Activiti学习笔记7 — ReceiveTask机器自动任务的使用: 8.Activiti学习笔记8 — UserTask私有任务的使用: 9.Activiti学习

Activiti 学习笔记记录(二)

上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Activiti就是来走这个流程的.所以我们还需要将Activiti 和 业务结合起来,即部署定义(画一个流程图,生成 bpmn 格式的文件).本章,就来讲 bpmn 的图怎么画? 一.什么是 bpmn 业务流程建模标记法 BPMN (Business Process Model and Notation),是工作

工作流学习——Activiti整体认识二步曲 (zhuan)

http://blog.csdn.net/zwk626542417/article/details/46594505 *********************************************** 一.前言 在上一篇文章中我们将工作流的相关概念.activiti的前世今生.activiti与jbpm的比较进行学习,这篇文章我们正式进行activiti的学习,activiti的整个学习我们主要通过例子的形式来理解.今天我们主要是准备下activiti的环境,在数据库中创建activ

工作流学习——Activiti整体认识二步曲

前言 在上一篇文章中我们将工作流的相关概念.activiti的前世今生.activiti与jbpm的比较进行学习,这篇文章我们正式进行activiti的学习,activiti的整个学习我们主要通过例子的形式来理解.今天我们主要是准备下activiti的环境,在数据库中创建activiti默认的23张表以及activiti核心对象ProcessEngine最后是一个activiti的简单demo. 环境准备 相关软件及版本: jdk版本:Jdk1.8 IDE:eclipse 数据库:mysql A

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

activiti学习资料(架构描述)

Activiti学习资料 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要讨论的话题,相关内容可以baidu一下.Activiti从架构角度看是比较优秀的,是很面向对象的,是我所阅读过的代码结构很棒的开源软件,个人认为比Spring,Hibernate的要好. Activiti的基础编程框架 Activiti基于Spring,ibatis等开源中间件作为软件平台,在此之上构建了非常清晰的开发框架.上图列出了Activiti的核心组件.