一、创建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&charEncoding=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&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>