Activiti官方快速入门demo

地址:
https://www.activiti.org/quick-start

0. 版本

activiti 5.22.0
JDK 1.8

1. 介绍

这个快速入门指南用于介绍如何在你编写的应用程序中嵌入BPM(Business Process Management)框架Activiti,你可以构建一个基于命令行的BPMN(业务流程建模与标注)逻辑应用程序。
Activiti拥有先进的流程设计工具,可将更复杂的BPM逻辑嵌入到您的应用程序中。这些工具包括基于Eclipse和基于Web的BPMN编辑器等等。为简洁起见,本快速入门只使用Activiti的Java API。

2. 创建设设置Maven项目

使用以下Maven依赖项创建一个名为“ActivitiDeveloperQuickStart”(以下称为)的Java项目:
pom.xml文件内容为:

<?xml version="1.0" encoding="UTF-8"?>
<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"><modelVersion>4.0.0</modelVersion><groupId>activiti</groupId><artifactId>activiti-demo</artifactId><version>1.0-SNAPSHOT</version><dependencies><!--Activiti的BPM引擎--><dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>5.22.0</version></dependency><!--日志记录--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.21</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.4.193</version></dependency><!--Mysql数据库驱动--><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency></dependencies><build><plugins><!-- Maven Assembly Plugin --><!--Maven打包工具--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.4.1</version><configuration><!-- get all project dependencies --><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><!-- MainClass in mainfest make a executable jar --><archive><manifest><mainClass>com.example.OnboardingRequest</mainClass></manifest></archive><encoding>UTF-8</encoding></configuration><executions><execution><id>make-assembly</id><!-- bind to the packaging phase --><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>
</project>

官方使用的数据库是H2,由于我想看一下表结构,所以这里我自己使用的是mysql数据库

3. 创建流程引擎

配置日志
D:\IDEAProject\activitidemo\src\main\resources\log4j.properties

log4j.rootLogger=DEBUG, ACTlog4j.appender.ACT=org.apache.log4j.ConsoleAppender
log4j.appender.ACT.layout=org.apache.log4j.PatternLayout
log4j.appender.ACT.layout.ConversionPattern= %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n

创建一个带main方法的类

D:\IDEAProject\activitidemo\src\main\java\com\example\OnboardingRequest.java

package com.example;public class OnboardingRequest {public static void main(String[] args) {}
}

使用Java代码的方式创建流程引擎

public class OnboardingRequest {public static void main(String[] args) throws ParseException {ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration().setJdbcUrl("jdbc:mysql://localhost:3306/activiti?serverTimezone=UTC").setJdbcUsername("root").setJdbcPassword("123456").setJdbcDriver("com.mysql.jdbc.Driver").setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);ProcessEngine processEngine = cfg.buildProcessEngine();String pName = processEngine.getName();String ver = ProcessEngine.VERSION;System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]");}
}

FatJar也就叫做UberJar,是一种可执行的Jar包(Executable Jar)。FatJar和普通的jar不同在于它包含了依赖的jar包。
在第一步中已经把中加入了fatjar的配置

运行OnboardingRequest.java,运行成功后数据库会出现25张表

4. 部署流程实例

官方提供的Onboarding(入职)流程是:
1. 输入数据
2. 经验大于3年,发布个性化入职欢迎消息
3. 工作经验3年或者以下,直接把数据存入后端系统

官方提供的是xml配置文件
/ src / main / resources / onboarding.bpmn20.xml

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef"><process id="onboarding" name="Onboarding" isExecutable="true"><startEvent id="startOnboarding" name="Start" activiti:initiator="initiator"></startEvent><userTask id="enterOnboardingData" name="Enter Data" activiti:assignee="${initiator}" activiti:candidateGroups="managers"><extensionElements><activiti:formProperty id="fullName" name="Full Name" type="string"></activiti:formProperty><activiti:formProperty id="yearsOfExperience" name="Years of Experience" type="long" required="true"></activiti:formProperty></extensionElements></userTask><sequenceFlow id="sid-1337EA98-7364-4198-B5D9-30F5341D6918" sourceRef="startOnboarding" targetRef="enterOnboardingData"></sequenceFlow><exclusiveGateway id="decision" name="Years of Experience" default="automatedIntroPath"></exclusiveGateway><sequenceFlow id="sid-42BE5661-C3D5-4DE6-96F5-73D34822727A" sourceRef="enterOnboardingData" targetRef="decision"></sequenceFlow><userTask id="personalizedIntro" name="Personalized Introduction and Data Entry" activiti:assignee="${initiator}" activiti:candidateGroups="managers"><extensionElements><activiti:formProperty id="personalWelcomeTime" name="Personal Welcome Time" type="date" datePattern="MM-dd-yyyy hh:mm"></activiti:formProperty></extensionElements></userTask><endEvent id="endOnboarding" name="End"></endEvent><sequenceFlow id="sid-37A73ACA-2E23-400B-96F3-71F77738DAFA" sourceRef="automatedIntro" targetRef="endOnboarding"></sequenceFlow><scriptTask id="automatedIntro" name="Generic and Automated Data Entry" scriptFormat="javascript" activiti:autoStoreVariables="false"><script><![CDATA[var dateAsString = new Date().toString();
execution.setVariable("autoWelcomeTime", dateAsString);]]></script></scriptTask><sequenceFlow id="automatedIntroPath" sourceRef="decision" targetRef="automatedIntro"></sequenceFlow><sequenceFlow id="personalizedIntroPath" name="&gt;3" sourceRef="decision" targetRef="personalizedIntro"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${yearsOfExperience > 3}]]></conditionExpression></sequenceFlow><sequenceFlow id="sid-BA6F061B-47B6-428B-8CE6-739244B14BD6" sourceRef="personalizedIntro" targetRef="endOnboarding"></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_onboarding"><bpmndi:BPMNPlane bpmnElement="onboarding" id="BPMNPlane_onboarding"><bpmndi:BPMNShape bpmnElement="startOnboarding" id="BPMNShape_startOnboarding"><omgdc:Bounds height="30.0" width="30.0" x="155.0" y="145.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="enterOnboardingData" id="BPMNShape_enterOnboardingData"><omgdc:Bounds height="80.0" width="100.0" x="240.0" y="120.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="decision" id="BPMNShape_decision"><omgdc:Bounds height="40.0" width="40.0" x="385.0" y="140.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="personalizedIntro" id="BPMNShape_personalizedIntro"><omgdc:Bounds height="80.0" width="100.0" x="519.0" y="15.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="endOnboarding" id="BPMNShape_endOnboarding"><omgdc:Bounds height="28.0" width="28.0" x="725.0" y="165.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="automatedIntro" id="BPMNShape_automatedIntro"><omgdc:Bounds height="80.0" width="100.0" x="520.0" y="255.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="sid-37A73ACA-2E23-400B-96F3-71F77738DAFA" id="BPMNEdge_sid-37A73ACA-2E23-400B-96F3-71F77738DAFA"><omgdi:waypoint x="570.0" y="255.0"></omgdi:waypoint><omgdi:waypoint x="570.0" y="179.0"></omgdi:waypoint><omgdi:waypoint x="725.0" y="179.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-1337EA98-7364-4198-B5D9-30F5341D6918" id="BPMNEdge_sid-1337EA98-7364-4198-B5D9-30F5341D6918"><omgdi:waypoint x="185.0" y="160.0"></omgdi:waypoint><omgdi:waypoint x="240.0" y="160.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="automatedIntroPath" id="BPMNEdge_automatedIntroPath"><omgdi:waypoint x="405.0" y="180.0"></omgdi:waypoint><omgdi:waypoint x="405.0" y="295.0"></omgdi:waypoint><omgdi:waypoint x="520.0" y="295.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="personalizedIntroPath" id="BPMNEdge_personalizedIntroPath"><omgdi:waypoint x="405.0" y="140.0"></omgdi:waypoint><omgdi:waypoint x="405.0" y="55.0"></omgdi:waypoint><omgdi:waypoint x="519.0" y="55.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-42BE5661-C3D5-4DE6-96F5-73D34822727A" id="BPMNEdge_sid-42BE5661-C3D5-4DE6-96F5-73D34822727A"><omgdi:waypoint x="340.0" y="160.0"></omgdi:waypoint><omgdi:waypoint x="385.0" y="160.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-BA6F061B-47B6-428B-8CE6-739244B14BD6" id="BPMNEdge_sid-BA6F061B-47B6-428B-8CE6-739244B14BD6"><omgdi:waypoint x="619.0" y="55.0"></omgdi:waypoint><omgdi:waypoint x="739.0" y="55.0"></omgdi:waypoint><omgdi:waypoint x="739.0" y="165.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>

