Activiti(二)流程

本文介绍如何从零开始搭建Activiti工作流环境,并通过示例代码展示如何创建所需的数据库表、部署流程定义及查询流程状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建Activiti项目, 
这里写图片描述 
创建好的项目结构如图所示: 
这里写图片描述 
打开windows-preferences,如图如示: 
这里写图片描述

二、创建Demo测试类 
这里写图片描述 
注意:别忘了导入开发所需的jar包,jar包下载地址:http://www.activiti.org/download.html

方法一、Java配置开发环境

<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">import</span> org.activiti.engine.ProcessEngine;
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">import</span> org.activiti.engine.ProcessEngineConfiguration;
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">import</span> org.junit.Test;

    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">public</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">class</span> <span class="hljs-title" style="color:#66066;box-sizing: border-box;">TextActiviti</span> {</span>

    <span class="hljs-javadoc" style="color:#8800;box-sizing: border-box;">/**
     * 使用代码创建工作流需要的23张表
     * 
     * 调用ACtiviti的API
     * 流程引擎ProcessEngine[ˈprɑsˌɛs ˌɛndʒəˈnɪr]对象(所有操作都离不开引擎对象)
     * 
     *<span class="hljs-javadoctag" style="color:#66066;box-sizing: border-box;"> @throws</span> Exception
     */</span>
    <span class="hljs-annotation" style="color:#9b859d;box-sizing: border-box;">@Test</span>
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">createTable</span>(){


        ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
        <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//定义连接数据库的配置</span>
        configuration.setJdbcDriver(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"com.mysql.jdbc.Driver"</span>);
        configuration.setJdbcUrl(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"jdbc:mysql://localhost:3306/activiti?useUnicode=true&ampcharEncoding=utf8"</span>);
        configuration.setJdbcUsername(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"root"</span>);
        configuration.setJdbcPassword(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"4052"</span>);

        <span class="hljs-javadoc" style="color:#8800;box-sizing: border-box;">/**
         *  public static final String DB_SCHEMA_UPDATE_FALSE = "false";   不能自动创建表,需要表存在
         *  
         *  public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";   先删除表再创建表
         *  
         *  public static final String DB_SCHEMA_UPDATE_TRUE = "true";   如果表不存在,自动创建表
         *  
         */</span>
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);

        <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//工作流的核心对象  流程引擎  ProcessEngine对象</span>
        ProcessEngine engine = configuration.buildProcessEngine();

        System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"engine:"</span>+engine);
    }
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li></ul>

运行结果如下所示,表明创建成功: 
这里写图片描述

方法二、配置文件(activiti.cfg.xml)内配置开发环境

在项目工程中找到activiti.cg.xml文件,如图如示:

