工作流介绍
工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,
从而实现某个预期的业务目标,或者促使此目标的实现”。
 
         Activiti
Alfresco软件在2010年5月17日宣布Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理BPM的专家 Tom Baeyens担任,Tom Baeyens就是原来jbpm的架构师,
而jbpm是一个非常有名的工作流引擎,当然activiti也是一个工作流引擎。
Activiti是一个工作流引擎, activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,
实现了业务系统的业务流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。
 
  BPM
BPM(Business Process Management),即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的系统化方法
 
  BPMN
BPMN(Business Process Model And Notation)- 业务流程模型和符号 是由BPMI(Business Process Management Initiative)开发的一套标准的业务流程建模符号,
使用BPMN提供的符号可以创建业务流程。 2004年5月发布了BPMN1.0规范.BPMI于2005年9月并入OMG(The Object Management Group对象管理组织)组织。OMG于2011年1月发布BPMN2.0的最终版本.
activiti就是采用bpmn2.0进行建模
 
 
关于流程的两个常用到的关键词  流程定义 ,流程实例
他们的关系就像java类和java对象一样

1流程实例(ProcessInstance):a和b都发起了一个病假,那么就产生了两个病假的流程实例

2流程定义(ProcessDefinition):a和b请的病假就是一个流程定义

  activiti服务架构图
 
上面的架构说白了就是通过activiti.cfg.xml获取引擎配置对象ProcessEngineConfiguration
通过这个配置对象获取引擎对象ProcessEngine,
最后可以通过引擎获取各个service来进行流程的处理
下面简介各个service的作用
 
RepositoryService activiti的资源管理类 ,用于流程部署,获取流程部署的资源。。
RuntimeService activiti的流程运行管理类,用于启动一个流程实例,操作当前运行的流程信息
TaskService activiti的任务管理类,操作个人任务,组任务
HistoryService activiti的历史管理类,用于操作历史 流程信息
IdentityService activiti的用户身份管理类,设置用户、组(角色)、用户和组关系 。。
FormService activiti的表单管理类,实现activiti中配置表单数据。
ManagerService activiti的引擎管理类,用于activiti运行的监控,给超级管理员使用。
下面是activi的安装
Activiti下载地址:http://activiti.org/download.html(我用的5.14版本)
下载好了后目录结构
 
 
database里面就有我们需要的数据库,activiti支持多种数据库
h2, mysql, oracle, postgres, mssql, db2
我这里采用mysql做演示
 
创建数据库的方式
需要加入spring的jar包和mybatis的jar,最好是ssm都有的环境下进行测试
  1. 方式1
到目录下database-create找到mysql的三个sql导入到自己创建的数据库中
  1. 方式2

采用程序创建的方式

在classpath目录下建立activiti.cfg.xml(为什么在这个位置建立名称为这个的后面说)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd ">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/activiti" />
<property name="username" value="ferwms" />
<property name="password" value="ferwms" />
<property name="maxActive" value="3" />
<property name="maxIdle" value="1" />
</bean>
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- activiti数据库表处理策略 -->
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>
其实就是一个spring的配置
大家会发现在上面的processEngineConfiguration里面有一个参数databaseSchemaUpdate是数据库处理的策略,几种策略如下
false(默认):检查数据库表的版本和依赖库的版本, 如果版本不匹配就抛出异常。
true: 构建流程引擎时,执行检查,如果需要就执行更新。 如果表不存在,就创建。(常用)
create-drop: 构建流程引擎时创建数据库表, 关闭流程引擎时删除这些表。
drop-create:先删除表再创建表。(常用,使用完成后改为true)
create: 构建流程引擎时创建数据库表, 关闭流程引擎时不删除这些表。
 
我们选择的是true,所以在创建流程引擎的时候会检查不存在就创建
下面的程序得到流程引擎对象
/从classpath目录下查找resource名称的xml(如果不指定就默认activiti.cfg.xml)
//从里面找出bean的id为processEngineConfiguration的流程引擎配置类,
//当然也有其他的构造类可以指定bean的id
String resource = "activiti.cfg.xml";
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.
createProcessEngineConfigurationFromResource(resource); //根据流程配置对象获取引擎,发现策略是true,
//也就是没有数据库就创建数据库,所以会自动创建activiti的数据库
ProcessEngine processEngine = configuration.buildProcessEngine();
/*
* 获取流程引擎对象吗,下面的方法会默认查找classpath目录下的名称为activi.cfg.xml
* 里面bean的id为processEngineConfiguration的ProcessEngineConfiguration引擎配置对象来获取ProcessEngine对象
*/
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

上边两端代码获取流程引擎对象的作用是一样的,但是下方的获取方式需要注意xml的位置和命名规范

创建完的数据库
 
那么不同的名称的作用是什么
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: GE表示general。通用数据, 用于不同场景下。
 

