1、项目结构

2、pom

  1. <dependencies>
  2. <dependency>
  3. <groupId>junit</groupId>
  4. <artifactId>junit</artifactId>
  5. <version>3.8.1</version>
  6. <scope>test</scope>
  7. </dependency>
  8.  
  9. <dependency>
  10. <groupId>org.springframework</groupId>
  11. <artifactId>spring-context</artifactId>
  12. <version>4.2.1.RELEASE</version>
  13. </dependency>
  14. <dependency>
  15. <groupId>org.activiti</groupId>
  16. <artifactId>activiti-engine</artifactId>
  17. <version>5.18.0</version>
  18.  
  19. </dependency>
  20. <dependency>
  21. <groupId>com.h2database</groupId>
  22. <artifactId>h2</artifactId>
  23. <version>1.4.188</version>
  24. </dependency>
  25. </dependencies>

3、activiti.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!-- 流程引擎配置 -->
  6. <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
  7. <property name="jdbcUrl" value="jdbc:h2:mem:Activiti" />
  8. <property name="jdbcDriver" value="org.h2.Driver" />
  9. <property name="jdbcUsername" value="sa"></property>
  10. <property name="jdbcPassword" value=""></property>
  11. <!-- databaseSchemaUpdate 配置流程引擎启动/关闭时对数据库Schema的策略.取值有:
  12. false:默认子,检查DBSchema版本与Activiti开发包是否一致
  13. true:更新数据库中标信息,如果不存在则创建,推荐使用
  14. create-drop 启动时创建表 关闭时删除表
  15. -->
  16. <property name="databaseSchemaUpdate" value="true"></property>
  17. </bean>
  18.  
  19. </beans>

4、Helloworld.bpmn20.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
  3. <process id="myProcess" name="第一个流程图" isExecutable="true">
  4. <startEvent id="startevent1" name="开始事件"></startEvent>
  5. <endEvent id="endevent1" name="结束事件"></endEvent>
  6. <userTask id="usertask1" name="HelloWorld"></userTask>
  7. <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
  8. <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
  9. </process>
  10. <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
  11. <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
  12. <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
  13. <omgdc:Bounds height="35.0" width="35.0" x="90.0" y="180.0"></omgdc:Bounds>
  14. </bpmndi:BPMNShape>
  15. <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
  16. <omgdc:Bounds height="35.0" width="35.0" x="350.0" y="320.0"></omgdc:Bounds>
  17. </bpmndi:BPMNShape>
  18. <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
  19. <omgdc:Bounds height="55.0" width="105.0" x="360.0" y="180.0"></omgdc:Bounds>
  20. </bpmndi:BPMNShape>
  21. <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
  22. <omgdi:waypoint x="125.0" y="197.0"></omgdi:waypoint>
  23. <omgdi:waypoint x="360.0" y="207.0"></omgdi:waypoint>
  24. </bpmndi:BPMNEdge>
  25. <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
  26. <omgdi:waypoint x="412.0" y="235.0"></omgdi:waypoint>
  27. <omgdi:waypoint x="367.0" y="320.0"></omgdi:waypoint>
  28. </bpmndi:BPMNEdge>
  29. </bpmndi:BPMNPlane>
  30. </bpmndi:BPMNDiagram>
  31. </definitions>

5、HelloWorld.java

  1. import org.activiti.engine.task.Task;
  2. import org.activiti.engine.ProcessEngine;
  3. import org.activiti.engine.ProcessEngineConfiguration;
  4. import org.activiti.engine.RepositoryService;
  5. import org.activiti.engine.RuntimeService;
  6. import org.activiti.engine.TaskService;
  7. import org.activiti.engine.runtime.ProcessInstance;
  8.  
  9. public class HelloWorld {
  10. public static void main(String[] args) {
  11. //1 获取流程引擎配置
  12. ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("/config/activiti.cfg.xml");
  13. // 2 创建流程引擎
  14. ProcessEngine engine = cfg.buildProcessEngine();
  15. //3.获取 RepositoryService
  16. RepositoryService repositoryService = engine.getRepositoryService();
  17.  
  18. //4 部署流程图
  19. repositoryService.createDeployment().addClasspathResource("process/Two.bpmn20.xml").deploy();
  20. //5. 获取运行时候服务RuntimeService
  21. RuntimeService runtimeService = engine.getRuntimeService();
  22.  
  23. //6.获取流程实例
  24. String processDefinitionKey = "mine";
  25. ProcessInstance instance = runtimeService.startProcessInstanceByKey(processDefinitionKey);
  26. System.out.println(instance.getActivityId());
  27. //7.获取TaskService
  28. TaskService taskServer = engine.getTaskService();
  29. long count = taskServer.createTaskQuery().count();
  30. System.out.println("count:" + count);
  31. //8. 查询Task
  32. Task task = taskServer.createTaskQuery().singleResult();
  33.  
  34. //9 处理任务
  35. System.out.println(task.getName());
  36.  
  37. }
  38. }