这里写图片描述 
在activiti.cfg.xml中写入如下配置信息:

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color:#06666;box-sizing: border-box;"><<span class="hljs-title" style="color:#0088;box-sizing: border-box;">bean</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">id</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"processEngineConfiguration"</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">class</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"</span> ></span>
         <span class="hljs-comment" style="color:#8800;box-sizing: border-box;"><!-- 加载驱动 --></span>
         <span class="hljs-tag" style="color:#06666;box-sizing: border-box;"><<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">name</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"jdbcDriver"</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">value</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"com.mysql.jdbc.Driver"</span> ></span><span class="hljs-tag" style="color:#06666;box-sizing: border-box;"></<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span>></span>
          <span class="hljs-comment" style="color:#8800;box-sizing: border-box;"><!-- 连接数据库 --></span>
          <span class="hljs-tag" style="color:#06666;box-sizing: border-box;"><<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">name</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"jdbcUrl"</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">value</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;ampcharEncoding=utf8"</span> ></span><span class="hljs-tag" style="color:#06666;box-sizing: border-box;"></<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span>></span>
          <span class="hljs-comment" style="color:#8800;box-sizing: border-box;"><!-- 用户名 --></span>
          <span class="hljs-tag" style="color:#06666;box-sizing: border-box;"><<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">name</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"jdbcUsername"</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">value</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"root"</span> ></span><span class="hljs-tag" style="color:#06666;box-sizing: border-box;"></<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span>></span>
          <span class="hljs-comment" style="color:#8800;box-sizing: border-box;"><!-- 密码 --></span>
          <span class="hljs-tag" style="color:#06666;box-sizing: border-box;"><<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">name</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"jdbcPassword"</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">value</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"4052"</span> ></span><span class="hljs-tag" style="color:#06666;box-sizing: border-box;"></<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span>></span>
          <span class="hljs-comment" style="color:#8800;box-sizing: border-box;"><!-- 没有表创建表 --></span>
          <span class="hljs-tag" style="color:#06666;box-sizing: border-box;"><<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">name</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"databaseSchemaUpdate"</span> <span class="hljs-attribute" style="color:#66066;box-sizing: border-box;">value</span>=<span class="hljs-value" style="color:#0880;box-sizing: border-box;">"true"</span> ></span><span class="hljs-tag" style="color:#06666;box-sizing: border-box;"></<span class="hljs-title" style="color:#0088;box-sizing: border-box;">property</span>></span>
     <span class="hljs-tag" style="color:#06666;box-sizing: border-box;"></<span class="hljs-title" style="color:#0088;box-sizing: border-box;">bean</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul>

activiti.cfg.xml配置好之后,代码如下所示:

<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-javadoc" style="color:#8800;box-sizing: border-box;">/**
     * 使用配置文件创建工作流需要的23张表
     */</span>
    <span class="hljs-annotation" style="color:#9b859d;box-sizing: border-box;">@Test</span>
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">createTable_2</span>(){

        <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//加载配置文件</span>
        ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"activiti.cfg.xml"</span>);
        <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//工作流的核心对象  流程引擎  ProcessEngine对象</span>
        ProcessEngine engine = configuration.buildProcessEngine();

        System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"engine:"</span>+engine);
    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

运行结果如下所示,表明创建成功:: 
这里写图片描述

好了,项目准备工作完成,接下来进行流程图的创建,如下所示: 
这里写图片描述

这里写图片描述

这里写图片描述 
为了方便修改,使用properties来编辑:

这里写图片描述

使用properties打开的流程图如下所示:

这里写图片描述

进行编辑: 
这里写图片描述

这里写图片描述

保存好之后,会生成一个.png的图片

这里写图片描述

创建HelloWorld.class

这里写图片描述

代码如下:

<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//流程引擎  </span>
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    <span class="hljs-javadoc" style="color:#8800;box-sizing: border-box;">/**
     * 部署流程定义
     */</span>
    <span class="hljs-annotation" style="color:#9b859d;box-sizing: border-box;">@Test</span>
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">deploymentProcessDefinition</span>(){

        Deployment deployment = processEngine.getRepositoryService()<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//与流程定义和部署对象相关的service  RepositoryService</span>
                        .createDeployment() <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//创建一个部署对象  </span>
                        .name(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"helloworld入门程序"</span>)<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//添加部署的名称</span>
                        .addClasspathResource(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"diagrams/helloword.bpmn"</span>)<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//从classpath的资源中加载,一次只能加载一个文件</span>
                        .addClasspathResource(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"diagrams/helloword.png"</span>)<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//从classpath的资源中加载,一次只能加载一个文件</span>
                        .deploy();<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//完成部署</span>

        System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"部署ID:"</span>+deployment.getId());
        System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"部署名称:"</span>+deployment.getName());
    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul>

输出结果: 
这里写图片描述

数据库中会出现相应的数据: 
这里写图片描述

部署完流程之后,接下来就是启动流程:

