建立一个普通的javaSE工程,工程的目录结构如下:

需要的jar包如下:

在config文件夹下创建log4j.properties用来输入日志,内容如下:

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

在config文件夹下创建activiti.cfg.xml(每个框架都有自己的配置文件,在没有使用spring托管框架的时候,这个配置文件管理框架的全部配置),内容如下

<?xml version="1.0"?>
<beans default-lazy-init="false"xsi:schemaLocation=" http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"><beanclass="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"id="processEngineConfiguration">
<span style="white-space:pre">      </span><!--配置数据库信息,这里使用mysql 但是测试时推荐使用h2数据库 见activiti自带的demo中的配置文件<span style="font-family: Arial, Helvetica, sans-serif;">--></span>
     <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activi" /><property name="jdbcDriver" value="com.mysql.jdbc.Driver" /><property name="jdbcUsername" value="root" /><property name="jdbcPassword" value="root" />
<span style="white-space:pre">      </span><!--当表结构不存在时,生成activiti的23个表--><property name="databaseSchemaUpdate" value="true" />
<span style="white-space:pre">      </span><!--工作流转--><property name="jobExecutorActivate" value="true" /><!--邮件-->
<span style="white-space:pre">      </span><property name="mailServerHost" value="mail.my-corp.com" /><property name="mailServerPort" value="5025" /><!--历史-->
<span style="white-space:pre">      </span><property name="history" value="full"></property></bean>
</beans>