6、另H2  Test

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7. import org.junit.Test;
  8. public class H2DbTest {
  9. @Test
  10. public void testH2() {
  11. // 1 加载驱动
  12. try {
  13. Class.forName("org.h2.Driver");
  14. //2 获得数据库连接
  15. try {
  16. Connection conn= DriverManager.getConnection("jdbc:h2:mem:Activiti","sa","");
  17. // 3 创建Persion表
  18. Statement stt = conn.createStatement();
  19. String sql ="create table person(id int auto_increment primary key, name varchar(200));"
  20. + " insert into person(name) values('vic')";
  21. stt.execute(sql);
  22. PreparedStatement ps = conn.prepareStatement("select * from person");
  23. ResultSet rs = ps.executeQuery();
  24. while(rs.next()) {
  25. System.out.println("id:" + rs.getInt(1));
  26. System.out.println("name:" + rs.getString(2));
  27. }
  28. } catch (SQLException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. }
  32. } catch (ClassNotFoundException e) {
  33. // TODO Auto-generated catch block
  34. e.printStackTrace();
  35. }
  36.  
  37. }
  38. }

Activiti----hellowWorld(使用H2数据库)的更多相关文章

  1. Activiti工作流搭建---初始化数据库

    Activiti介绍 Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执 ...

  2. springboot中使用h2数据库(内存模式)

    使用H2的优点,不需要装有服务端和客户端,在项目中包含一个jar即可,加上初始化的SQL就可以使用数据库了 在springboot中引入,我的版本是2.1.4,里面就包含有h2的版本控制 <!- ...

  3. H2数据库攻略

    H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容.H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为 ...

  4. 【树莓派】h2数据库操作相关

    之前在树莓派上面操作时候,遇到一些业务方面的bug,和团队中的同事经过多次尝试,但就是难以重现用户现场的问题. 但是问题却实实在在地发生,虽然并不是必然可重现的bug,但是也比较闹心: 发生了问题,也 ...

  5. 使用H2数据库进行单元测试

    背景 H2 数据库是一个开源的嵌入型内存数据库,采用纯Java语言实现: 程序非常小巧轻便,整个完整的Jar包也只有1.5M左右,很容易集成到项目中. 官网地址 http://www.h2databa ...

  6. java~springboot~h2数据库在单元测试中的使用

    单元测试有几点要说的 事实上springboot框架是一个tdd框架,你在进行建立项目时它会同时建立一个单元测试项目,而我们的代码用例可以在这个项目里完成,对于单元测试大叔有以下几点需要说明一下: 单 ...

  7. Confluence 6 嵌入的 H2 数据库

    为了让你的 Confluence 在安装成功后就可以使用而不需要使用任何外部的数据库,Confluence 使用一个嵌入的 H2 数据库. 当你选择对 Confluence 进行评估和测试的时候,H2 ...

  8. Confluence 6 关于嵌入的 H2 数据库

    你的 Confluence 安装中包含有嵌入的 H2 数据库,能够让你试用 Confluence 而不需要安装任何的外部数据库.H2 数据库仅仅用于你对 Confluence 进行评估.在你将 Con ...

  9. 使用h2数据库

    h2数据库提供了一个简单的web管理界面 import org.h2.tools.Server; import org.slf4j.Logger; import org.slf4j.LoggerFac ...

  10. H2数据库

    官网:http://www.h2database.com H2数据库默认的~/test数据库在Win10下所在的位置为 C:/Users/yourname/下,也就是执行cmd的第一个目录 其中的.h ...

随机推荐

  1. iframe子页面调用父页面javascript函数的方法

    1.iframe子页面调用 父页面js函数 子页面调用父页面函数只需要写上window.parent就可以了.比如调用a()函数,就写成: window.parent.a(); 2.iframe父页面 ...

  2. vim 操作(转)

    高效率移动编辑1.在插入模式之外基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样.很多新手都会一直呆在插入模式里面,因为这样易于使用.但 VIM 的 ...

  3. preg_replace 方法

    标红关键字 $text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. ...

  4. gvim work notes.. a few days' work on 64bit vim and plugin compilations

    (a 600MB+ sized c/c++ compiler which is capable of hi-light and JB styled completion!! and of-course ...

  5. 用 Swift 编写面向协议的网络请求

    和我一起参加9 月 1 日 - 9月 2 日在纽约举办的 Swift 社区庆典

  6. this的应用

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  7. PL/SQL Developer StringBuffer 专用复制

    ;PL/SQL Developer SpecialCopy definition;<LINE_1> for first line;<LINE_*> for all other ...

  8. HDU2199,HDU2899,HDU1969,HDU2141--(简单二分)

    二分是一种很有效的减少时间开销的策略, 我觉得单列出二分专题有些不太合理, 二分应该作为一中优化方法来考虑 这几道题都是简单的使用了二分方法优化, 二分虽然看似很简单, 但一不注意就会犯错. 在写二分 ...

  9. Vim插件管理 -- Vundle

    1 插件目录  -/.vim/bundle/ 没有可自行创建 2 安装Vundle  $ git clone https://github.com/VundleVim/Vundle.vim.git   ...

  10. git使用之如何将github库下载到本地与如何将代码上传github

    git使用之如何将github库下载到本地与如何将代码上传github ---------------------------------------------------------------- ...