(一)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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言实现fastcgi

    c语言实现fastcgi参考fastcgi官网使用fastcgi官网迁移到了github了,下载FastCGIDeveloper’sKit

    2022年7月11日
    21
  • 排队论[通俗易懂]

    排队论[通俗易懂]排队论简介历史排队论又称随机服务系统,是研究系统随机聚散现象和随机服务系统工作过程的数学理论和方法,是运筹学的一个分支。排队论的基本思想是1909年丹麦数学家A.K.埃尔朗在解决自动

    2022年8月5日
    3
  • Python错误:UnboundLocalError: local variable ‘total’ referenced before assignment解决办法[通俗易懂]

    Python错误:UnboundLocalError: local variable ‘total’ referenced before assignment解决办法[通俗易懂]1.错误概述今天练习类似于如下代码的时候遇到了一个UnboundLocalError错误,该错误的内容翻译过来就是:局部变量total没有定义就使用了。total=10defchange(): total=total+1 print(total)change()D:\&gt;pythontest.pyTraceback(mostrecentcall…

    2022年6月15日
    34
  • ncnn笔记_cnn代码

    ncnn笔记_cnn代码最近看了ncnn的源码,代码风格清爽,遂想先抛开VULKAN记录一下它的推理流程。1. 先看个yolov2democsdn上的帖子https://blog.csdn.net/sina

    2022年8月6日
    5
  • 数据库主从复制_sqlserver主从复制

    数据库主从复制_sqlserver主从复制一、什么是主从复制?主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。二、主从复制的作用(好处,或者说为什么要做主从)重点!1、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,物理服务器增加,负荷增加。2、读写分离,使数据库能支撑更大的并发。主从只负责各自的写和读,极大程度的缓解X锁和S锁争用。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那

    2022年8月13日
    1
  • java三大特征_java三大特性是什么?

    java三大特征_java三大特性是什么?java三大特性:1、封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式;2、继承,从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力;3、多态,一个方法可以有多种实现版本,即“一种定义,多种实现”。Java三大特性,算是Java独特的表现,提到Java的三大特性,我们都会想到封装,继承和多态这是我们Java最重要的特性。封装(Encapsulat…

    2022年7月7日
    22

发表回复

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

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