这里要注意的是:
“Enter Data”节点有2个参数fullName和yearsOfExperience,candidate groups设置为managers
“Personalized Introduction and Data Entry”节点有1个参数personalWelcomeTime,candidate groups设置为managers
“Years of Experience”网关判断节点的条件是${yearsOfExperience > 3},默认走automatedIntroPath

修改OnboardingRequest.java,部署流程实例

package com.example;import java.text.ParseException;import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;public class OnboardingRequest {public static void main(String[] args) throws ParseException {ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration().setJdbcUrl("jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000").setJdbcUsername("sa").setJdbcPassword("").setJdbcDriver("org.h2.Driver").setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);ProcessEngine processEngine = cfg.buildProcessEngine();String pName = processEngine.getName();String ver = ProcessEngine.VERSION;System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]");RepositoryService repositoryService = processEngine.getRepositoryService();Deployment deployment = repositoryService.createDeployment().addClasspathResource("onboarding.bpmn20.xml").deploy();ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();System.out.println("Found process definition [" + processDefinition.getName() + "] with id [" + processDefinition.getId() + "]");}
}

5. 启动流程实例

已经部署的流程实例,可以通过Activiti API来启动,运行,查看历史记录,并以其他方式管理流程实例
日志级别可以继续使用DEBUG,这里不修改,比较方便可以看到修改和查询了哪些表格

修改OnboardingRequest.java,启动一个流程

package com.example;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;import org.activiti.engine.FormService;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.form.FormData;
import org.activiti.engine.form.FormProperty;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.activiti.engine.impl.form.DateFormType;
import org.activiti.engine.impl.form.LongFormType;
import org.activiti.engine.impl.form.StringFormType;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;public class OnboardingRequest {public static void main(String[] args) throws ParseException {ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration().setJdbcUrl("jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000").setJdbcUsername("sa").setJdbcPassword("").setJdbcDriver("org.h2.Driver").setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);ProcessEngine processEngine = cfg.buildProcessEngine();String pName = processEngine.getName();String ver = ProcessEngine.VERSION;System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]");RepositoryService repositoryService = processEngine.getRepositoryService();Deployment deployment = repositoryService.createDeployment().addClasspathResource("onboarding.bpmn20.xml").deploy();ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();System.out.println("Found process definition [" + processDefinition.getName() + "] with id [" + processDefinition.getId() + "]");RuntimeService runtimeService = processEngine.getRuntimeService();ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("onboarding");System.out.println("Onboarding process started with process instance id [" + processInstance.getProcessInstanceId()+ "] key [" + processInstance.getProcessDefinitionKey() + "]");TaskService taskService = processEngine.getTaskService();FormService formService = processEngine.getFormService();HistoryService historyService = processEngine.getHistoryService();Scanner scanner = new Scanner(System.in);while (processInstance != null && !processInstance.isEnded()) {List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("managers").list();System.out.println("Active outstanding tasks: [" + tasks.size() + "]");for (int i = 0; i < tasks.size(); i++) {Task task = tasks.get(i);System.out.println("Processing Task [" + task.getName() + "]");Map<String, Object> variables = new HashMap<String, Object>();FormData formData = formService.getTaskFormData(task.getId());for (FormProperty formProperty : formData.getFormProperties()) {if (StringFormType.class.isInstance(formProperty.getType())) {System.out.println(formProperty.getName() + "?");String value = scanner.nextLine();variables.put(formProperty.getId(), value);} else if (LongFormType.class.isInstance(formProperty.getType())) {System.out.println(formProperty.getName() + "? (Must be a whole number)");Long value = Long.valueOf(scanner.nextLine());variables.put(formProperty.getId(), value);} else if (DateFormType.class.isInstance(formProperty.getType())) {System.out.println(formProperty.getName() + "? (Must be a date m/d/yy)");DateFormat dateFormat = new SimpleDateFormat("m/d/yy");Date value = dateFormat.parse(scanner.nextLine());variables.put(formProperty.getId(), value);} else {System.out.println("<form type not supported>");}}taskService.complete(task.getId(), variables);HistoricActivityInstance endActivity = null;List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstance.getId()).finished().orderByHistoricActivityInstanceEndTime().asc().list();for (HistoricActivityInstance activity : activities) {if (activity.getActivityType() == "startEvent") {System.out.println("BEGIN " + processDefinition.getName() + " [" + processInstance.getProcessDefinitionKey()+ "] " + activity.getStartTime());}if (activity.getActivityType() == "endEvent") {// Handle edge case where end step happens so fast that the end step// and previous step(s) are sorted the same. So, cache the end step //and display it last to represent the logical sequence.endActivity = activity;} else {System.out.println("-- " + activity.getActivityName() + " [" + activity.getActivityId() + "] "+ activity.getDurationInMillis() + " ms");}}if (endActivity != null) {System.out.println("-- " + endActivity.getActivityName() + " [" + endActivity.getActivityId() + "] "+ endActivity.getDurationInMillis() + " ms");System.out.println("COMPLETE " + processDefinition.getName() + " ["+ processInstance.getProcessDefinitionKey() + "] " + endActivity.getEndTime());}}// Re-query the process instance, making sure the latest state is availableprocessInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getId()).singleResult();}scanner.close();}
}

直接运行OnboardingRequest.java
输入:joy
输入:2
可以看到输出结果:

-- Start [startOnboarding] 21 ms
-- Enter Data [enterOnboardingData] 6456 ms
-- Years of Experience [decision] 12 ms
-- Generic and Automated Data Entry [automatedIntro] 6 ms
-- End [endOnboarding] 0 ms

再次运行
输入:wang
输入:5
可以看到输出结果:

-- Start [startOnboarding] 8 ms
-- Enter Data [enterOnboardingData] 4505 ms
-- Years of Experience [decision] 13 ms
-- Personalized Introduction and Data Entry [personalizedIntro] 16981 ms
-- End [endOnboarding] 0 ms

工作经验为2年的,会走脚本流程”Generic and Automated Data Entry”,然后流程结束
工作经验为5年的,会走“Personalized Introduction and Data Entry”流程,然后流程结束

6. 用Java编写任务

上面的测试当工作经验小于或者为3年的时候,会走一个JS脚本的流程,这里把它改成Java代码输出的脚本

/src/main/java/com/example/AutomatedDataDelegate.java

package com.example;import java.util.Date;import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.JavaDelegate;public class AutomatedDataDelegate implements JavaDelegate {@Overridepublic void execute(DelegateExecution execution) throws Exception {Date now = new Date();execution.setVariable("autoWelcomeTime", now);System.out.println("Faux call to backend for [" + execution.getVariable("fullName") + "]");}}

修改/src/main/resources/onboarding.bpmn20.xml

    <scriptTask id="automatedIntro" name="Generic and Automated Data Entry" scriptFormat="javascript" activiti:autoStoreVariables="false"><script><![CDATA[var dateAsString = new Date().toString();
execution.setVariable("autoWelcomeTime", dateAsString);]]></script></scriptTask>

替换成

