Activiti----hellowWorld(使用H2数据库)
1、项目结构
2、pom
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>4.2.1.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-engine</artifactId>
- <version>5.18.0</version>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.4.188</version>
- </dependency>
- </dependencies>
3、activiti.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- 流程引擎配置 -->
- <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
- <property name="jdbcUrl" value="jdbc:h2:mem:Activiti" />
- <property name="jdbcDriver" value="org.h2.Driver" />
- <property name="jdbcUsername" value="sa"></property>
- <property name="jdbcPassword" value=""></property>
- <!-- databaseSchemaUpdate 配置流程引擎启动/关闭时对数据库Schema的策略.取值有:
- false:默认子,检查DBSchema版本与Activiti开发包是否一致
- true:更新数据库中标信息,如果不存在则创建,推荐使用
- create-drop 启动时创建表 关闭时删除表
- -->
- <property name="databaseSchemaUpdate" value="true"></property>
- </bean>
- </beans>
4、Helloworld.bpmn20.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
- <process id="myProcess" name="第一个流程图" isExecutable="true">
- <startEvent id="startevent1" name="开始事件"></startEvent>
- <endEvent id="endevent1" name="结束事件"></endEvent>
- <userTask id="usertask1" name="HelloWorld"></userTask>
- <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
- <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
- </process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
- <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
- <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
- <omgdc:Bounds height="35.0" width="35.0" x="90.0" y="180.0"></omgdc:Bounds>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
- <omgdc:Bounds height="35.0" width="35.0" x="350.0" y="320.0"></omgdc:Bounds>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
- <omgdc:Bounds height="55.0" width="105.0" x="360.0" y="180.0"></omgdc:Bounds>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
- <omgdi:waypoint x="125.0" y="197.0"></omgdi:waypoint>
- <omgdi:waypoint x="360.0" y="207.0"></omgdi:waypoint>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
- <omgdi:waypoint x="412.0" y="235.0"></omgdi:waypoint>
- <omgdi:waypoint x="367.0" y="320.0"></omgdi:waypoint>
- </bpmndi:BPMNEdge>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
- </definitions>
5、HelloWorld.java
- import org.activiti.engine.task.Task;
- import org.activiti.engine.ProcessEngine;
- import org.activiti.engine.ProcessEngineConfiguration;
- import org.activiti.engine.RepositoryService;
- import org.activiti.engine.RuntimeService;
- import org.activiti.engine.TaskService;
- import org.activiti.engine.runtime.ProcessInstance;
- public class HelloWorld {
- public static void main(String[] args) {
- //1 获取流程引擎配置
- ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("/config/activiti.cfg.xml");
- // 2 创建流程引擎
- ProcessEngine engine = cfg.buildProcessEngine();
- //3.获取 RepositoryService
- RepositoryService repositoryService = engine.getRepositoryService();
- //4 部署流程图
- repositoryService.createDeployment().addClasspathResource("process/Two.bpmn20.xml").deploy();
- //5. 获取运行时候服务RuntimeService
- RuntimeService runtimeService = engine.getRuntimeService();
- //6.获取流程实例
- String processDefinitionKey = "mine";
- ProcessInstance instance = runtimeService.startProcessInstanceByKey(processDefinitionKey);
- System.out.println(instance.getActivityId());
- //7.获取TaskService
- TaskService taskServer = engine.getTaskService();
- long count = taskServer.createTaskQuery().count();
- System.out.println("count:" + count);
- //8. 查询Task
- Task task = taskServer.createTaskQuery().singleResult();
- //9 处理任务
- System.out.println(task.getName());
- }
- }
6、另H2 Test
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import org.junit.Test;
- public class H2DbTest {
- @Test
- public void testH2() {
- // 1 加载驱动
- try {
- Class.forName("org.h2.Driver");
- //2 获得数据库连接
- try {
- Connection conn= DriverManager.getConnection("jdbc:h2:mem:Activiti","sa","");
- // 3 创建Persion表
- Statement stt = conn.createStatement();
- String sql ="create table person(id int auto_increment primary key, name varchar(200));"
- + " insert into person(name) values('vic')";
- stt.execute(sql);
- PreparedStatement ps = conn.prepareStatement("select * from person");
- ResultSet rs = ps.executeQuery();
- while(rs.next()) {
- System.out.println("id:" + rs.getInt(1));
- System.out.println("name:" + rs.getString(2));
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
Activiti----hellowWorld(使用H2数据库)的更多相关文章
- Activiti工作流搭建---初始化数据库
Activiti介绍 Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执 ...
- springboot中使用h2数据库(内存模式)
使用H2的优点,不需要装有服务端和客户端,在项目中包含一个jar即可,加上初始化的SQL就可以使用数据库了 在springboot中引入,我的版本是2.1.4,里面就包含有h2的版本控制 <!- ...
- H2数据库攻略
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容.H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为 ...
- 【树莓派】h2数据库操作相关
之前在树莓派上面操作时候,遇到一些业务方面的bug,和团队中的同事经过多次尝试,但就是难以重现用户现场的问题. 但是问题却实实在在地发生,虽然并不是必然可重现的bug,但是也比较闹心: 发生了问题,也 ...
- 使用H2数据库进行单元测试
背景 H2 数据库是一个开源的嵌入型内存数据库,采用纯Java语言实现: 程序非常小巧轻便,整个完整的Jar包也只有1.5M左右,很容易集成到项目中. 官网地址 http://www.h2databa ...
- java~springboot~h2数据库在单元测试中的使用
单元测试有几点要说的 事实上springboot框架是一个tdd框架,你在进行建立项目时它会同时建立一个单元测试项目,而我们的代码用例可以在这个项目里完成,对于单元测试大叔有以下几点需要说明一下: 单 ...
- Confluence 6 嵌入的 H2 数据库
为了让你的 Confluence 在安装成功后就可以使用而不需要使用任何外部的数据库,Confluence 使用一个嵌入的 H2 数据库. 当你选择对 Confluence 进行评估和测试的时候,H2 ...
- Confluence 6 关于嵌入的 H2 数据库
你的 Confluence 安装中包含有嵌入的 H2 数据库,能够让你试用 Confluence 而不需要安装任何的外部数据库.H2 数据库仅仅用于你对 Confluence 进行评估.在你将 Con ...
- 使用h2数据库
h2数据库提供了一个简单的web管理界面 import org.h2.tools.Server; import org.slf4j.Logger; import org.slf4j.LoggerFac ...
- H2数据库
官网:http://www.h2database.com H2数据库默认的~/test数据库在Win10下所在的位置为 C:/Users/yourname/下,也就是执行cmd的第一个目录 其中的.h ...
随机推荐
- java设计模式案例详解:代理模式
代理模式就是用一个第三者的身份去完成工作,其实际意义跟字面意思其实是一样的,理解方式有很多,还是例子直观. 本例的实现类是实现买票功能,实际应用想要添加身份验证功能,利用代理模式添加验证步骤.上例子: ...
- LightOJ 1259 Goldbach`s Conjecture 素数打表
题目大意:求讲一个整数n分解为两个素数的方案数. 题目思路:素数打表,后遍历 1-n/2,寻找方案数,需要注意的是:C/C++中 bool类型占用一个字节,int类型占用4个字节,在素数打表中采用bo ...
- ACE_Get_Opt解析命令行
ACE_Get_Opt是一种解析命令行参数选项的迭代器. 1:构造方法 ACE_Get_Opt需要引用头文件,#include "ace/Get_Opt.h". ACE_Get_O ...
- NSUserDefault -- synchronize 浅析
NSUserDefault的使用比较简单:NSUserDefaults *mySettingData = [NSUserDefaults standardUserDefaults]; 创建NSUse ...
- Loadrunner之脚本的调试和保存(六)
一.调试脚本 脚本录制完毕后,按F5键或单击菜单上的RUN按钮,可以运行脚本. 在VIRTUAL USER GENERATOR中运行脚本的作用,主要是查看录制的脚本能否正常通过,如果有问题 ...
- 项目总结SpringMVC相关
流程文字概述1.用户发送请求至前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理器映射器.3.处理器映射器找到具体的处理器, ...
- Node.js学习 - Buffer
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型.但在处理像TCP流或文件流时,必须使用到二进制数据. 因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门 ...
- PAT1014
Suppose a bank has N windows open for service. 一个银行有N个服务的窗口 There is a yellow line in front of the w ...
- PAT1064(上)分析部分
Complete Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B A Binary Search Tree (BST) ...
- 使用ReTrofit做缓存(结合上拉加载和下拉刷新)
1. noCache 不使用缓存,全部走网络 2. noStore 不使用缓存,也不存储缓存 3. onlyIfCached 只使用缓存 4. maxAge 设置最大失效时间,失效则不使用 需要服务器 ...