Activiti工作流引擎开发系列-01

作者:Jesai

没有伞的孩子,只能光脚奔跑!

前言:

初次接触工作流这个概念是自从2014年11月份开始,当时是由于我的毕业设计需要,还记得当时我毕业设计的题目是《基于BS结构模式的工程管理系统设计与实现——工程计划管理》,里面涉及到一个工程管理的审批。正好我当时12月份出来实习,实习所在的公司所做的OA系统普遍也需要工作流,但是公司项目所用的工作流是CCFLOW,这是一个基于C#的国产开源工作流引擎,但是我毕业设计做的是java,所以从2014年的11月开始,我就开始学习Activity。一直到今年的三月份,我终于形成一整个工作流的理论框架。其中有许多启发源自于目前所在公司的项目开发经验。算了一下,就整整学了2年两三个月吧。

工作流有多重要?也不是很重要。看你所在的公司用不用而已。这么说吧,目前我公司的工作流框架,核心部分只有一个人懂得。其他人都不会。试想,如果有一天,这个管理工作流的人要跳槽,那么老板会给他加个4K以上的工资挽留,我估计还是有可能发生的。学习工作流,不仅仅要学习别人的开源框架,还得慢慢的上升到工作流的思想,有那么一天,也许能开发出来自己的工作流引擎。

什么是工作流?

什么是工作流?对于没接触过工作流的人或许觉得很陌生。打个比例吧,假如你要请假,那么请假的时候需要向上级申请。有管理系统的公司请假流程一般使用公司的内部管理系统申请,然后逐级上报审批。这一整个审批过程的控制,就需要工作流来控制了。

如果要使用专业的术语来说,工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。

工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

工作流概念起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序活动而提出的一个概念,目的是通过将工作分解成定义良好的任务或角色,按照一定的规则和过程来执行这些任务并对其进行监控,达到提高工作效率、更好的控制过程、增强对客户的服务、有效管理业务流程等目的。尽管工作流已经取得了相当的成就,但对工作流的定义还没有能够统一和明确。

Georgakopoulos给出的工作流定义是:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成。

1993年工作流管理联盟(Workflow Management Coalition,WfMC)作为工作流管理的标准化组织而成立,标志着工作流技术逐步走向成熟。WfMC对工作流给出定义为:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。

工作流的主要功能

工作流管理系统(WorkflowManagementSystem,WFMS)是定义、创建、执行工作流的系统。在最高层上,WFMS应能提供以下三个方面的功能支持:

建造功能:对工作流过程及其组成活动定义和建模;

运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度;

运行交互功能:指在工作流运行中,WFMS与用户(业务工作的参与者或控制者)及外部应用程序工具交互的功能。

工作流管理系统带来的好处

由于信息技术的发展和日趋激烈的商业竞争,人们不再满足于独立、零散的办公自动化和计算机应用,而是需要综合的、集成化的解决方案。作为一种对常规性事务进行管理、集成的技术,WFMS的出现是必然的。它可以带来以下收益:

1.改进和优化业务流程,提高业务工作效率;

2.实现更好的业务过程控制,提高顾客服务质量;

3.提高业务流程的柔性等。

工作流的应用领域

在后面,我将会把握整合Activiti开发的一个过程写一些列的文章。当然时间紧急,写出来的技术文可能比较粗糙,但是主要的是干货,后续我将会慢慢的完善整个系列的修饰。希望对此可以给广大开发者一个宝贵的开发经验。如果条件允许,我将会购买云主机和域名把项目上线给大家参考。

我目前整合的基本框架已经完成,后续还有很多的优化和完善工作要做,但是目前已经能够运行起来。

主要模块:

流程模型

整合Activity流程设计器

部署流程

查看部署流程图

部署操作

待办任务

待办操作

待办流程进度

已办任务

数据库:

待做:挂起,解挂,流程转发,流程查询,流程表单自动化、流程指派、流程追回······

关于源码问题:因为我基于我公司的权限系统项目上面开发的,不方便开源。但是以后如果时间充足我会考虑开源的。为了方便大家学习交流,我建立一个Activiti开发群,希望可以共同进步。文章可能有很多不严谨的地方。欢迎批评斧正。

 

QQ群:634320089

 

Activiti工作流引擎开发系列的更多相关文章

  1. Activiti工作流引擎参考资料

    Activiti工作流引擎使用 工作流-Activiti核心API介绍 传智播客Activiti工作流视频教程(企业开发实例讲解) 工作流引擎Activiti演示项目 http://www.kafei ...

  2. Activiti工作流引擎简介

    Activiti工作流引擎简介 一.概述 Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活 ...

  3. Activiti工作流引擎数据库表结构

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

  4. activiti工作流引擎

    参考文章 Activiti-5.18.0与springMvc项目集成和activiti-explorer单独部署Web项目并与业务数据库关联方法(AutoEE_V2实现方式) https://blog ...

  5. Activiti工作流引擎使用

    http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html 1.简单介工作流引擎与Activiti 对于工作流引擎的 ...

  6. Activiti工作流引擎核心介绍

    引言 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速.超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更 ...

  7. Activiti工作流引擎使用详解(一)

    一.IDEA安装activiti插件 在插件库中查找actiBPM,安装该插件,如果找不到该插件,请到插件库中下载该包手动安装,插件地址 http://plugins.jetbrains.com/pl ...

  8. 基于Activiti工作流引擎实现的请假审核流程

    概要 本文档介绍的是某商用中集成的Activiti工作流的部署及使用,该框架用的Activiti版本为5.19.0.本文档中主要以一个请假流程为例子进行说明,该例子的流程图如下: 这是一个可以正常运作 ...

  9. SpringBoot开发案例之整合Activiti工作流引擎

    前言 JBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,JBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官 ...

随机推荐

  1. 如何通过命令行 msbuild 编译项目

    本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败 在开始菜单可以找到 VisualStudio 的 ...

  2. H3C 聚合链路负载分担原理

  3. vue-learning:38 - router - 前端路由的发展

    前端路由的发展 参考博客 前端路由是什么东西? 什么是路由 在jQuery时代,我们使用<a href="https://www.example.com/example/home.ht ...

  4. 初识Maven POM

    POM Project Object Model项目对象模型定义了项目的基本信息,用于描述项目如何构建,申明项目依赖,等等. pom元素: <modelVersion>4.0.0</ ...

  5. <sUbjeCt>Reverse aAlignment SemInaR

    翻译过来就是有关逆序对问题的专题. 因为大胆报名担任学校专题讲师所以跪着也要准备好课件...那什么是逆序对? 逆序对就是序列中ai>aj且i<j的有序对 举个栗子: 其中,5>4,但 ...

  6. Trendalyzer is an information visualization software

    Trendalyzer is an information visualization software for animation of statistics that was initially ...

  7. python3 实现删除数组中相同的元素

    # #把数组中相同的元素去除 # #第一种方式: def del_repeatnum(s=[1,1,1,2,2,3,3,4]): s1=[] for i in s: print(i) if i not ...

  8. .NET进阶篇07-.NET和COM

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.COM和.NET元数据内存管理接口注册线程编组二..NET客户端调用COM组件三.COM客户端调用.NET组件四.嵌入互操作类型五 ...

  9. docker 安装 redis5.0.3

    一.拉取官方5.0.3镜像 [root@localhost ~]# docker pull redis:5.0.3 下载完成 [root@localhost ~]# docker pull redis ...

  10. eclipse中竖行选择代码的快捷键

    Alt+Shift+A   (竖行选择代码)