<serviceTask id="automatedIntro" name="Generic and Automated Data Entry" activiti:class="com.example.AutomatedDataDelegate"></serviceTask>

再进行测试

观察输出“Faux call to backend for [xxx]”,说明访问先前设置的过程变量

8. 分析

以一个全新的环境运行main
第一次运行的时候,输入joy1和年限为2年,从debug日志可以看出

1. 开始创建流程引擎之后,创建了25张表,然后流程引擎创建完毕

ACT_GE_PROPERTY默认数据是

08:55:51,189 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - SQL: insert into ACT_GE_PROPERTY 
values ('schema.version', '5.22.0.0', 1)
08:55:51,194 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - SQL: insert into ACT_GE_PROPERTY 
values ('schema.history', 'create(5.22.0.0)', 1)
08:55:51,195 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - SQL: insert into ACT_GE_PROPERTY 
values ('next.dbid', '1', 1)

2. 开始部署流程的时候,操作的表如下

先操作ACT_GE_PROPERTY表

09:01:05,769 [main] DEBUG org.activiti.engine.impl.persistence.entity.PropertyEntity.updateProperty  - ==>  Preparing: update ACT_GE_PROPERTY SET REV_ = ?, VALUE_ = ? where NAME_ = ? and REV_ = ? 
09:01:05,770 [main] DEBUG org.activiti.engine.impl.persistence.entity.PropertyEntity.updateProperty  - ==> Parameters: 2(Integer), 2501(String), next.dbid(String), 1(Integer)

查表ACT_RE_PROCDEF和ACT_RU_JOB

09:01:07,683 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectLatestProcessDefinitionByKey  - ==>  Preparing: select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)) 
09:01:07,683 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectLatestProcessDefinitionByKey  - ==> Parameters: onboarding(String), onboarding(String)
09:01:07,694 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectLatestProcessDefinitionByKey  - <==      Total: 0
09:01:07,701 [main] DEBUG org.activiti.engine.impl.persistence.entity.JobEntity.selectJobByTypeAndProcessDefinitionKeyNoTenantId  - ==>  Preparing: select J.* from ACT_RU_JOB J inner join ACT_RE_PROCDEF P on J.PROC_DEF_ID_ = P.ID_ where J.HANDLER_TYPE_ = ? and P.KEY_ = ? and (P.TENANT_ID_ = '' or P.TENANT_ID_ is null) 
09:01:07,702 [main] DEBUG org.activiti.engine.impl.persistence.entity.JobEntity.selectJobByTypeAndProcessDefinitionKeyNoTenantId  - ==> Parameters: timer-start-event(String), onboarding(String)
09:01:07,714 [main] DEBUG org.activiti.engine.impl.persistence.entity.JobEntity.selectJobByTypeAndProcessDefinitionKeyNoTenantId  - <==      Total: 0

ACT_RE_PROCDEF插入数据

09:07:57,554 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert DeploymentEntity[id=1, name=null]
09:07:57,554 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert ProcessDefinitionEntity[onboarding:1:4]
09:07:57,554 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert ResourceEntity[id=2, name=onboarding.bpmn20.xml]
09:07:57,554 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert ResourceEntity[id=3, name=onboarding.onboarding.png]
09:07:57,555 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - flush summary: 4 insert, 0 update, 0 delete.
09:07:57,555 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - now executing flush...
09:07:57,555 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: ProcessDefinitionEntity[onboarding:1:4]
09:07:57,556 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.insertProcessDefinition  - ==>  Preparing: insert into ACT_RE_PROCDEF(ID_, REV_, CATEGORY_, NAME_, KEY_, VERSION_, DEPLOYMENT_ID_, RESOURCE_NAME_, DGRM_RESOURCE_NAME_, DESCRIPTION_, HAS_START_FORM_KEY_, HAS_GRAPHICAL_NOTATION_ , SUSPENSION_STATE_, TENANT_ID_) values (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
09:07:57,559 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.insertProcessDefinition  - ==> Parameters: onboarding:1:4(String), http://www.activiti.org/processdef(String), Onboarding(String), onboarding(String), 1(Integer), 1(String), onboarding.bpmn20.xml(String), onboarding.onboarding.png(String), null, false(Boolean), true(Boolean), 1(Integer), (String)
09:07:57,562 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.insertProcessDefinition  - <==    Updates: 1

ACT_RE_DEPLOYMENT插入数据

09:07:57,562 [main] DEBUG org.activiti.engine.impl.persistence.entity.DeploymentEntity.insertDeployment  - ==>  Preparing: insert into ACT_RE_DEPLOYMENT(ID_, NAME_, CATEGORY_, TENANT_ID_, DEPLOY_TIME_) values(?, ?, ?, ?, ?) 
09:07:57,567 [main] DEBUG org.activiti.engine.impl.persistence.entity.DeploymentEntity.insertDeployment  - ==> Parameters: 1(String), null, null, (String), 2018-05-06 21:07:55.458(Timestamp)
09:07:57,579 [main] DEBUG org.activiti.engine.impl.persistence.entity.DeploymentEntity.insertDeployment  - <==    Updates: 1

ACT_GE_BYTEARRAY插入数据

09:07:57,634 [main] DEBUG org.activiti.engine.impl.persistence.entity.ResourceEntity.bulkInsertResource  - ==>  Preparing: INSERT INTO ACT_GE_BYTEARRAY(ID_, REV_, NAME_, BYTES_, DEPLOYMENT_ID_, GENERATED_) VALUES (?, 1, ?, ?, ?, ?) , (?, 1, ?, ?, ?, ?) 
09:07:57,636 [main] DEBUG org.activiti.engine.impl.persistence.entity.ResourceEntity.bulkInsertResource  - ==> Parameters: 2(String), onboarding.bpmn20.xml(String), java.io.ByteArrayInputStream@289710d9(ByteArrayInputStream), 1(String), false(Boolean), 3(String), onboarding.onboarding.png(String), java.io.ByteArrayInputStream@5a18cd76(ByteArrayInputStream), 1(String), true(Boolean)
09:07:57,651 [main] DEBUG org.activiti.engine.impl.persistence.entity.ResourceEntity.bulkInsertResource  - <==    Updates: 2

(这是编写在测试代码中的部分)再查询一下是否部署成功,显示查到一条记录

09:07:57,688 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectProcessDefinitionsByQueryCriteria_mysql  - ==>  Preparing: select distinct RES.* from ACT_RE_PROCDEF RES WHERE RES.DEPLOYMENT_ID_ = ? order by RES.ID_ asc LIMIT ? OFFSET ? 
09:07:57,689 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectProcessDefinitionsByQueryCriteria_mysql  - ==> Parameters: 1(String), 2147483647(Integer), 0(Integer)
09:07:57,692 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectProcessDefinitionsByQueryCriteria_mysql  - <==      Total: 1

流程部署就完成了

3. 开始启动流程实例

流程部署完成后的ID是onboarding:1:4
查表

09:07:57,697 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectLatestProcessDefinitionByKey  - ==>  Preparing: select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)) 
09:07:57,697 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectLatestProcessDefinitionByKey  - ==> Parameters: onboarding(String), onboarding(String)
09:07:57,700 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectLatestProcessDefinitionByKey  - <==      Total: 1
09:07:57,701 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectProcessDefinitionById  - ==>  Preparing: select * from ACT_RE_PROCDEF where ID_ = ? 
09:07:57,702 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectProcessDefinitionById  - ==> Parameters: onboarding:1:4(String)
09:07:57,704 [main] DEBUG org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectProcessDefinitionById  - <==      Total: 1

查表,看是否执行ID被使用