eclipse下activiti-designer插件的安装(绘制流程图生成bpmn文件)
注意,插件需要另外单独下载(百度一下就有),不是上面官方的哪个带jar的压缩包!!!
首先需要知道这个插件的作用
安装了这个插件就可以在eclipse中根据bpmn2.0的规则绘制流程图,流程图文件是已bpmn结尾的,说白了画完图后用记事本打开就是xml,不过格式是bpmn的而已
安装步骤:
我这里使用eclipse-indigo版本,其他出问题
1打开eclipse创建myplugins文件夹
2将上面的activiti文件解压放进去
3打开eclipse下的dropins创建文件activiti.txt
4设置里面内容为path=d:\\eclipse\\activiti  地址是你eclipse自己的地址
5重启eclipse,右击新建-other可以找到activiti
 
 
windows-preference点上这个,可以在生成bpmn文件的同时生成一张流程的png文件,因为activiti代码生成的会乱码,需要修改源码,很麻烦
 
打开windows-showView-other   打开properties视图,可以更方便修改bpmn流程图

最后附上activiti用到的所有的jar包和activiti的eclipse插件

http://pan.baidu.com/s/1skT7N7f

1activiti认识和数据库和插件配置的更多相关文章

  1. (1)activiti认识以及数据库和插件配置

    工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程, 从而实现某个预期的业务目标, ...

  2. 1、MyEclipse插件配置以及通过MyEclipse生成表对应的JPA代码

     去除MyEclipse插件的方式是打开:WindowàCustomize Perspective窗口进行插件配置: 取出下图中不常用的插件勾,最终点击OK. 3.点击OK之后显示的效果图如下: ...

  3. Ocelot简易教程(七)之配置文件数据库存储插件源码解析

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9852711.html 上篇文章给大家分享了如何集成我写的一个Ocelot扩展插件把Ocelot的配置存储 ...

  4. JQuery Ztree 树插件配置与应用小结

    JQuery Ztree 树插件配置与应用小结 by:授客 QQ:1033553122 测试环境 Win7 jquery-3.2.1.min.js 下载地址: https://gitee.com/is ...

  5. MyCat - 数据库中间插件

    什么是MyCat 是目前最流行的分布式数据库中间插件 为什么使用MyCat 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经 ...

  6. Vue插件配置和 后台交互

    Vue插件配置和 后台交互 一.全局配置静态文件(csss, js..) 1.1 全局配置css文件 创建css文件 在main.js配置css文件 // 配置全局css样式 // 方式一 impor ...

  7. Mybatis-Plus插件配置

    yml配置 1 # Mybatis-Plus 2 mybatis-plus: 3 # 配置mapper的扫描,找到所有的mapper.xml映射文件 4 mapper-locations: com.x ...

  8. maven junit 单元测试插件配置

    单元测试插件配置 pom.xml中增加 <dependency> <groupId>junit</groupId> <artifactId>junit& ...

  9. oracle数据库的TNS配置

    TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...

随机推荐

  1. 关于Discuz与jQuery冲突问题的亲测解决方法

    最近的一个项目整合dede和discuz程序,客户要求风格统一,所以有很多样式及特效都是要公用的.其中jQuery库定义的函数$()正好与discuz的comme.js中函数一样,这样就冲突了,导致d ...

  2. ID3决策树预测的java实现

    刚才写了ID3决策树的建立,这个是通过决策树来进行预测.这里主要用到的就是XML的遍历解析,比较简单. 关于xml的解析,参考了: http://blog.csdn.net/soszou/articl ...

  3. Linux监控体系

    监控体系 zabbix 博客:www.abcdocker.com 微信公众号:abcdocker 笔者QQ:381493251 Abcdocker交流群:454666672 如果遇到什么问题可以进群询 ...

  4. 无法访问 ASP 兼容性模式

    <%@ Page Title="" Language="C#" MasterPageFile="../theme/classic/content ...

  5. NRF24L01无线通讯模块驱动

    NRF24L01 无线模块,采用的芯片是 NRF24L01,该芯片的主要特点如下: )2.4G 全球开放的 ISM 频段,免许可证使用. )最高工作速率 2Mbps,高校的 GFSK 调制,抗干扰能力 ...

  6. iOS正则表达式 分类: ios技术 2015-07-14 14:00 35人阅读 评论(0) 收藏

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  7. linux学习小记:如何查看linux服务器的cpu数量,内核数,和cpu线程数

    查看物理cpu个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 查看每个cpu核心数量 grep 'core id' /proc/cpuinf ...

  8. linux下实现ftp匿名用户的上传和下载文件功能

    1.配置/etc//vsftpd/vsftpd.conf 文件如下: 打开文件,改变如下选项,如果文件中没有该选项,需要自己手动编写该选项 write_enable=YES anonymous_ena ...

  9. Struts加入拦截器后取不到页面参数

    在Struts2的demo项目中添加了一个简单的拦截器,突然发现,Action中取不到页面的参数了 这也是很蛋疼的事情,还好这个比较简单,稍微一查就发现问题: Struts2中很多的功能是用拦截器实现 ...

  10. 安卓 异步线程更新Ui

    异步跟新UI: 1.handler+Thread(runnable):如果handler和Thread都写在了一个Java文件中,就不说了,如果runnable定义在了一个单独的类文件中,可以通过在构 ...