在progress文件夹下建立我们的流程定义,右键选择new-----other---------Activiti Diagram(之前需要安装eclipse的activiti插件,推荐在线安装---Name: Activiti BPMN 2.0 designer     Location: http://activiti.org/designer/update/)

建立如下的流程定义

在该流程右键选择xml打开方式,可以得到流程的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="My process" isExecutable="true"><startEvent id="startevent1" name="Start"></startEvent><userTask id="usertask1" name="User Task"></userTask><sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow><endEvent id="endevent1" name="End"></endEvent><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="140.0" y="180.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"><omgdc:Bounds height="55.0" width="105.0" x="220.0" y="170.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"><omgdc:Bounds height="35.0" width="35.0" x="370.0" y="180.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"><omgdi:waypoint x="175.0" y="197.0"></omgdi:waypoint><omgdi:waypoint x="220.0" y="197.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"><omgdi:waypoint x="325.0" y="197.0"></omgdi:waypoint><omgdi:waypoint x="370.0" y="197.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>

可以得到流程的id为 myProcess,当然这是默认的,你可以随意修改.

最后就可以编写测试类来测试这个流程了

package activiti_001;import junit.framework.Assert;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;
import org.activiti.engine.task.Task;
import org.junit.Test;public class MyProcessTest {@Testpublic void test() {// 通过默认的资源获得流程引擎的配置信息(默认的--当然就是activiti.cfg.xml 了)ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();// 通过配置信息获得流程引擎ProcessEngine processEngine = configuration.buildProcessEngine();// 流程引擎是activiti的核心,也就是activiti的门户,通过它可以获得各种服务。// 获得部署服务RepositoryService repositoryService = processEngine.getRepositoryService();// 获得运行时服务RuntimeService runtimeService = processEngine.getRuntimeService();// 获得任务服务TaskService taskService = processEngine.getTaskService();// 部署我们定义的流程repositoryService.createDeployment().addClasspathResource("MyProcess.bpmn").deploy();// 启动定义的流程 一定要使用BYKEYProcessInstance instance = runtimeService.startProcessInstanceByKey("myProcess");// 通过任务服务来查询任务Task task = taskService.createTaskQuery().singleResult();// 断言任务的名称System.out.println(task.getName());Assert.assertTrue("User Task".equals(task.getName()));// 完成任务(因为这是一个用户任务,所以需要模拟完成一下)taskService.complete(task.getId());task = taskService.createTaskQuery().singleResult();// 流程结束}}

activiti5第一弹-----基本的activiti示例相关推荐

  1. ubuntu服务器mysql管理 第一弹

    2019独角兽企业重金招聘Python工程师标准>>> 第一弹.在Ubuntu服务器上安装MySQL 注:服务器管理通过SecureCRT来管理操作. 由于Linux的强大,对于大多 ...

  2. 第一弹!安利10个让你爽到爆的IDEA必备插件!

    大家好,此篇文章中我会介绍10个非常不错的IDEA插件以及它们常见功能的使用方法. 这一期内容搞 Gif 动态图花了很久,很多Gif图片上传到微信还提示过大,所以很多地方重新又录制了一遍Gif图. 概 ...

  3. 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)

    2023春节祝福系列第一弹(上) (放飞祈福孔明灯,祝福大家身体健康) (附完整源代码及资源免费下载) 目录 一.前言 二.一片星光闪烁的旋转星空 (1).效果展示: (2).相关源代码 (3).语法 ...

  4. 玩转微信应用号,「小程序」开发实操指南第一弹

    摘要: 怎样将一个「服务号」改造成为「小程序」?全球首个微信应用号开发教程第一弹. 微信应用号(小程序,「应用号」的新称呼)终于来了! 目前还处于内测阶段,微信只邀请了部分企业参与封测.想必大家都关心 ...

  5. 阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”

    作者 | Just 出品 | AI科技大本营(ID:rgznai100) "感知智能与认知智能是相辅相成的关系.认知智能需要感知系统来进行信号处理和概念识别,而感知系统也需要认知系统的反馈来 ...

  6. 阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”(附链接)...

    授权自AI科技大本营(ID:rgznai100) 本文约2900字,建议阅读8分钟 本文是采访了达摩院资深算法专家杨红霞,就感知智能向认知智能的演进和变革进行更深入解读. "感知智能与认知智 ...

  7. 智能车百度赛道培训第一弹-基础篇

    智能车百度赛道培训第一弹--基础篇来啦!请查收! ▌基础篇 01.培训安排 时间安排: 2021年3月19日(周五) 晚8:30 内容简介: 由百度赞助的人工智能创意组,今年竟然开始要求学生做车了?这 ...

  8. 智能车大赛AI视觉组培训第一弹——基础篇

    智能车大赛AI视觉组培训第一弹: ▌基础篇 1.培训简介 ■时间安排: 2021年03月18日 14:00 ■内容简介: 由恩智浦赞助的AI视觉组,今年由于把人工智能应用在智能车竞赛中,使得难度提升了 ...

  9. 获取frame_用Python获取可能是全网最全的杰尼龟表情包(第一弹)

    杰尼龟系列表情包在广大网友之间传递快乐,红极一时.我想是杰尼龟可爱的外表以及憨憨的形态,圆圆的脸蛋大大的眼睛,且其经常在剧中摆出各式夸张表情,因而被广大网友制成各式各样的表情包,并且深受沙雕网友的喜爱 ...

最新文章

  1. SpringBoot 记录操作日志
  2. [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]
  3. vue TypeError: Cannot read property ‘upgrade‘ of undefined
  4. spring aop 会根据实际情况(有无接口)自动选择 两种 动态代理(jdk和cglib)之一...
  5. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)
  6. TokenInsight:BTC网络活跃度保持历史高位,人气居高不下
  7. 微信公众号“成为开发者”实践代码
  8. 从时间中提取年月(MySQL中extract函数用法)
  9. python 绘制降水量色斑图
  10. 上海自考计算机应用基础实践,2001年4月份全国高教自考计算机应用基础试题及答案...
  11. python代码规范---PEP8(python enhancement proposal)
  12. Linux PCI总线驱动-1
  13. 立下flag,一周一篇博客
  14. mysql e 变量_MySQL变量分类及用法简析
  15. Kafka-Zookeeper监控工具简介、安装及使用 03
  16. android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...
  17. 软件项目招投标中的“标的额”是什么意思?
  18. 小游戏赛道如何加速流量增长?
  19. html中如何做出生年月日,出生年月日怎么换成生辰八字
  20. 一文搞清电子认证相关概念:CA、证书、PKI、CSR、SSL、TSL、CRT、CER、PEM、RSA等

热门文章

  1. (STL,map)反片语
  2. 可以装linux的路由器,[转载]linux路由器Quagga的配置(一):安装
  3. java 条件 等待_java – 如何唤醒等待相同条件的所有线程?
  4. 开启php缩略图,PHP生成缩略图
  5. pycharm创建我的第一个项目
  6. MATLAB遇到问题:错误使用eval,未定义与‘struct‘类型的输入参数相对应的函数‘workspacefunc‘
  7. matlab mat文件 太大,MATLAB .mat文件中的开销过大
  8. java面板中添加面板_如何把窗体加入面板中 java
  9. android已停止三星,急,android离线打包程序三星下总报 程序 已停止
  10. java dubbo jsf_cubelink