<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-javadoc" style="color:#8800;box-sizing: border-box;">/**
     * 启动流程实例
     */</span>
    <span class="hljs-annotation" style="color:#9b859d;box-sizing: border-box;">@Test</span>
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">startProcessInstance</span>(){
        String processDefinitionKey = <span class="hljs-string" style="color:#0880;box-sizing: border-box;">"helloworld"</span>;
        ProcessInstance p1 = processEngine.getRuntimeService()<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//与正在执行的流程实例和执行对象相关的service</span>
                        .startProcessInstanceByKey(processDefinitionKey);<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">/*使用流程定义的key启动流程实例 ,key对应helloword.bpmn文件中id的属性值,使用key启动,
                                                                          默认是按照最新版本的流程定义启动 */</span>
        System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程实例ID:"</span>+p1.getId()); <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//流程实例ID</span>
        System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程定义ID:"</span>+p1.getProcessDefinitionId()); <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//流程定义ID</span>
    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul>

输出结果: 
这里写图片描述

数据库中出现对应的数据: 
这里写图片描述

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">/**
     * 查询当前人的个人任务
     */</span>
    @Test
    public void findMyPersonalTask(){
        String assignee = <span class="hljs-string" style="color:#0880;box-sizing: border-box;">"张三"</span><span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
        List<Task> list = processEngine<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getTaskService</span>()//与正在任务管路相关的service
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.createTaskQuery</span>()//创建任务查询对象
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.taskAssignee</span>(assignee)//指定个人任务查询,指定办理人
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.list</span>()<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>

        if(list!=null && list<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.size</span>()><span class="hljs-number" style="color:#06666;box-sizing: border-box;">0</span>){
            for (Task task : list) {
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"任务ID:"</span>+task<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"任务名称:"</span>+task<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getName</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"任务的创建时间:"</span>+task<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getCreateTime</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"任务的办理人:"</span>+task<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getAssignee</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程实例IP:"</span>+task<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getProcessInstanceId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"执行对象IP:"</span>+task<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getExecutionId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程定义IP:"</span>+task<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getProcessDefinitionId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"--------------------------------------------------"</span>)<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
            }
        }
    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li></ul>

结果如下: 
这里写图片描述

<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-javadoc" style="color:#8800;box-sizing: border-box;">/**
     * 完成我的任务
     */</span>

    <span class="hljs-annotation" style="color:#9b859d;box-sizing: border-box;">@Test</span>
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">completeMyPersonalTask</span>(){
        <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//任务ID</span>
        String taskId = <span class="hljs-string" style="color:#0880;box-sizing: border-box;">"501"</span>;

        processEngine.getTaskService()
                        .complete(taskId);

        System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"完成任务:任务ID:"</span>+taskId);

    }   </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul>

结果如下: 
这里写图片描述

这里写图片描述

