之前没有用到过工作流,这次由于需要,用到了Activiti工作流引擎,首先要做的就是先来了解一下什么是工作流引擎,它能够完成什么的任务,我们在什么情况下选用工作流引擎来处理问题。

1、Activiti由来?

Activiti的创始人也就是JBPM的创始人,从JBoss离职后开发了一个新的BPM引擎-----Activiti。由于是JBPM的创始人发明的Activiti,故其中有很多JBPM的身影,Activiti的遵守的设计原则是一致的:强调流程服务的可嵌入性和可扩展性。

2、什么是Activiti?

Activiti的核心是BPMN2.0的流程引擎,它实现了BPMN2.0的规范,可以发布设计好的流程定义,并通过API进行流程调度。它是基于Java的超快速、超稳定的流程引擎,强调服务的可嵌入性和可扩展性,同时更加强调面向业务。

BPMN是全球BPM厂商广泛接受的BPM标准,全称为Business Process Model and Natation。

3、核心组件

3.1 ProcessEngine:流程引擎抽象,通过它可以获取我们需要的一切服务

3.2 RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署

文件和支持数据,这些文件都存储在Activiti内建的Repository中。RepositoryService提供对

repository的存取服务。

3.3 RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象

实例。RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供

了对流程部署,流程定义和流程实例的存取服务

3.4 TaskService:在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,

状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了

运行时任务查询、领取、完成、删除以及变量设置等功能

3.5 IdentityService: Activiti内置的了用户以及组管理的功能,必须使用这些用户和组的信息才能或得到

相应的Task。

3.6 ManagementService: 提供了对Activiti流程引擎管理和维护的工鞥,主要用于Activiti系统的日常维护

3.7 HistoryService:用于获取正在娙或已经完成的流程的信息,与RuntimeService中获取的流程信息不同,

历史信息包含已经持久化存储的永久信息。

3.8 FormService:Activiti中的流程和状态Task均可以关联业务相关的数据。通过使用Form Service可以存取

启动和完成任务所需的表单数据并且根须需要来渲染表单。

4、怎么用?

使用场景:多人协作完成的业务流程场景。

比如:请假

开始--请假-->审批(项目经理)--->审批(总经理)--->结束

5、总结

对于Activiti还是刚开始研究,还需要接下来继续做例子来实现,究竟跟其他的流程引擎有什么差别,或者说这是怎样的一个演变过程,只有比较过之后才能做出自己选择。

认识Activiti的更多相关文章

  1. 流程开发Activiti 与SpringMVC整合实例

    流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...

  2. activiti工作流的web流程设计器整合视频教程 SSM和独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  3. activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  4. 文档分享-Activiti 5.16 用户手册

    今天在翻看工作流相关的网页的时候,在开源中国上http://www.oschina.net/question/915507_149175发现activiti的中文文档:http://www.mossl ...

  5. 1. Activiti 运行时表信息总结

    Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...

  6. Activiti学习(二)数据表结构

    Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. l        ...

  7. Activiti学习(一) 环境搭建

    原料:Activiti5.4  MyEclipse 10 1.先将activiti文件夹放置myeclipse的安装目录dropins文件夹下2.将activiti文件夹里activiti.link中 ...

  8. Activiti工作流学习(三)Activiti工作流与spring集成

    一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...

  9. activiti当前任务高亮(解决乱码问题)

    package com.xinwei; import java.io.File; import java.io.InputStream; import java.util.ArrayList; imp ...

  10. activiti 中文文档

    http://www.mossle.com http://www.mossle.com/docs/activiti/index.html

随机推荐

  1. 《Linux就该这么学》培训笔记_ch08_iptables与firewall防火墙

    <Linux就该这么学>培训笔记_ch08_iptables与firewall防火墙 文章最后会post上书本的笔记照片. 文章主要内容: 防火墙管理工具 iptables firewal ...

  2. maven 打包添加依赖

    1.将依赖与自己的代码打入同一个jar包 只需在pom中添加如下plugin 在include 中添加需要的依赖,在exclude 中添加不需要的依赖 <groupId>org.apach ...

  3. Maven ------ 了解与安装

    1.什么是Maven Maven :项目对象模型(POM),可以通过一段描述信息来管理项目的构建,报告和文档的项目管理工具软件, maven 来自犹太语意为知识的积累,为了在项目中简化构建过程,最直观 ...

  4. 045 用户登录功能01----JWT和后台代码

    (1)有状态登录概述 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session. 例如登录:用户登录后,我们把登录者 ...

  5. @Valid参数验证 BindingResult result 的使用

    1.首先导入依赖包bean-validator.jar2.在实体类上面写一些相关的验证信息:可以搜索更多的一些验证方式,这只是一部分 可以参考:点击打开链接http://blog.csdn.net/c ...

  6. C++删除排序数组中的重复项

    class Solution { public: int removeDuplicates(vector<int>& nums) { if (nums.empty()) { ; } ...

  7. mysql获取某个字段平均值方法AVG函数的使用

    直接上脚本 ,)) AS 平均分 FROM students WHERE sex= '男' 其中,特别说明一下CAST关键字 CAST(字段名 as 要转换的类型) #其中,可以转换的类型为: CHA ...

  8. python实现Huffman编码

    一.问题 利用二叉树的结构对Huffman树进行编码,实现最短编码 二.解决 # 构建节点类 class TreeNode: def __init__(self, data): "" ...

  9. Git系列 —— 记一次Mac上git push时总是403的错误

    问题: 今天从github上clone下一个项目,然后修改后git push时总是出现: remote:Permission to lixyou/rw-split-plugin.git defined ...

  10. 图像上划矩形(cv.line()函数)

    在图像上划矩形 import numpy as npimport cv2 as cvimg=np.zeros((400,400),np.uint8)cv.line(img,(100,100),(350 ...