09:07:57,731 [main] DEBUG org.activiti.engine.impl.persistence.entity.JobEntity.selectJobsByExecutionId  - ==>  Preparing: select * from ACT_RU_JOB J where J.EXECUTION_ID_ = ? 
09:07:57,731 [main] DEBUG org.activiti.engine.impl.persistence.entity.JobEntity.selectJobsByExecutionId  - ==> Parameters: 5(String)
09:07:57,732 [main] DEBUG org.activiti.engine.impl.persistence.entity.JobEntity.selectJobsByExecutionId  - <==      Total: 0
09:07:57,736 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByExecutionId  - ==>  Preparing: select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 
09:07:57,737 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByExecutionId  - ==> Parameters: 5(String)
09:07:57,752 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByExecutionId  - <==      Total: 0

插入数据
按照表的先后顺序是:
ACT_HI_VARINST
ACT_HI_TASKINST
ACT_HI_PROCINST
ACT_HI_ACTINST
ACT_HI_IDENTITYLINK
ACT_RU_EXECUTION
ACT_RU_TASK
ACT_RU_IDENTITYLINK
ACT_RU_VARIABLE

09:07:57,764 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricVariableInstanceEntity[id=6, name=initiator, revision=0, type=null]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert ProcessInstance[5]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricTaskInstanceEntity[id=9, name=Enter Data]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert VariableInstanceEntity[id=6, name=initiator, type=null]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricProcessInstanceEntity[superProcessInstanceId=null]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricActivityInstanceEntity[activityId=startOnboarding, activityName=Start]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricActivityInstanceEntity[activityId=enterOnboardingData, activityName=Enter Data]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert Task[id=9, name=Enter Data]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert IdentityLinkEntity[id=10, type=candidate, groupId=managers, taskId=9]
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert org.activiti.engine.impl.persistence.entity.HistoricIdentityLinkEntity@45fd9a4d
09:07:57,765 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - flush summary: 10 insert, 0 update, 0 delete.
09:07:57,766 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - now executing flush...
09:07:57,766 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: HistoricVariableInstanceEntity[id=6, name=initiator, revision=0, type=null]
09:07:57,766 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.insertHistoricVariableInstance  - ==>  Preparing: insert into ACT_HI_VARINST (ID_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, NAME_, REV_, VAR_TYPE_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_, CREATE_TIME_, LAST_UPDATED_TIME_) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
09:07:57,769 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.insertHistoricVariableInstance  - ==> Parameters: 6(String), 5(String), 5(String), null, initiator(String), 0(Integer), null(String), null, null, null, null, null, 2018-05-06 21:07:57.709(Timestamp), 2018-05-06 21:07:57.709(Timestamp)
09:07:57,773 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.insertHistoricVariableInstance  - <==    Updates: 1
09:07:57,773 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: HistoricTaskInstanceEntity[id=9, name=Enter Data]
09:07:57,774 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.insertHistoricTaskInstance  - ==>  Preparing: insert into ACT_HI_TASKINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, OWNER_, ASSIGNEE_, START_TIME_, CLAIM_TIME_, END_TIME_, DURATION_, DELETE_REASON_, TASK_DEF_KEY_, FORM_KEY_, PRIORITY_, DUE_DATE_, CATEGORY_, TENANT_ID_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
09:07:57,778 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.insertHistoricTaskInstance  - ==> Parameters: 9(String), onboarding:1:4(String), 5(String), 5(String), Enter Data(String), null, null, null, null, 2018-05-06 21:07:57.754(Timestamp), null, null, null, null, enterOnboardingData(String), null, 50(Integer), null, null, (String)
09:07:57,781 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.insertHistoricTaskInstance  - <==    Updates: 1
09:07:57,781 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: HistoricProcessInstanceEntity[superProcessInstanceId=null]
09:07:57,781 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.insertHistoricProcessInstance  - ==>  Preparing: insert into ACT_HI_PROCINST ( ID_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, START_TIME_, END_TIME_, DURATION_, START_USER_ID_, START_ACT_ID_, END_ACT_ID_, SUPER_PROCESS_INSTANCE_ID_, DELETE_REASON_, TENANT_ID_, NAME_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
09:07:57,783 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.insertHistoricProcessInstance  - ==> Parameters: 5(String), 5(String), null, onboarding:1:4(String), 2018-05-06 21:07:57.713(Timestamp), null, null, null, startOnboarding(String), null, null, null, (String), null
09:07:57,786 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.insertHistoricProcessInstance  - <==    Updates: 1
09:07:57,791 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.bulkInsertHistoricActivityInstance  - ==>  Preparing: insert into ACT_HI_ACTINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
09:07:57,795 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.bulkInsertHistoricActivityInstance  - ==> Parameters: 7(String), onboarding:1:4(String), 5(String), 5(String), startOnboarding(String), null, null, Start(String), startEvent(String), null, 2018-05-06 21:07:57.713(Timestamp), 2018-05-06 21:07:57.734(Timestamp), 21(Long), (String), 8(String), onboarding:1:4(String), 5(String), 5(String), enterOnboardingData(String), 9(String), null, Enter Data(String), userTask(String), null, 2018-05-06 21:07:57.735(Timestamp), null, null, (String)
09:07:57,801 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.bulkInsertHistoricActivityInstance  - <==    Updates: 2
09:07:57,802 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: org.activiti.engine.impl.persistence.entity.HistoricIdentityLinkEntity@45fd9a4d
09:07:57,803 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricIdentityLinkEntity.insertHistoricIdentityLink  - ==>  Preparing: insert into ACT_HI_IDENTITYLINK (ID_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_) values (?, ?, ?, ?, ?, ?) 
09:07:57,803 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricIdentityLinkEntity.insertHistoricIdentityLink  - ==> Parameters: 10(String), candidate(String), null, managers(String), 9(String), null
09:07:57,806 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricIdentityLinkEntity.insertHistoricIdentityLink  - <==    Updates: 1
09:07:57,807 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: ProcessInstance[5]
09:07:57,807 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.insertExecution  - ==>  Preparing: insert into ACT_RU_EXECUTION (ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_,IS_EVENT_SCOPE_, PARENT_ID_, SUPER_EXEC_, SUSPENSION_STATE_, CACHED_ENT_STATE_, TENANT_ID_, NAME_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
09:07:57,810 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.insertExecution  - ==> Parameters: 5(String), 5(String), null, onboarding:1:4(String), enterOnboardingData(String), true(Boolean), false(Boolean), true(Boolean), false(Boolean), null, null, 1(Integer), 2(Integer), (String), null
09:07:57,827 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.insertExecution  - <==    Updates: 1
09:07:57,827 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: Task[id=9, name=Enter Data]
09:07:57,828 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.insertTask  - ==>  Preparing: insert into ACT_RU_TASK (ID_, REV_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, PRIORITY_, CREATE_TIME_, OWNER_, ASSIGNEE_, DELEGATION_, EXECUTION_ID_, PROC_INST_ID_, PROC_DEF_ID_, TASK_DEF_KEY_, DUE_DATE_, CATEGORY_, SUSPENSION_STATE_, TENANT_ID_, FORM_KEY_) values (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
09:07:57,830 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.insertTask  - ==> Parameters: 9(String), Enter Data(String), null, null, 50(Integer), 2018-05-06 21:07:57.736(Timestamp), null, null, null, 5(String), 5(String), onboarding:1:4(String), enterOnboardingData(String), null, null, 1(Integer), (String), null
09:07:57,833 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.insertTask  - <==    Updates: 1
09:07:57,833 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: IdentityLinkEntity[id=10, type=candidate, groupId=managers, taskId=9]
09:07:57,833 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.insertIdentityLink  - ==>  Preparing: insert into ACT_RU_IDENTITYLINK (ID_, REV_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_, PROC_DEF_ID_) values (?, 1, ?, ?, ?, ?, ?, ?) 
09:07:57,835 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.insertIdentityLink  - ==> Parameters: 10(String), candidate(String), null, managers(String), 9(String), null, null
09:07:57,847 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.insertIdentityLink  - <==    Updates: 1
09:07:57,847 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - inserting: VariableInstanceEntity[id=6, name=initiator, type=null]
09:07:57,847 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.insertVariableInstance  - ==>  Preparing: insert into ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
09:07:57,848 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.insertVariableInstance  - ==> Parameters: 6(String), null(String), initiator(String), 5(String), 5(String), null, null, null, null, null, null
09:07:57,861 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.insertVariableInstance  - <==    Updates: 1
09:07:57,861 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committing...
09:07:57,861 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - committing the ibatis sql session...
09:07:57,861 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Committing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
09:07:57,864 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committed...
09:07:57,866 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
09:07:57,866 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
09:07:57,866 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource  - Returned connection 2143431083 to pool.
09:07:57,866 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - --- StartProcessInstanceCmd finished 

流程实例到这里就启动完毕了
Onboarding process started with process instance id [5] key [onboarding]

4. 查询任务并完成任务

使用managers角色查询个人任务

ACT_RU_TASK
ACT_RU_IDENTITYLINK

09:07:57,909 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTaskByQueryCriteria  - ==>  Preparing: select distinct RES.* from ACT_RU_TASK RES inner join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ WHERE RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and ( I.GROUP_ID_ IN ( ? ) ) order by RES.ID_ asc LIMIT ? OFFSET ? 
09:07:57,910 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTaskByQueryCriteria  - ==> Parameters: managers(String), 2147483647(Integer), 0(Integer)
09:07:57,914 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTaskByQueryCriteria  - <==      Total: 1

查询结果是由1个任务
当前所在的流程环节是Enter Data

Active outstanding tasks: [1]
Processing Task [Enter Data]

ACT_RU_TASK
ACT_RU_EXECUTION
ACT_RU_VARIABLE

09:07:57,920 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTask  - ==>  Preparing: select * from ACT_RU_TASK where ID_ = ? 
09:07:57,920 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTask  - ==> Parameters: 9(String)
09:07:57,925 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTask  - <==      Total: 1
09:07:57,926 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecution  - ==>  Preparing: select * from ACT_RU_EXECUTION where ID_ = ? 
09:07:57,927 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecution  - ==> Parameters: 5(String)
09:07:57,930 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecution  - <==      Total: 1
09:07:57,932 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByExecutionId  - ==>  Preparing: select * from ACT_RU_VARIABLE where EXECUTION_ID_ = ? and TASK_ID_ is null 
09:07:57,933 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByExecutionId  - ==> Parameters: 5(String)
09:07:57,936 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByExecutionId  - <==      Total: 1

获取到当前任务的流程变量之后
调用taskService.complete(task.getId(), variables);完成提交当前任务
这其中做了一系列的查询/插入/删除操作

10:23:48,580 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - --- starting CompleteTaskCmd --------------------------------------------------------
10:23:48,581 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Opening JDBC Connection
10:23:48,581 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource  - Checked out connection 2143431083 from pool.
10:23:48,581 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,582 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTask  - ==>  Preparing: select * from ACT_RU_TASK where ID_ = ? 
10:23:48,582 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTask  - ==> Parameters: 9(String)
10:23:48,585 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTask  - <==      Total: 1
10:23:48,586 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecution  - ==>  Preparing: select * from ACT_RU_EXECUTION where ID_ = ? 
10:23:48,587 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecution  - ==> Parameters: 5(String)
10:23:48,590 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecution  - <==      Total: 1
10:23:48,590 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByExecutionId  - ==>  Preparing: select * from ACT_RU_VARIABLE where EXECUTION_ID_ = ? and TASK_ID_ is null 
10:23:48,591 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByExecutionId  - ==> Parameters: 5(String)
10:23:48,593 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByExecutionId  - <==      Total: 1
10:23:48,593 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,594 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: FULL
10:23:48,594 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,594 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: FULL
10:23:48,594 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByParentTaskId  - ==>  Preparing: select * from ACT_RU_TASK where PARENT_TASK_ID_ = ? 
10:23:48,595 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByParentTaskId  - ==> Parameters: 9(String)
10:23:48,600 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByParentTaskId  - <==      Total: 0
10:23:48,603 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.selectIdentityLinksByTask  - ==>  Preparing: select * from ACT_RU_IDENTITYLINK where TASK_ID_ = ? 
10:23:48,604 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.selectIdentityLinksByTask  - ==> Parameters: 9(String)
10:23:48,606 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.selectIdentityLinksByTask  - <==      Total: 1
10:23:48,609 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByTaskId  - ==>  Preparing: select * from ACT_RU_VARIABLE where TASK_ID_ = ? 
10:23:48,609 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByTaskId  - ==> Parameters: 9(String)
10:23:48,611 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByTaskId  - <==      Total: 0
10:23:48,611 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: AUDIT
10:23:48,611 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.selectHistoricTaskInstance  - ==>  Preparing: select * from ACT_HI_TASKINST where ID_ = ? 
10:23:48,612 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.selectHistoricTaskInstance  - ==> Parameters: 9(String)
10:23:48,617 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.selectHistoricTaskInstance  - <==      Total: 1
10:23:48,622 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByExecutionId  - ==>  Preparing: select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 
10:23:48,622 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByExecutionId  - ==> Parameters: 5(String)
10:23:48,625 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.selectTasksByExecutionId  - <==      Total: 1
10:23:48,625 [main] DEBUG org.activiti.engine.impl.bpmn.behavior.BpmnActivityBehavior  - Leaving activity 'enterOnboardingData'
10:23:48,625 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,630 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.selectHistoricActivityInstancesByQueryCriteria  - ==>  Preparing: select RES.* from ACT_HI_ACTINST RES WHERE RES.EXECUTION_ID_ = ? and RES.ACT_ID_ = ? and RES.END_TIME_ is null order by RES.ID_ asc LIMIT ? OFFSET ? 
10:23:48,632 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.selectHistoricActivityInstancesByQueryCriteria  - ==> Parameters: 5(String), enterOnboardingData(String), 1(Integer), 0(Integer)
10:23:48,636 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.selectHistoricActivityInstancesByQueryCriteria  - <==      Total: 1
10:23:48,637 [main] DEBUG org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerTake  - ProcessInstance[5] takes transition (enterOnboardingData)--sid-42BE5661-C3D5-4DE6-96F5-73D34822727A-->(decision)
10:23:48,637 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,637 [main] DEBUG org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute  - ProcessInstance[5] executes Activity(decision): org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehavior
10:23:48,637 [main] DEBUG org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehavior  - Leaving activity 'decision'
10:23:48,650 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,651 [main] DEBUG org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerTake  - ProcessInstance[5] takes transition (decision)--automatedIntroPath-->(automatedIntro)
10:23:48,651 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,651 [main] DEBUG org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute  - ProcessInstance[5] executes Activity(automatedIntro): org.activiti.engine.impl.bpmn.helper.ClassDelegate
10:23:48,657 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,658 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: FULL
Faux call to backend for [joy1]
10:23:48,658 [main] DEBUG org.activiti.engine.impl.bpmn.behavior.BpmnActivityBehavior  - Leaving activity 'automatedIntro'
10:23:48,658 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,658 [main] DEBUG org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerTake  - ProcessInstance[5] takes transition (automatedIntro)--sid-37A73ACA-2E23-400B-96F3-71F77738DAFA-->(endOnboarding)
10:23:48,659 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,659 [main] DEBUG org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute  - ProcessInstance[5] executes Activity(endOnboarding): org.activiti.engine.impl.bpmn.behavior.NoneEndEventActivityBehavior
10:23:48,659 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,659 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,660 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT
10:23:48,660 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.selectHistoricProcessInstance  - ==>  Preparing: select * from ACT_HI_PROCINST where PROC_INST_ID_ = ? 
10:23:48,661 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.selectHistoricProcessInstance  - ==> Parameters: 5(String)
10:23:48,665 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.selectHistoricProcessInstance  - <==      Total: 1
10:23:48,666 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity  - destroying ProcessInstance[5]
10:23:48,666 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,666 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,666 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,667 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.selectHistoricVariableInstanceByVariableInstanceId  - ==>  Preparing: select * from ACT_HI_VARINST where ID_ = ? 
10:23:48,667 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.selectHistoricVariableInstanceByVariableInstanceId  - ==> Parameters: 6(String)
10:23:48,670 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.selectHistoricVariableInstanceByVariableInstanceId  - <==      Total: 1
10:23:48,671 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,671 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,671 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - skipping redundant delete: VariableInstanceEntity[id=11, name=yearsOfExperience, type=long, longValue=2, textValue=2]
10:23:48,671 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,671 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - skipping redundant delete: VariableInstanceEntity[id=15, name=autoWelcomeTime, type=date, longValue=1525616628657]
10:23:48,671 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,671 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - skipping redundant delete: VariableInstanceEntity[id=6, name=initiator, type=null]
10:23:48,671 [main] DEBUG org.activiti.engine.impl.history.DefaultHistoryManager  - Current history level: AUDIT, level required: ACTIVITY
10:23:48,671 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - skipping redundant delete: VariableInstanceEntity[id=12, name=fullName, type=string, textValue=joy1]
10:23:48,672 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecutionsByParentExecutionId  - ==>  Preparing: select * from ACT_RU_EXECUTION where PARENT_ID_ = ? 
10:23:48,672 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecutionsByParentExecutionId  - ==> Parameters: 5(String)
10:23:48,673 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectExecutionsByParentExecutionId  - <==      Total: 0
10:23:48,674 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.selectIdentityLinksByProcessInstance  - ==>  Preparing: select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ? 
10:23:48,674 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.selectIdentityLinksByProcessInstance  - ==> Parameters: 5(String)
10:23:48,675 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.selectIdentityLinksByProcessInstance  - <==      Total: 0
10:23:48,676 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricVariableInstanceEntity[id=11, name=yearsOfExperience, revision=0, type=long, longValue=2, textValue=2]
10:23:48,676 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricVariableInstanceEntity[id=12, name=fullName, revision=0, type=string, textValue=joy1]
10:23:48,676 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricVariableInstanceEntity[id=15, name=autoWelcomeTime, revision=0, type=date, longValue=1525616628657]
10:23:48,676 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricActivityInstanceEntity[activityId=decision, activityName=Years of Experience]
10:23:48,676 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricActivityInstanceEntity[activityId=automatedIntro, activityName=Generic and Automated Data Entry]
10:23:48,676 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   insert HistoricActivityInstanceEntity[activityId=endOnboarding, activityName=End]
10:23:48,676 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   update HistoricVariableInstanceEntity[id=6, name=initiator, revision=0, type=null]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   update HistoricTaskInstanceEntity[id=9, name=Enter Data]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   update HistoricActivityInstanceEntity[activityId=enterOnboardingData, activityName=Enter Data]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   update HistoricProcessInstanceEntity[superProcessInstanceId=null]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   delete IdentityLinkEntity[id=10, type=candidate, groupId=managers, taskId=9]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   delete Task[id=9, name=Enter Data]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   delete VariableInstanceEntity[id=6, name=initiator, type=null]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  -   delete ProcessInstance[5]
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - flush summary: 6 insert, 4 update, 4 delete.
10:23:48,677 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - now executing flush...
10:23:48,683 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.bulkInsertHistoricVariableInstance  - ==>  Preparing: insert into ACT_HI_VARINST (ID_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, NAME_, REV_, VAR_TYPE_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_, CREATE_TIME_, LAST_UPDATED_TIME_) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
10:23:48,690 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.bulkInsertHistoricVariableInstance  - ==> Parameters: 11(String), 5(String), 5(String), null, yearsOfExperience(String), 0(Integer), long(String), null, null, 2(Long), 2(String), null, 2018-05-06 22:23:48.594(Timestamp), 2018-05-06 22:23:48.671(Timestamp), 12(String), 5(String), 5(String), null, fullName(String), 0(Integer), string(String), null, null, null, joy1(String), null, 2018-05-06 22:23:48.594(Timestamp), 2018-05-06 22:23:48.671(Timestamp), 15(String), 5(String), 5(String), null, autoWelcomeTime(String), 0(Integer), date(String), null, null, 1525616628657(Long), null, null, 2018-05-06 22:23:48.658(Timestamp), 2018-05-06 22:23:48.671(Timestamp)
10:23:48,693 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.bulkInsertHistoricVariableInstance  - <==    Updates: 3
10:23:48,699 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.bulkInsertHistoricActivityInstance  - ==>  Preparing: insert into ACT_HI_ACTINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
10:23:48,706 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.bulkInsertHistoricActivityInstance  - ==> Parameters: 13(String), onboarding:1:4(String), 5(String), 5(String), decision(String), null, null, Years of Experience(String), exclusiveGateway(String), null, 2018-05-06 22:23:48.637(Timestamp), 2018-05-06 22:23:48.651(Timestamp), 14(Long), (String), 14(String), onboarding:1:4(String), 5(String), 5(String), automatedIntro(String), null, null, Generic and Automated Data Entry(String), serviceTask(String), null, 2018-05-06 22:23:48.651(Timestamp), 2018-05-06 22:23:48.658(Timestamp), 7(Long), (String), 16(String), onboarding:1:4(String), 5(String), 5(String), endOnboarding(String), null, null, End(String), endEvent(String), null, 2018-05-06 22:23:48.659(Timestamp), 2018-05-06 22:23:48.659(Timestamp), 0(Long), (String)
10:23:48,708 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.bulkInsertHistoricActivityInstance  - <==    Updates: 3
10:23:48,708 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - updating: HistoricVariableInstanceEntity[id=6, name=initiator, revision=0, type=null]
10:23:48,711 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.updateHistoricVariableInstance  - ==>  Preparing: update ACT_HI_VARINST set REV_ = ?, BYTEARRAY_ID_ = ?, DOUBLE_ = ?, LONG_ = ?, TEXT_ = ?, TEXT2_ = ?, VAR_TYPE_ = ?, LAST_UPDATED_TIME_ = ? where ID_ = ? and REV_ = ? 
10:23:48,713 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.updateHistoricVariableInstance  - ==> Parameters: 1(Integer), null, null, null, null, null, null(String), 2018-05-06 22:23:48.671(Timestamp), 6(String), 0(Integer)
10:23:48,714 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.updateHistoricVariableInstance  - <==    Updates: 1
10:23:48,716 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - updating: HistoricTaskInstanceEntity[id=9, name=Enter Data]
10:23:48,716 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.updateHistoricTaskInstance  - ==>  Preparing: update ACT_HI_TASKINST set PROC_DEF_ID_ = ?, EXECUTION_ID_ = ?, NAME_ = ?, PARENT_TASK_ID_ = ?, DESCRIPTION_ = ?, OWNER_ = ?, ASSIGNEE_ = ?, CLAIM_TIME_ = ?, END_TIME_ = ?, DURATION_ = ?, DELETE_REASON_ = ?, TASK_DEF_KEY_ = ?, FORM_KEY_ = ?, PRIORITY_ = ?, DUE_DATE_ = ?, CATEGORY_ = ? where ID_ = ? 
10:23:48,717 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.updateHistoricTaskInstance  - ==> Parameters: onboarding:1:4(String), 5(String), Enter Data(String), null, null, null, null, null, 2018-05-06 22:23:48.621(Timestamp), 9675(Long), completed(String), enterOnboardingData(String), null, 50(Integer), null, null, 9(String)
10:23:48,719 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.updateHistoricTaskInstance  - <==    Updates: 1
10:23:48,719 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - updating: HistoricActivityInstanceEntity[activityId=enterOnboardingData, activityName=Enter Data]
10:23:48,719 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.updateHistoricActivityInstance  - ==>  Preparing: update ACT_HI_ACTINST set EXECUTION_ID_ = ?, ASSIGNEE_ = ?, END_TIME_ = ?, DURATION_ = ? where ID_ = ? 
10:23:48,720 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.updateHistoricActivityInstance  - ==> Parameters: 5(String), null, 2018-05-06 22:23:48.637(Timestamp), 9701(Long), 8(String)
10:23:48,722 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.updateHistoricActivityInstance  - <==    Updates: 1
10:23:48,722 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - updating: HistoricProcessInstanceEntity[superProcessInstanceId=null]
10:23:48,722 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.updateHistoricProcessInstance  - ==>  Preparing: update ACT_HI_PROCINST set PROC_DEF_ID_ = ?, BUSINESS_KEY_ = ?, START_TIME_ = ?, END_TIME_ = ?, DURATION_ = ?, END_ACT_ID_ = ?, DELETE_REASON_ = ?, NAME_ = ? where ID_ = ? 
10:23:48,724 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.updateHistoricProcessInstance  - ==> Parameters: onboarding:1:4(String), null, 2018-05-06 22:23:38.922(Timestamp), 2018-05-06 22:23:48.665(Timestamp), 9743(Long), endOnboarding(String), null, null, 5(String)
10:23:48,725 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity.updateHistoricProcessInstance  - <==    Updates: 1
10:23:48,725 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - executing: delete IdentityLinkEntity[id=10, type=candidate, groupId=managers, taskId=9]
10:23:48,726 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.deleteIdentityLink  - ==>  Preparing: delete from ACT_RU_IDENTITYLINK where ID_ = ? 
10:23:48,726 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.deleteIdentityLink  - ==> Parameters: 10(String)
10:23:48,728 [main] DEBUG org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.deleteIdentityLink  - <==    Updates: 1
10:23:48,728 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - executing: delete Task[id=9, name=Enter Data]
10:23:48,728 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.deleteTask  - ==>  Preparing: delete from ACT_RU_TASK where ID_ = ? and REV_ = ? 
10:23:48,729 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.deleteTask  - ==> Parameters: 9(String), 1(Integer)
10:23:48,738 [main] DEBUG org.activiti.engine.impl.persistence.entity.TaskEntity.deleteTask  - <==    Updates: 1
10:23:48,739 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - executing: delete VariableInstanceEntity[id=6, name=initiator, type=null]
10:23:48,739 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.deleteVariableInstance  - ==>  Preparing: delete from ACT_RU_VARIABLE where ID_ = ? and REV_ = ? 
10:23:48,739 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.deleteVariableInstance  - ==> Parameters: 6(String), 1(Integer)
10:23:48,741 [main] DEBUG org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.deleteVariableInstance  - <==    Updates: 1
10:23:48,742 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - executing: delete ProcessInstance[5]
10:23:48,742 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.deleteExecution  - ==>  Preparing: delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ? 
10:23:48,743 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.deleteExecution  - ==> Parameters: 5(String), 1(Integer)
10:23:48,752 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.deleteExecution  - <==    Updates: 1
10:23:48,753 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committing...
10:23:48,753 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - committing the ibatis sql session...
10:23:48,753 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Committing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,756 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committed...
10:23:48,756 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,757 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,757 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource  - Returned connection 2143431083 to pool.
10:23:48,758 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - --- CompleteTaskCmd finished --------------------------------------------------------
10:23:48,758 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - 

到这里,任务根据配置,是直接执行到了结束节点

5. 查询历史

这一段是写在测试代码的,作为演示而已

输出历史任务
10:23:48,759 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - 10:23:48,759 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - --- starting HistoricActivityInstanceQueryImpl --------------------------------------------------------
10:23:48,760 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Opening JDBC Connection
10:23:48,760 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource  - Checked out connection 2143431083 from pool.
10:23:48,760 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,762 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.selectHistoricActivityInstancesByQueryCriteria  - ==>  Preparing: select RES.* from ACT_HI_ACTINST RES WHERE RES.PROC_INST_ID_ = ? and RES.END_TIME_ is not null order by END_TIME_ asc LIMIT ? OFFSET ? 
10:23:48,765 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.selectHistoricActivityInstancesByQueryCriteria  - ==> Parameters: 5(String), 2147483647(Integer), 0(Integer)
10:23:48,770 [main] DEBUG org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity.selectHistoricActivityInstancesByQueryCriteria  - <==      Total: 5
10:23:48,771 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - flush summary: 0 insert, 0 update, 0 delete.
10:23:48,771 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - now executing flush...
10:23:48,771 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committing...
10:23:48,771 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - committing the ibatis sql session...
10:23:48,771 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committed...
10:23:48,771 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,772 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,772 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource  - Returned connection 2143431083 to pool.
10:23:48,772 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - --- HistoricActivityInstanceQueryImpl finished --------------------------------------------------------
10:23:48,772 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - -- Start [startOnboarding] 14 ms
-- Enter Data [enterOnboardingData] 9701 ms
-- Years of Experience [decision] 14 ms
-- Generic and Automated Data Entry [automatedIntro] 7 ms
-- End [endOnboarding] 0 ms
10:23:48,772 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - 10:23:48,773 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - --- starting ProcessInstanceQueryImpl --------------------------------------------------------
10:23:48,787 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Opening JDBC Connection
10:23:48,787 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource  - Checked out connection 2143431083 from pool.
10:23:48,787 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,787 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectProcessInstanceByQueryCriteria  - ==>  Preparing: select distinct RES.* , P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId from ACT_RU_EXECUTION RES inner join ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_ WHERE RES.PARENT_ID_ is null and RES.ID_ = ? and RES.PROC_INST_ID_ = ? order by RES.ID_ asc LIMIT ? OFFSET ? 
10:23:48,788 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectProcessInstanceByQueryCriteria  - ==> Parameters: 5(String), 5(String), 2147483647(Integer), 0(Integer)
10:23:48,790 [main] DEBUG org.activiti.engine.impl.persistence.entity.ExecutionEntity.selectProcessInstanceByQueryCriteria  - <==      Total: 0
10:23:48,790 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - flush summary: 0 insert, 0 update, 0 delete.
10:23:48,790 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - now executing flush...
10:23:48,790 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committing...
10:23:48,790 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - committing the ibatis sql session...
10:23:48,790 [main] DEBUG org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext  - firing event committed...
10:23:48,791 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,792 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction  - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7fc229ab]
10:23:48,792 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource  - Returned connection 2143431083 to pool.
10:23:48,792 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - --- ProcessInstanceQueryImpl finished --------------------------------------------------------
10:23:48,792 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor  - 

同理可以分析第二次运行的debug日志

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Unity Shader Alpha混合 Blending

    Alpha Blending,中文译作Alpha混合Blending就是控制透明的。处于光栅化的最后阶段。这里例如我们给一个模型贴一个材质,那么在某个点计算出来颜色值称为源,而该点之前累积的颜色值,叫目标。语法Blend Off 不混合Blend SrcFactor DstFactor SrcFactor是源系数,DstFact…...

    2024/4/21 8:53:07
  2. SQL(基础查询)、SQL(关联查询)

    1. SQL(基础查询) 1.1. 基本查询语句 1.1.1. FROM子句 SQL查询语句的语法如下:copytextpop-upSELECT <*, column [alias], …> FROM table; SELECT <*, column [alias], …> FROM table;其中:SELECT用于指定要查询的列,FROM指定要从哪个表中查询。如果要查询所有…...

    2024/4/21 8:53:06
  3. VC中MessageBox与AfxMessageBox用法与区别

    一、MessageBox()用法 1、函数原型 Messagebox函数在Win32 API和MFC里的定义有区别。 Win32 API的定义如下:int WINAPI MessageBox(HWND hWnd, // handle of owner windowLPCTSTR lpText, // address of text in message boxLPCTSTR lpCaption, // address of ti…...

    2024/4/21 8:53:05
  4. 游戏系统开发笔记(三)——通用代码库

    墨水比较有限,工作时基本也都是着眼小处,除了工作内容涉及过的几个模块,其余的暂时并未多作关注,所以基本上还只是停留在感性认识上。不过我倒觉得这是难免,毕竟游戏产品放到整个软件行业来说也是个较复杂的东西,需要花很多时间才能把其间各种技术融会贯通为我所用,但等…...

    2024/4/21 8:53:04
  5. C++builder继承TGraphicControl类

    继承TGraphicControl类产生一个新画布,画面具有自绘保持功能。相当于画板控件。 .hpp文件内容如下:#ifndef __MYGRIPHIC #define __MYGRIPHIC class TMyGraphic : public TGraphicControl {public:__fastcall TMyGraphic(TComponent* AOwner);void __fastcall Paint(void);…...

    2024/4/21 8:53:03
  6. SQL ——窗口函数简介

    目录1、窗口函数的描述2、窗口函数中的元素2.1、分区2.2、排序2.3、框架3、支持窗口函数的查询元素4、窗口函数类别4.1、排名函数4.2、分布函数4.3、偏移函数1、窗口函数的描述窗口函数作用于一个数据行集合。窗口是标准的SQL术语,用来描述SQL语句内OVER子句划定的内容,这个内…...

    2024/4/21 8:53:02
  7. C#控制台简单魔塔小游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Threading; using System.Collections.Generic; using System.Threading; namespace 简单程序__20180817__1 { #region…...

    2024/4/21 8:53:01
  8. 在WinCE下绘制半透的效果要注意的问题

    在Windows XP 中实现半透明效果并不是件难事,仅仅只需要调SetLayeredWindowAttributes函数即可。如果同样的效果也想在Windows CE 中重现呢?因为Windows CE没有SetLayeredWindowAttributes 函数,不过在Windows CE 5.0开始支持AlphaBlend,该函数的作用是将两个HDC根据一定的比…...

    2024/4/21 8:53:00
  9. 基于状态模式的简单工作流实现

    **欢迎关注公众号****微信扫一扫**工作流技术(Workflow) 是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示,并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种…...

    2024/4/21 8:52:59
  10. 关于sql和MySQL的语句执行顺序(必看!!!)

    今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序:sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、s…...

    2024/4/20 9:11:27
  11. VS2010/MFC 中MessageBox函数显示变量的用法(显示数字、字符串)

    在VS2010/MFC中明显感觉到MessageBox()的用法和VC6.0不一样了。 今天用到了MessageBox()函数的时候,用VC6.0的方式貌似行不通的说, 各种尝试之后,找到了一种显示变量的比较简单的方式,共享一下。//VS/MFC中MessageBox用法//(1)、弹出数字CString msg;msg.Format(_T("…...

    2024/4/21 8:52:57
  12. 《大富翁8》中智力问答的题目、答案

    去了一次现金流俱乐部,回来想想还是拿《大富翁8》练练手,当夜就熬到3点,最后以破产告终。还是觉得这个游戏有些弱智,不过比较适合几个朋友或者男女朋友之间娱乐之用,还是有些意思。其中的一些问答对于我们这些richman的非忠实玩家来说还是有些难度,网上搜了题目和答案,附…...

    2024/4/24 11:37:46
  13. SQL - 单引号和双引号的区别

    原文转载至:SQL中的单引号和双引号有区别吗?在标准 SQL 中,字符串使用的是单引号。 如果字符串本身也包括单引号,则使用两个单引号(注意,不是双引号,字符串中的双引号不需要另外转义)。 但在其它的数据库中可能存在对 SQL 的扩展,比如在 MySQL 中允许使用单引号和双引…...

    2024/4/20 18:21:20
  14. GDI绘制png

    最近做的一个项目,用GDI+来做绘制,最后发现效率很慢,和GDI的效率相差不止一个数量级。 最后决定还是用GDI来绘制。 问题很快出现了,以前的很多效果是带alpha透明的png来贴图实现的,这用GDI+很容易做到,但是用GDI就很麻烦了。 我想了一个折中的办法,是这样做的:用GDI+把…...

    2024/4/20 10:00:53
  15. C#中,messagebox 用法大全,珍藏!

    我们在程序中经常会用到MessageBox, MessageBox.Show()共有21中重载方法。现将其常见用法总结如下: 1.MessageBox.Show("Hello~~~~");最简单的,只显示提示信息。2.MessageBox.Show("There are something wrong!","ERROR");可以给消息框加上标…...

    2024/4/20 1:43:09
  16. 图形图像处理-之-任意角度的高质量的快速的图像旋转 下篇 补充话题

    tag:图像旋转,任意角度,图像缩放,速度优化,定点数优化,近邻取样插值,二次线性插值, 三次卷积插值,MipMap链,三次线性插值,MMX/SSE优化,CPU缓存优化,AlphaBlend,颜色混合,并行摘要: 该文章是《任意角度的高质量的快速的图像旋转》的一些高级补充话题; 给出了一个完整的Al…...

    2024/4/20 18:21:17
  17. 宫本茂的童心和乔布斯的叛逆--设计哲学背后的文化基因 zt

    2008-02-02 13:05 任天堂的掌上游戏机NDSL里有一个叫《吉娃娃》的养狗游戏,让我这个对真狗兴趣不大的人忽然有了对宠物的兴趣。用笔可以以不同的手法去抚摸狗,不同的抚摸方式,会让那条狗作出各种可爱的动作,通过语音识别技术,我可以给狗起名字,并用说话来训练狗“坐下,…...

    2024/4/21 8:52:55
  18. JavaActivity工作流

    一、 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑 采用工作流技术的公司的请假流程是这样的 员工使用账户登录系统——点击请…...

    2024/4/21 8:52:54
  19. hive函数 -- stddev , stddev_pop , stddev_samp , var_pop , var_samp

    标准差是方差的平方根 1.方差公式: m为x1,x2...xn数列的期望值(平均数) s^2 = [(x1-m)^2 + (x2-m)^2 + ... (xn-m)^2]/n s即为标准差 s^2为方差。 2.实例: hive> select * from dim_row_num limit 10; O…...

    2024/4/20 17:17:25
  20. 【Activiti】 Activiti工作流引擎 - 提交审批和审批处理示例详解 【精品】

    在上一篇的文章中,我给大家分享了Activiti工作流引擎的API的封装代码,通过我们自己封装的代码,在实际的项目中我们就可以进行工作流相关的开发了。以下内容我们分三个部分:提交审批,审批列表查询,审批处理。一、提交审批提交审批之前,我们需要做好相关的准备工作。在上文…...

    2024/4/21 8:52:52

最新文章

  1. Docker之常见FAQ记录清单

    一、前言 本文记录Docker使用过程中遇见的问题&#xff0c;供后续回顾参考。 关联资源&#xff1a;网络Docker博客、官方FAQ、文档、Docker 从入门到实践、中文社区、riptutorial 二、问题及处理记录 2.1、docker容器内没有vi,nano等编辑器 1&#xff09;如果宿主机本地有&a…...

    2024/4/27 22:30:47
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 54.螺旋矩阵

    题目描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。示例 1&#xff1a;输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a;输入&#xff1a;matrix …...

    2024/4/25 11:11:19
  4. 人工智能产业应用--具身智能

    五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时&#xff0c;“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角&#xff0c;尤其是在具身智能的领域。具身智能是一种思想&#xff0c;强调智能体通过与其环境的直接物理互动来实现智能行为。然…...

    2024/4/22 16:29:21
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/26 21:56:58
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/26 22:01:59
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57