<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-javadoc" style="color:#8800;box-sizing: border-box;">/**
     * 查询流程状态(判断流程正在执行,还是结束)
     * 查询正在执行的流程  若没有  则说明已结束
     */</span>
    <span class="hljs-annotation" style="color:#9b859d;box-sizing: border-box;">@Test</span>
    <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">idProcessEnd</span>(){

        String processInstanceId = <span class="hljs-string" style="color:#0880;box-sizing: border-box;">"101"</span>;

        ProcessInstance result = processEngine.getRuntimeService()<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//表示正在执行的流程实例和执行对象</span>
                        .createProcessInstanceQuery()<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//创建一个流程实例查询</span>
                        .processInstanceId(processInstanceId)<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">//使用流程实例ID进行查询</span>
                        .singleResult();

        <span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">if</span>(result==<span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">null</span>){
            System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程已结束"</span>);
        }<span class="hljs-keyword" style="color:#0088;box-sizing: border-box;">else</span>{
            System.out.println(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程正在运行"</span>+result.getActivityId());
        }

    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li></ul>

运行效果: 
这里写图片描述

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">/**
     *  查询历史任务
     */</span>
    @Test
    public void findHistoryTask(){

        String taskAssignee = <span class="hljs-string" style="color:#0880;box-sizing: border-box;">"张三"</span><span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>

        List<HistoricTaskInstance> list = processEngine<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getHistoryService</span>()//与历史数据(历史表)相关的service
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.createHistoricTaskInstanceQuery</span>()//创建历史任务实例查询
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.taskAssignee</span>(taskAssignee)//指定历史人物的办理人
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.list</span>()<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>

        if(!list<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.isEmpty</span>()){
            for (HistoricTaskInstance historicTaskInstance : list) {
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"id:"</span>+historicTaskInstance<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"name:"</span>+historicTaskInstance<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getName</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程实例ID:"</span>+historicTaskInstance<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getProcessInstanceId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程开始时间:"</span>+historicTaskInstance<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getStartTime</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"流程结束时间:"</span>+historicTaskInstance<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getEndTime</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
                System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color:#0880;box-sizing: border-box;">"----------------------------------------------------"</span>)<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
            }
        }

    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li></ul><div class="save_code tracking-ad" data-mod="popu_249" style="box-sizing: border-box; display: block; position: absolute; height: 60px; right: 30px; top: 5px; font-size: 14px; color: rgb(255, 255, 255); cursor: pointer; z-index: 2;"><a target=_blank target="_blank" style="color: rgb(202, 0, 0); text-decoration: none; box-sizing: border-box;"><img src="http://static.blog.youkuaiyun.com/images/save_snippets.png" style="border: none; box-sizing: border-box; max-width: 100%;" alt="" /></a></div><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li></ul>

运行效果: 
这里写图片描述

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    <span class="hljs-comment" style="color:#8800;box-sizing: border-box;">/**
     * 查询历史流程实例
     */</span>
    @Test
    public void findHistoryProcessInstance(){

        String processInstanceId = <span class="hljs-string" style="color:#0880;box-sizing: border-box;">"101"</span><span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>

        HistoricProcessInstance result = processEngine<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getHistoryService</span>()//与历史数据(历史表)相关的service
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.createHistoricProcessInstanceQuery</span>()//创建历史流程实例查询
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.processInstanceId</span>(processInstanceId)//使用流程实例ID查询
                        <span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.singleResult</span>()<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>

        System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(result<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
        System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(result<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getProcessDefinitionId</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
        System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(result<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getStartTime</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
        System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(result<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getEndTime</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;</span>
        System<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.println</span>(result<span class="hljs-preprocessor" style="color:#444444;box-sizing: border-box;">.getDurationInMillis</span>())<span class="hljs-comment" style="color:#8800;box-sizing: border-box;">;//持续多少毫秒</span>
    }</code>
内容概要:本文介绍了奕斯伟科技集团基于RISC-V架构开发的EAM2011芯片及其应用研究。EAM2011是一款高性能实时控制芯片,支持160MHz主频和AI算法,符合汽车电子AEC-Q100 Grade 2和ASIL-B安全标准。文章详细描述了芯片的关键特性、配套软件开发套件(SDK)和集成开发环境(IDE),以及基于该芯片的ESWINEBP3901开发板的硬件资源和接口配置。文中提供了详细的代码示例,涵盖时钟配置、GPIO控制、ADC采样、CAN通信、PWM输出及RTOS任务创建等功能实现。此外,还介绍了硬件申领流程、技术资料获取渠道及开发建议,帮助开发者高效启动基于EAM2011芯片的开发工作。 适合人群:具备嵌入式系统开发经验的研发人员,特别是对RISC-V架构感兴趣的工程师和技术爱好者。 使用场景及目标:①了解EAM2011芯片的特性和应用场景,如智能汽车、智能家居和工业控制;②掌握基于EAM2011芯片的开发板和芯片的硬件资源和接口配置;③学习如何实现基本的外设驱动,如GPIO、ADC、CAN、PWM等;④通过RTOS任务创建示例,理解多任务处理和实时系统的实现。 其他说明:开发者可以根据实际需求扩展这些基础功能。建议优先掌握《EAM2011参考手册》中的关键外设寄存器配置方法,这对底层驱动开发至关重要。同时,注意硬件申领的时效性和替代方案,确保开发工作的顺利进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值