当前位置: 首页 > backend >正文

Activiti 工作流引擎 详解

1、Activiti工作流概述

1.1、工作流概述

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

1.2、工作流系统

一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流程管理。即使没有工作流业务系统也可以开发运行,只不过有了工作流可以更好的管理业务流程,提高系统的可扩展性。

1.3、Activiti概述

Activiti是一个工作流引擎, activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。

1.4、BPM

BPM即业务流程管理,是一种规范化的构造端到端的业务流程,以持续的提高组织业务效率。

idea插件安装:https://plugins.jetbrains.com/plugin/7429-actibpm/versions

将下载的jar包插件直接整到idea当中,在settings当中的插件当中,导入本地插件,导入插件之后重启idea即可。

2、Activiti工作流环境搭建

首先还是构建一个maven项目,之后导入依赖,这里就包括了activiti所需要的依赖包,以及junti测试包、mysql驱动包、连接池包。在进行使用的时候只需要对数据库驱动包的版本进行调整即可。

<properties><slf4j.version>1.6.6</slf4j.version><log4j.version>1.2.12</log4j.version><activiti.version>7.0.0.Beta1</activiti.version>
</properties>
<dependencies><dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring</artifactId><version>${activiti.version}</version></dependency><!-- bpmn 模型处理 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-model</artifactId><version>${activiti.version}</version></dependency><!-- bpmn 转换 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-converter</artifactId><version>${activiti.version}</version></dependency><!-- bpmn json数据转换 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-json-converter</artifactId><version>${activiti.version}</version></dependency><!-- bpmn 布局 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-layout</artifactId><version>${activiti.version}</version></dependency><!-- activiti 云支持 --><dependency><groupId>org.activiti.cloud</groupId><artifactId>activiti-cloud-services-api</artifactId><version>${activiti.version}</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency><!-- mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!-- 链接池 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency>
</dependencies>

在这里使用log4j日志包,可以对日志进行配置,直接在resources下创建log4j.properties

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=f:actactiviti.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m

添加activiti配置文件,使用activiti提供的默认方式来创建mysql的表。默认方式是在 resources 下创建 activiti.cfg.xml 文件,注意:默认方式目录和文件名不能修改,因为activiti的源码中已经设置,到固定的目录读取固定文件名的文件。默认要在在activiti.cfg.xml中bean的名字叫processEngineConfiguration,名字不可修改,在这里直接连接到本地数据库activiti这个库。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 默认id对应的值 为processEngineConfiguration --><!-- processEngine Activiti的流程引擎 --><bean id="processEngineConfiguration"class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><property name="jdbcDriver" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql:///activiti"/><property name="jdbcUsername" value="root"/><property name="jdbcPassword" value="root"/><!-- activiti数据库表处理策略 --><property name="databaseSchemaUpdate" value="true"/></bean>
</beans>

当然了除了直接配置这个数据库的信息之外,还可以通过数据源的方式来进行配置。

	 <!-- 这里可以使用 链接池 dbcp--><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql:///activiti" /><property name="username" value="root" /><property name="password" value="root" /><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>

创建一个测试类,调用activiti的工具类,生成acitivti需要的数据库表。直接使用activiti提供的工具类ProcessEngines,会默认读取classpath下的activiti.cfg.xml文件,读取其中的数据库配置,创建 ProcessEngine,在创建ProcessEngine 时会自动创建表。代码执行完成之后在数据库当中进行查看对应的表是否都创建出来了。

    @Testpublic void testCreateDbTable() {//使用classpath下的activiti.cfg.xml中的配置创建processEngineProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();System.out.println(processEngine);// 而除了使用默认配置进行创建工作流引擎对象,还可以通过自定义的方式进行创建。// 自定义配置文件名ProcessEngineConfiguration processEngineConfigurationFromResource = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");// 自定义配置文件名 bean对象idProcessEngineConfiguration processEngineConfigurationFromResource1 = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml", "processEngineConfiguration");}

生成的表说明:

表分类

表名

解释

一般数据

[ACT_GE_BYTEARRAY]

通用的流程定义和流程资源

[ACT_GE_PROPERTY]

系统相关属性

流程历史记录

[ACT_HI_ACTINST]

历史的流程实例

[ACT_HI_ATTACHMENT]

历史的流程附件

[ACT_HI_COMMENT]

历史的说明性信息

[ACT_HI_DETAIL]

历史的流程运行中的细节信息

[ACT_HI_IDENTITYLINK]

历史的流程运行过程中用户关系

[ACT_HI_PROCINST]

历史的流程实例

[ACT_HI_TASKINST]

历史的任务实例

[ACT_HI_VARINST]

历史的流程运行中的变量信息

流程定义表

[ACT_RE_DEPLOYMENT]

部署单元信息

[ACT_RE_MODEL]

模型信息

[ACT_RE_PROCDEF]

已部署的流程定义

运行实例表

http://www.xdnf.cn/news/11351.html

相关文章:

  • Linux 内核编译 modules ehci-hcd, ohci-hcd, uhci-hcd not found
  • springboot接口文档
  • E - Shooting Game FZU - 2144
  • 【CBAP50技术手册】#34 Process Analysis(流程分析):业务分析师的“优化镜头”
  • inno setup介绍
  • KMP算法精讲
  • 电脑联网跳msftconnecttest(无论是不是校园网)
  • Genymotion中文手册,Genymotion配置
  • 在ubuntu下安装mysql
  • 如何快速绘制一张业务流程图?8张实操案例帮你快速上手!
  • 自动跳转到www.0749.com网页问题
  • Java IDEA JUnit 单元测试
  • XMLHttpRequest的五种状态描述——常见的请求头和相应头都有什么——reflow(回流)repaint(重绘)引起变换的原因
  • 转:LaTeX 换行换页与段落命令与图书模板
  • InstallShield使用完全教程
  • ADB安装及使用详解(非常详细)从零基础入门到精通,看完这一篇就够了
  • 多个域名可以指向同一个主机ip地址_一文彻底搞懂外贸网站相关的域名设置
  • IMP ORA-20005: object statistics are locked(二)
  • WAP页上传图片
  • 15个Python兼职接单平台!利用业余时间赚钱
  • 捷克论坛新ip_兰峰:提升哈尔滨冰雪文化IP打造能力
  • emule最新服务器地址,emule 国内服务器(最新emule服务器)
  • 提升C# 写入Excel操作的效率方式
  • LoadRunner压力测试方法
  • 高分卫星系列介绍及其传感器参数
  • MySQL基础入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
  • 操作系统——缓冲区(buffer)与缓存(cache)
  • scrum回顾_敏捷,Scrum框架入门一篇文章就够了
  • mingw64环境搭建
  • Node.js 的常用命令介绍