(一)activiti学习笔记

(一)activiti学习笔记

#删除数据库
DROP DATABASE activiti
#创建数据库
CREATE DATABASE activiti DEFAULT CHARACTER SET utf8 ;
#使用数据库
USE activiti;
#查看数据库表
SHOW TABLES;

单机版学习activiti-API
1.环境搭建
2.流程图设计
3.流程部署

一、设计流程图
1.开始事件 结束事件
2.任务task
设置代办人:
assigne

	流程图的id:就是流程的key

3.activiti表达式${userName}
4.activiti的监听器

ProcessEnginer 流程引擎对象[核心对象]

二、发布流程图
发布流程图,也可以叫着流程部署

单文件部署 、 zip 压缩部署文件

deployment 部署

RepositoryService 仓库服务

Deployment 部署对象.

流程取名字:helloworld入门程序
流程图中设置的ID值,可以理解成流程的key

部署流程,activiti操作的表:
act_re_deployment
部署对象表,存放流程定义的显示名和部署时间,没部署一次增加一条记录.
其中的’name’字段的值,就是我们在部署流程的时候设置的name的值

act_re_procdef 流程定义表 key_ 就是我们画流程图的时候设置流程图的ID的值
act_ge_bytearray 资源文件表

代码:
/**

  • 部署流程
    */
    public class Demo01 {

    public static void main(String[] args) {

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    Deployment deployment = processEngine.getRepositoryService().createDeployment()
    .addClasspathResource(“diagram/HelloWorld.bpmn”)
    .addClasspathResource(“diagram/HelloWorld.png”)
    .name(“hellworld入门程序”).key(“myprocess”).deploy();

     System.out.println("流程部署的name:"+deployment.getName());
     System.out.println("流程部署的ID:"+deployment.getId());
     System.out.println("流程部署key:"+deployment.getKey());
    

    }
    }

相关名称:

1.相关概念:
1.流程定义—-创建.bpmn流程文件
使用 activiti 流程建模工具(activity-designer)定义业务流程(.bpmn 文件) 。
.bpmn 文件就是业务流程定义文件,通过 xml 定义业务流程
2.流程定义部署 —–好比java中创建一个类
使用 activiti 提供的 api 向 activiti 中部署.bpmn 文件

3.启动流程实例----->好比java中创建一个对象

	启动一个流程实例表示开始一次业务流程的运行,比如员工请假流程部署完成,如果张三要请
	假就可以启动一个流程实例,如果李四要请假也启动一个流程实例,两个流程的执行互相不影
	响,就好比定义一个 java 类,实例化两个对象一样,部署的流程就好比 java 类,启动一个流程
	实例就好比 new 一个 java 对象。

三、启动流程实例

流程定义的key来启动一个流程【流程定义的key就是我们画流程图,给流程图设置的ID的值,在act_re_procdef表中字段’key_’】

ProcessEngine对象获取RuntimeService服务对象,得到一个ProcessInstance实例对象.

启动一个流程实例会涉及的表:
act_hi_procinst 流程实例历史表 【这个表的ID 就是流程当前流程实例的ID】

act_ru_execution 流程实例的执行对象表 [这个表中的proc_inst_id 字段记录流程实例ID,
同时有一个字段很关键business_key,和我们也为进行关联,从而业务和工作流进行关联]

act_ru_task 当前活动(节点)任务表。默认act_ru_task 和 act_ru_execution 是一对一的关系

/**

  • 启动流程
    */
    public class Demo02 {

    public static void main(String[] args) {

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    ProcessInstance processInstance = processEngine.getRuntimeService()
    .startProcessInstanceByKey(“helloworld”);//根据流程定义的key ,启动一个流程实例.

     System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());
     System.out.println("流程实例ID:"+processInstance.getProcessInstanceId());
    

    }
    }

三、查看任务

TaskService 任务对象
根据代表人查询当前个人任务

任务返回可以 是集合 或者是单个任务.
还有根据条件查询、排序等操作

操作的表:act_re_task表
/**

  • 查询个人任务
    */
    public class Demo03 {

    public static void main(String[] args) {

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

     List<Task> list = processEngine.getTaskService().createTaskQuery().taskAssignee("小乔").list();
    
     if(list !=null && list.size()>0){
         for (Task task : list) {
             System.out.println("任务ID:"+task.getId());
             System.out.println("流程定义ID:"+task.getProcessDefinitionId());
     		System.out.println("流程实例ID:"+task.getProcessInstanceId());
             System.out.println("代办人:"+task.getAssignee());
     		System.out.println("执行对象ID:"+task.getExecutionId());
             System.out.println("任务创建时间:"+task.getCreateTime());
             System.out.println("任务名称:"+task.getName());
         }
     }
    

    }

}

任务ID:2505
流程定义ID:helloworld:1:4
流程实例ID:2501
代办人:小乔
执行对象ID:2502
任务创建时间:Sat Aug 08 10:07:18 CST 2020
任务名称:提交申请

