Activiti的流程实例【ProcessInstance】与执行实例【Execution】
最近,我在做流程引擎Activiti相关的东西,刚开始时的一个知识点困扰了我许久,那就是Activiti的ProcessInstance与Execution的区别,这是一个Activiti的难点,能够懂得这个,Activiti也就入门大半了,下面,我就细致的讲解一下他们的区别。
(1)首先,我们来看一张我总结的图片(这个图片中两条红色的execution包含网关与开始与结束节点,这个图片能够理解,那就不用再细致的看了)这张图片就细致的说明了Activiti中流程实例ProcessInstance与Execution的区别,==ProcessInstance与Execution的区别主要表现在有分支的流程中:==(i)如果流程是单线流程,那么此时的ProcessInstance就是Execution,这可以再数据库表act_ru_execution表中看出,在数据库表act_ru_exection表中的ID_与PROC_INST_ID_的值相同,这时的数据代表的就是ProcessInstance的相关数据,标红的数据再与上面条数据进行对比,就会非长容易的发现,再标红的数据下面没有数据的 ...
JavaSE 8面试基础知识宝典【主要以问题的形式记录】
@TOC
JavaSE 8基础语法 9Q1:简单说说Java有哪些数据类型答:①分为基本数据类型和引用数据类型。②基本数据类型包括:数值型(byte、short、int、long、float、double),字符型(char)以及布尔型(boolean)。除了基本类型外,其他数据类型都属于引用类型,包括类、接口、数组等。
Q2:float number=3.4;有没有问题?为什么?默认类型【int、double】答:有问题,因为3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于向下转型,可能会造成精度损失,所以必须进行强制类型转换,正确的写法是float number =(float)3.4;/ float number =3.4F;。
Q3:字符串拼接的方式以及效率?答:①使用+直接拼接,String 是final对象,不会被修改,每次使用 +进行拼接都会创建新的对象,而不是改变原来的对象,效率低,是线程安全的。②使用StringBuffer可变字符串,效率较高,是线程安全的(StringBuffer的方法使用了synchronized关键字进行修饰)。③使 ...
FastJson解析Json,封装JavaBean对象
@TOC
获取到前端的json,对其进行分析1、获取最外层前端json对应得JavaBean(1)未分析格式的json串首先我们获取到原始的json字符串
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761 ...
GC调优-XX:PrintGCDetails深度解析
查看程序运行GC的运行情况
资源充足的GC情况
新生代老年代元空间因为现在资源充足没有发生GC
*案例:将JVM初始化内存与最大内存(防止内存抖动,反复GC)调至10m,new一个50m的数组对象,发生OOM
JVM参数配置
查看GC情况
GC参数解读
FullGC参数解读
规律:【名称】【GC前内存占用】(->)【GC后内存占用】(该区内存总大小)
Docker学习:(一)初识Docker
==Docker(容器虚拟化技术)要点(秒级启动)==@TOC
What【是什么】、 Why【为什么要用它】、 How【怎么用】1、Docker简介(1)问题:为什么会有docker出现一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验Docker之所以发展如此迅速,也是因为它对此==给出了一个标准化的解决方案==。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
之前在服务器配置一个应用的运行环境,要安装各种软件,就拿实际做过的项目的环境来说吧,Java/Tomcat/MySQL/JDBC驱动包等。安装和配置这些东西有多麻烦就不说了,它还不能跨平台。假如我们是在 Windows 上安装的这些环境,到了 Linux 又得重新装。况且就算 ...
Java死锁编码及定位分析的demo
死锁死锁是什么大学课程中的四个要素:(1)互斥(2)不可抢占(3)循环等待(4)请求保持
也就是下图所描述
产生死锁的主要原因(1)系统资源不足(2)进程运行推进的顺序不合适(3)资源分配不当【也就是不满足四要素】
产生死锁代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package com.atguigu.test_deadlock;import java.util.concurrent.TimeUnit;class HoldLock implements Runnable{ private String lockA; private String lockB; public HoldLock(String lockA, String lockB) { this.lockA = lockA; this.lockB = lockB; } @Ov ...
Acticiti流程引擎在已知当前流程定义id的情况下获取当前流程的所有信息(包括:节点和连线)
这里我们已知流程已经部署,我的需求是获取当前流程的所有任务节点,我使用instanceof关键字来进行匹配
123456789101112131415161718private List<UserTask> getProcessUserTasks(String processInstanceId) { ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); BpmnModel bpmnModel = repositoryService.getBpmnModel( processInstance.getProcessDefinitionId()); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery(). ...
SpringBoot使用activiti自定义流程demo解析
环境搭建【这里直接讲解自定义流程】集成 Activiti Modeler下载源码我这里选用的是 Activiti 5.23.0 版本的页面,下载 zip,解压Activiti 5.23.0 源码
pom依赖123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...
在SpringBoot项目中引入.yml文件中的设置
@TOC
原始方式pro.load()与 pro.getProperty()配合的方式123456789101112131415构造器 Properties pro=new Properties();读取配置文件的步骤 ★ a. pro加载配置文件 pro.load(InputStream in); pro.load(Reader in); b. 根据key值取value值 pro.getProperty(String key);根据key值取value值 如果没有key值返回null pro.getProperty(String key,String defaultvalue);根据key值取value值 如果没有key值返回defaultvalue设置键值对信息到配置文件 a. 设置键值对信息 pro.setProperty(String key, String value); b. 应用到配置文件上 pro.store(OutputStream out, String commons);//comment是注释的意思 pro.store(Writer out ...