/*

流程实例ID
查看这个表:act_hi_procinst 流程实例历史表 中的ID字段
或者act_run_execution 流程实例的执行对象表中的proc_inst_id 字段
或者act_ru_task 当前活动(节点)任务表 中proc_inst_id

流程定义ID:
查看 act_re_procdef表ID

流程定义的key:
查看 act_re_procdef表key ,其实就是画流程图给流程图设置的全局ID的值。

任务ID:查看act_ru_task表中的ID
*/

四、完成任务
根据任务ID 完成任务

/**

  • 完成任务
    */
    public class Demo04 {

    public static void main(String[] args) {

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    processEngine.getTaskService()
    .complete(“7502”);
    System.out.println(“完成任务~~~~~~~~~~~~~~~~~~~~~~~~~~”);
    }
    }

act_ru_task` 这个表只记录当前任务。当前任务完成就会删除,然后记录下一次任务作为当前任务。

查看历史任务 act_hi_task 历史任务表记录任务执行情况

/*

act_re_deployment 部署对象表,存放流程定义的显示名和部署时间,没部署一次增加一条记录. 其中的’name’字段的值,就是我们在部署流程的时候设置的name的值
act_re_procdef 流程定义表 key_ 就是我们画流程图的时候设置流程图的ID的值
act_ge_bytearray
*/

/*

act_hi_procinst 流程实例历史表

act_ru_execution 流程实例的执行对象表

act_ru_task 当前活动(节点)任务表。默认act_ru_task 和 act_ru_execution 是一对一的关系

act_hi_task 历史任务表记录任务执行情况

*/

RepositoryService 管理流程定义
RuntimeService 执行管理、包括启动、推进、删除流程实例等操作
TaskService 任务管理器

HistoryService 历史管理(执行完成的数据的管理)
IdentityService 组织机构管理
FormService 一个可选服务,任务表单管理

五、zip打包部署流程图文件
/**

  • 部署一个流程会涉及的表:
  • act_re_deployment  部署信息
    
  • act_re_procdef     流程定义的一些信息  需要关注流程定义的key。其实就是bpmn 文件的id
    
  • act_ge_bytearray   流程定义的bpmn文件及png文件
    

*/
public class ActivitiDeloyement {

public static void main(String[] args) {

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    RepositoryService repositoryService = processEngine.getRepositoryService();

    //通过zip压缩包文件进行部署
   /* InputStream inputStream = ActivitiDeloyement.class
            .getClassLoader().getResourceAsStream("holiday.zip");
    ZipInputStream zipInputStream = new ZipInputStream(inputStream);

    repositoryService.createDeployment().addZipInputStream(zipInputStream).name("请假流程").deploy();*/
    Deployment deployment = repositoryService.createDeployment()
                            .addClasspathResource("diagrams/holiday.bpmn")
                            .addClasspathResource("diagrams/holiday.png")
                            .name("请假流程").
                            deploy();

    System.out.println("流程部署id:"+deployment.getId());
    System.out.println("流程部署名称:"+deployment.getName());
}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100741.html原文链接:https://javaforall.net

(0)
上一篇 2021年7月12日 下午3:00
下一篇 2021年7月12日 下午4:00


相关推荐

  • idea远程debug配置_debug调试工具

    idea远程debug配置_debug调试工具Idea设置远程debug,方便定位线上问题

    2025年9月5日
    14
  • ringbuffer的常规用法_wear ring

    ringbuffer的常规用法_wear ring文章目录概述示例引用概述ringbuffer,或者说循环队列,是嵌入式开发中的一个基本模型,常用于命令队列,资源循环分配场合。示例ring_buffer.hringbuffer封装APItestringbuffer.c测试ringbufferapi.//ring_buffer.h#include<stdlib.h>typedefstructs_ring_buffer{ inttail; inthead; intsize; intitem_si

    2025年10月19日
    8
  • MongoDB嵌套查询

    MongoDB嵌套查询今天在项目中遇到了关于 MongoDB 嵌套查询 之前一直没有接触过 查询了相关资料后将结果记录下来

    2026年3月26日
    2
  • 阮一峰flex 布局

    阮一峰flex 布局loading 基本布局 display flex 设置弹性布局 在九宫格中默认为靠左对其 第一行第一个 justify centent centent 设置水平线上的元素居中 justify centent flex end 设置水平线上的元素靠右 align items center 元素垂直移动 垂直居中 靠左对其 justify centent center align items center

    2026年3月18日
    2
  • Django(49)drf解析模块源码分析「建议收藏」

    Django(49)drf解析模块源码分析「建议收藏」前言上一篇分析了请求模块的源码,如下:definitialize_request(self,request,*args,**kwargs):"""Retu

    2022年7月31日
    10
  • springboot整合activiti流程设计器_git 工作流

    springboot整合activiti流程设计器_git 工作流Activiti工作流使用之SpringBoot整合Activiti文章目录Activiti工作流使用之SpringBoot整合Activiti一、springboot整合Activiti环境依赖1.1maven环境1.2添加日志配置1.3添加activiti配置文件二、流程操作–流程模型2.1绘制流程模型编辑器2.2创建模型2.3查询流程模型模板2.4删除流程定义模板2.5导出模型zip方式2.6部署流程三、流程操作–流程部署3.1部署流程3.2删除部署信息3.3查询部署的流

    2022年10月5日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号